File System


In Linux la struttura delle cartelle è un albero con al vertice la cartella root (rappresentata con il carattere della barra "/") e a scendere le cartelle ramificate in rami più piccoli.

La struttura delle cartelle è documentata e definita nel Linux Filesystem Hierarchy Standard (FHS) uno standard utilizzato da tutte le distribuzioni Linux.

La funzione principale di un file system è organizzare i file su uno spazio di memoria, così da permettere di reperire i file contenuti su:

- memorie di massa progettato per memorizzare dei file su un'unità a disco o a stato solido, tra quelli più conosciuti: Ext4, FAT32, NTFS;

- computer remoti tramite rete come Samba e NFS.



Le cartelle all'interno della cartella root ed il loro contenuto:

bin File binari principali per tutti gli utenti
boot File del boot loader
dev File dei dispositivi fisici
etc File di configurazione di sistema
home File degli utenti di sistema
lib Librerie
media Cartella di montaggio dei media rimovibili
mnt Cartella di montaggio temporanea
opt File di applicazioni aggiuntivi
proc Stato del kernel e dei processi attivi
root Cartella home dell'utente root
run Directory con dati volatili di run-time
sbin File binari per l'utente root
srv I dati per i servizi
sys File di sistema
tmp File temporanei
usr Contiene tutti i file binari dell'utente
var File variabili come log dei processi

Con il comando cd ci si sposta tra le cartelle. Per accedere alla cartella root rappresentata dalla barra "/":

$ cd /

Da linea di comando fare la lista delle cartelle e dei file con il comando ls.

$ ls -l

Gestione file

$ touch file_1 Crea il file_1
$ echo "ciao ciao" >> file_1 Scrive all'interno del file
$ cat file_1 Visualizza il contenuto del file
$ cp file_1 /tmp/file_1 Copia del file
$ rm file_1 Rimozione del file
$ mv file_1 /home/utente2 Muove il file_1 in un'altra posizione
$ mv file_1 file_1_rinominato Rinomina il file

Gestione directory

$ pwd Per conoscere la directory corrente
$ mkdir directory_1 Crea la cartella directory_1
$ cp -R directory_1 directory_2 Copia ricorsiva della directory_1 in directory_2
$ rmdir directory_1 Rimuove la cartella vuota
$ rmdir -R directory_1 Rimuove la cartella principale e le sottodirectory
$ mv directory_1 /home/utente2 Muove la cartella in un'altra posizione
$ mv directory_1 directory_2 Rinomina la cartella

Visualizzare lo spazio disponibile

$ df -h Visualizza lo spazio disponibile nel disco
$ du /home Visualizza lo spazio disponibile nella directory

Parted

Parted è una applicazione da poter eseguire in modalità manuale oppure in modalità interattiva come utente root.

Parted funziona sia con MBR che con GPT.

# parted -l Visualizza le informazioni del partizionamento dell'intero disco
# parted /dev/sdx print Visualizza le informazioni del partizionamento di una singola partizione
# parted Modalità interattiva

Swap

Uno dei fattori da considerare in fase di progettazione dello schema di partizionamento del Personal Computer è la dimensione della partizione di swap.

Lo swap è uno spazio su disco a cui viene fatto ricorso quando la RAM tende a riempirsi, questo per evitare errori di out of memory, perdite di dati. La RAM scarica alcuni dati su disco, a scapito delle prestazioni per evitare di esaurire completamente la memoria e per permettere l'esecuzione di altri programmi.

Lo swap può risiedere in una partizione oppure in un file.

Per visualizzare la partizione o il file di swap:

$ swapon -s Visualizza tutte le partizioni/file di swap in uso sul sistema
$ cat /proc/swaps Visualizza tutte le partizioni/file di swap in uso sul sistema
$ free -m Visualizza le informazioni sulla dimensione della RAM e lo swap
$ nano /etc/fstabAll'interno del file /etc/fstab è contenuto il riferimento della partizione di swap:
UUID=xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxx none swap sw 0 0

Mount

Per accedere al file system è necessaria una cartella che vi punti: questa operazione è chiamata montaggio.

La cartella /dev contiene i file delle periferiche. Un esempio:

sda: primo disco

sda1: la prima partizione del primo disco

sda2: la seconda partizione del primo disco

sdb: secondo disco

sdb2: la seconda partizione del secondo disco

Ad esempio, con il comando mount è possibile eseguire il montaggio della prima partizione del secondo disco all'interno della cartella /mnt:

# mount -t ext4 /dev/sdb1 /mnt

Quindi, spostarsi all'interno della cartella /mnt e fare una lista di file e cartelle:

# cd /mnt
# ls -l

Per lo smontaggio della cartela /mnt:

# umount /mnt

File /etc/fstab

Le informazioni di montaggio delle periferiche e delle partizioni sono contenute nel file /etc/fstab:

# cat /etc/fstab
#file system mount point type options dump pass
UUID=xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx / ext4 errors=remount-ro 0 1
UUID=xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx /home ext4 defaults 0 2
UUID=xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx none swap defaults 0 0
/dev/sr0 /media/cdrom0 udf,iso9660 user,noauto 0 0

file system

Per identificare una partizione sul disco, anzichè utilizzare come dicitura classica, ad esempio /dev/sda1, è possibile utilizzare il codice UUID unico (universally unique identifier) generato quando la partizione viene creata o formattata. Per visualizzare l'UUID:

$ lsblk -no UUID /dev/sda1
$ blkid /dev/sda1
$ ls -l /dev/disk/by-uuid

mount point

Mount della cartella dove è montata la partizione

type

File system della partizione

options

auto - monta il file system automaticamente all'avvio

noauto - monta il file system manualmente all'avvio

exec - abilita l'esecuzione dei file eseguibili nella partizione

noexec - impedisce l'esecuzione dei file eseguibili nella partizione

ro - il mount del file system è in sola lettura

rw - il mount del file system è in lettura e scrittura

suid - consente l'uso di operazioni di suid e sgid

nosuid - impedisce le operazioni di suid e sgid

user - tutti gli utenti possono montare il file system (include noexec, nosuid, nodev)

users - gli utenti del gruppo users possono montare il filesystem

noatime - non aggiorna l'inode con i tempi di accesso al file system

defaults - impostazioni di default per ext4 sono rw,suid,dev,exec,auto,nouser,async

dump

E' utilizzato dal programma dump per eseguire backup nel caso è installato. Impostare il valore a 0 se il programma non è installato o non si vuole eseguire il backup, impostare il valore ad 1 per eseguire il backup del file system.

pass

I possibili valori sono 0, 1 e 2. Il comando fsck, utilizzato per controllare e riparare i file system, determina l'ordine in cui i file system saranno controllati: la partizione di root deve avere valore 1 per avere la massima priorità, gli altri file system devono avere valore 2. Nel caso il valore sia impostato a 0 fsck non farà alcun controllo.