4.9 mount e umount

Per poter utilizzare un filesystem in un sistema Unix-like, è necessario che questo venga agganciato al directory tree, ovvero venga visto come una directory all’interno dell’albero delle directory, per mezzo del comando mount (man page mount(8)). Si parla pertanto di “montaggio” (mounting) del filesystem. Questa operazione informa il sistema operativo della presenza del filesystem considerato, associandolo ad una directory all’interno della struttura logica (albero delle directory), che rappresenta il mount-point (punto di montaggio) del filesystem.

____________________________________________________________________

Comando: mount
Path: /bin/mount

SINTASSI  
$ mount [option] [device] [dir]  
DESCRIZIONE

Esistono inoltre delle opzioni di mounting specifiche per ogni tipo di filesystem, per le quali si rimanda alla man page mount(8).

Se non viene specificato nessun argomento, mount visualizza il contenuto del file /etc/mtab. ________________________________________________________________________

Ad esempio, la root directory viene montata, all’avvio del sistema, nel mount-point ‘/’ che rappresenta appunto la radice dell’albero delle directory.

L’albero delle directory di un sistema Unix-like può dunque essere composto da più filesystem, ognuno dei quali è montato in uno specifico mount-point. Ad esempio è possibile montare il filesystem (sempre che questo sia un filesystem di quelli supportati da GNU/Linux) contenuto nella partizione /dev/hdb3 (terza partizione del secondo hard disk ATA) nel mount-point /mnt/myfs, ovvero una directory che deve esistere nel filesystem sul quale si vuole “innestare” /dev/hdb3; in questo modo sarà possibile accedere alla struttura di tale filesystem attraverso la directory /mnt/myfs. Questo modo di montare i filesystem fa sì che se un filesystem secondario (non quello montato come root directory), come ad esempio /dev/hdb3, per qualche motivo viene danneggiato, il filesystem principale non ne risente e semplicemente non si potrà accedere al filesystem danneggiato attraverso il suo mount-point (/mnt/myfs), ma il sistema continuerà a funzionare.

L’exit status33 di mount ha un significato legato ad ogni singolo bit del valore stesso, secondo quanto riportato nella tab. 4.14 (i bit sono numerati in maniera crescente dal LSB al MSB). Un bit impostato ad 1 implica il fatto che si è verificato l’evento ad esso correlato.


Bit|-Significato--------------------------------------|
0-|-chiamata-al comando errata o permessi utente non validi
1 | errore di sistema                                 |
2 | errore interno di mount                           |
3 | interrotto dall’utente                              |
45 | pfarollbimleemnit doi d aecllc’oespseora azlio finlee / deit mco/mutnatbing              |
6---alcune-operazioni di mounting-sono state effettuate-con successo

Tabella 4.14: Significato dell’exit status di mount.

Ad esempio, il comando

 
# mount -t ext2 /dev/hda2 /root  
monta il filesystem di tipo ext2 contenuto nella seconda partizione del primo dispositivo ATA (hard disk) nella directory /root, ovvero la directory /root è il mount-point della seconda partizione del primo hard disk ATA. Per l’utente la cosa è trasparente: l’accesso alla directory /root è analogo all’accesso ad una qualunque altra directory, ma il suo contenuto è quello della seconda partizione del primo hard disk ATA.
Il comando  
# mount -t auto /dev/fd0 /mnt/floppy  
monta il filesystem (riconoscendone il tipo in maniera automatica) contenuto nel primo floppy disk (il floppy disk non è suddiviso in partizioni) nella directory /mnt/floppy. L’accesso al contenuto del floppy disk avviene quindi per mezzo dell’accesso alla directory /mnt/floppy. Le operazioni compiute su tale directory vengono effettivamente compiute sul floppy disk.
Il comando  
# mount -t iso9660 -o ro /dev/hdc /mnt/cdrom  
monta, consentendo soltanto l’accesso in lettura, il filesystem contenuto nel terzo dispositivo ATA (in questo caso si suppone si tratti di un CD-ROM) nella directory /mnt/cdrom. L’accesso al contenuto del CD-ROM avviene quindi per mezzo dell’accesso alla directory /mnt/cdrom. Un filesystem può essere anche “smontato” con il comando umount (man page umount(8)).

____________________________________________________________________

Comando: umount
Path: /bin/umount

SINTASSI  
$ umount [option] [device]  
DESCRIZIONE

Se non viene specificato nessun argomento, umount visualizza il contenuto del file /etc/mtab. ________________________________________________________________________

I comandi mount e umount mantengono l’elenco dei filesystem correntemente montati nel file /etc/mtab (anche il file /proc/mounts ha un contenuto simile) che ha la stessa sintassi del file /etc/fstab.

Un esempio del contenuto del file /etc/mtab è riportato di seguito.

/dev/hda3 / ext3 rw 0 0
none /proc proc rw 0 0
usbdevfs /proc/bus/usb usbdevfs rw 0 0
/dev/hda2 /boot ext3 rw 0 0
none /dev/pts devpts rw,gid=5,mode=620 0 0
none /dev/shm tmpfs rw 0 0
/dev/hda1 /mnt/windows vfat rw 0 0
Nella fig. 4.11 è riportato un esempio di un directory tree (ogni nodo rappresenta una directory) in cui sono evidenziati, ognuno con un proprio colore, i diversi tipi di filesystem da cui esso è composto. Come già spiegato precedentemente, l’albero delle directory di un sistema Unix-like è sempre costituito da una sola root directory, la ‘/’. Altri filesystem possono essere inseriti in tale albero, mediante il comando mount, per mezzo del quale la root directory di un filesystem viene inserita (montata) in un mount-point (una directory) dell’albero. La stessa directory / viene “montata” dal kernel ed è quindi il mount-point del filesystem principale del sistema. Nella figura, le directory che rappresentano dei mount-point sono evidenziate con un cerchio più marcato rispetto alle altre.


pict
Figura 4.11: Schematizzazione di un albero delle directory formato da più filesystem.

Quindi, il montaggio dei filesystem nei vari mount-point, assieme al VFS, permette di poter gestire in maniera analoga più filesystem differenti, come se si trattasse di un unico filesystem virtuale, alla cui radice c’è la directory /.