Avanti Indietro Indice

7. Il Filesystem

In questa sezione, utilizzerò la parola ``filesystem'' in due differenti accezioni. Una riferendomi ai filesystem delle partizioni del disco o di altre periferiche, l'altra riferita al filesystem che vi viene presentato da un sistema Linux in esecuzione. In Linux, infatti, voi ``montate'' il filesystem di un disco all'interno del filesystem di sistema.

Nella sezione precedente ho detto che gli script di avvio verificano e montano i filesystem. I comandi a cui vengono affidati questi compiti sono rispettivamente fsck e mount.

L'hard disk può essere visto come un grande spazio su cui potete scrivere tanti 1 e 0. Un filesystem impone su di esso una struttura, e fa in modo che i file vengano visualizzati all'interno di directory dentro altre directory... Ogni file viene rappresentato da un inode, che definisce il file a cui fa riferimento, quando è stato creato e dove si trova il suo contenuto. Anche le directory vengono rappresentate dagli inode, ma questi dicono piuttosto dove trovare gli inode dei file in esse contenuti. Se il sistema vuole leggere il file /home/greg/bigboobs.jpeg, prima trova l'inode della directory radice / nel ``superblocco'', poi troverà l'inode per la directory home tra quelli contenuti in /, quindi l'inode per la directory greg tra quelli contenuti in /home, e infine l'inode per bigboobs.jpeg, che indica quali blocchi del disco devono essere letti.

Se aggiungiamo dei dati alla fine di un file, potrebbe accadere che questi dati vengano scritti prima che l'inode sia aggiornato in modo da sapere che i nuovi blocchi appartengono al file, o viceversa. Se venisse a mancare la corrente in questo momento, il filesystem risulterebbe corrotto. Ed è proprio questo genere di cose che fsck tenta di verificare e riparare.

Il comando mount prende il filesystem di un dispositivo, e lo innesta nella gerarchia che vedete quando usate il vostro sistema. Generalmente, il kernel monta la radice del proprio filesystem in modalità di sola lettura. Il comando mount viene utilizzato per rimontarlo in modalità di lettura e scrittura dopo che fsck abbia verificato che tutto sia in ordine.

Linux supporta anche altri tipi di filesystem: msdos, vfat, minix, e così via. Le caratteristiche di ogni filesystem vengono descritte in modo astratto attraverso il file system virtuale (VFS). Ma su questo argomento non entrerò nei dettagli. Potete trovarne una trattazione su ``The Linux Kernel'' (vedete la sessione The Linux Kernel per la URL).

Un tipo di filesystem completamente differente viene montato su /proc. Questo contiene una rappresentazione di quello che accade nel kernel. Qui esiste una directory per ogni processo che si trova in esecuzione sul sistema, con il numero del processo come nome per la directory. Sono presenti anche dei file come interrupts o meminfo, che vi informano sul modo in cui viene utilizzato l'hardware. Potete imparare molto esplorando /proc.

7.1 Configurazione

Sono presenti dei parametri per il comandomke2fs, che crea un filesystem ext2. Questi controllano la dimensione dei blocchi, il numero di inode, e così via. Controllate la pagina di manuale di mke2fs per maggiori dettagli.

Ciò che viene montato, e dove, sul vostro filesystem, viene controllato dal file /etc/fstab. Anche per questo esiste una pagina di manuale.

7.2 Esercizi

Create un piccolissimo filesystem, e guardatelo attraverso un editor esadecimale. Identificate gli inode, i superblocchi e i file in esso contenuti.

Sono sicuro che esistono degli strumenti che vi possano fornire una rappresentazione grafica del filesystem. Trovatene uno, provatelo e mandatemi una email con una bella recensione!

Leggete il codice del filesystem ext2 nel Kernel.

7.3 Maggiori Informazioni


Avanti Indietro Indice