Uno dei grossi vantaggi della gerarchia dei filesystem “unix & unix-like” sta appunto nella loro struttura e nei “punti di montaggio”.
Prima di tutto cerchiamo di capire cosa è una struttura di un filesystem e cosa è un punto di montaggio.
L’esempio più semplice è quello di associare un filesystem *nix ad un albero, in origine a tutto troviamo la “radice” o root, che appunto in Inglese significa radice (identificata dal simbolo ” / “), il tronco ed i rami; ogni nodo prima di un ramo rappresenta una cartella presente in ” / “.
Ogni ramo può avere altri “nodi”, ovvero contenere altre cartelle e così via .
Ogni cartella in questo “albero” può diventare un punto di montaggio (o in Inglese, mount point).
Ad esempio, quando inseriamo un CD od una chiavetta, generalmente questi vengono montati automaticamente in /media, qui sotto ecco l’output del comando “ls” nella cartella “/media”, senza chiavette collegate o CD inseriti nel lettore.
Questo invece è il medesimo comando, ma sta volta con un CD inserito ed “automontato”:
Lo stesso discorso vale nel caso in cui venga montata un partizione tramite i nostri file manager; ma supponiamo ora che la nostra partizione.
Il montaggio dei filesystem avviene ovviamente durante il boot, a gestirlo ci pensa un file di configurazione, e cioè /etc/fstab.
Qui sotto un esempio di /etc/fstab:
Prima di iniziare bisogna capire anche la nomenclatura dei dischi e delle partizioni, oltre che la struttura del file “”stab” stesso.
Per quanto riguarda la nomenclatura delle partizioni le alternative sono quattro e cioè: by-label, by-uuid, by-id e by-path. Tutte e quattro possono essere adoperate in modo indifferente, ma ad oggi la più usata dalle distribuzioni è quella “by-uuid”, salvo qualche eccezione (Slackware e altre) che usano “by-label”, questo perche gli UUID (Universally Unique Identifier – Identificatore Unico Universale) semplicemente sono… univoci!
Concretamente il vantaggio è semplice, rispetto alla nomenclaura “by-label”,che può cambiare se si aggiunge un disco (come una chiavetta USB lasciata accidentalmente collegata), il metodo “by-uuid” è affidabile, dato che un UUID appartiene ad una ed una sola partizione. In realtà non è esattamente così, ma vista la lunghezza e le possibilità di combinazioni è veramente improbabile che un utente si trovi due partizioni con lo stesso UUID.
Quindi, prima di procedere, dobbiamo ricavare gli UUID; nulla di più facile: provate a lanciare il comando:
ls -l /dev/disk/by-uuid
Ed eccoli qua (ok, il mio sistema è un po’ “complesso” sul fronte partizioni):
Questo listato potrebbe confondere chi non sa esattamente quale sia la partizione da “automontare”, ma un controllo incrociato con il comando “sudo fdisk -l” vi aiuterà a capirlo .
Non dovete quindi far altro che copiare / annotare / memorizzare l’UUID della partizione che vi serve, e prepararvi ad modificare fstab con il comando:
sudo nano /etc/fstab (nano vale come esempio, potete usare il vostro editor di testo preferito)
Qui sotto un altro esempio di fstab (questa volta di Fedora), dove vogliamo montare la partizione “sdb3” dell’immagine precedente, il cui UUID è : 8b4e53a9-500e-49b0-90cb-b37001610038.
Dovremo quindi aggiungere una nuova riga iniziando con:
“UUID=8b4e53a9-500e-49b0-90cb-b37001610038” – che indica quale partizione montare, spostiamoci con il tasto “Tab” ed indichiamo il punto di mount (ricordo che deve essere il percorso ad una qualsiasi cartella esistente nel filesystem, nel mio caso sarà /home/rodrigo/dati), e la riga diventerà così :
“UUID=8b4e53a9-500e-49b0-90cb-b37001610038 /home/rodrigo/dati”
Ora abbiamo il nome della partizione ed il relativo punto di mount; ma bisogna specificare il tipo di filesystem, nel mio caso EXT4:
“UUID=8b4e53a9-500e-49b0-90cb-b37001610038 /home/rodrigo/dati ext4”
Ora a completare il tutto inseriamo le opzioni di mount, che sono:
- auto – Il file system sarà montato automaticamente durante l’avvio del sistema, oppure quando viene lanciato il comando “mount -a”;
- noauto – Il file system non sarà montato automaticamente ma solo manualmente;
- exec – Abilita l’esecuzione dei file eseguibili residenti sulla partizione (abilitata di default);
- noexec – Inibisce la possibilità di eseguire programmi dal file system;
- ro – Il mount del file system avviene in sola lettura;
- rw – Il mount del file system avviene in lettura e scrittura;
- user – Permette a tutti gli utenti di montare il filesystem. Questa opzione include noexec, nosuid, nodev, se non vengono utilizzate le opzioni opposte;
- users – Permette agli utenti appartenenti al gruppo users di montare il filesystem;
- nousers – Permette il mount solo all’utente root;
- owner – Permette il mount al solo proprietario del punto di mount;
- sync – l’I/O sul file system deve essere sincrono;
- async – tutto l’I/O sul file system deve essere asincrono;
- dev – Interpreta le periferiche a blocchi o periferiche speciali all’interno del filesystem;
- nodev – Impedisce l’interpretazione di periferiche a blocchi o periferiche speciali all’interno del filesystem;
- suid – Consente l’uso di operazioni di suid e sgid. Sono comunemente usate per permettere agli utenti di un sistema di eseguire programmi elevando temporaneamente i privilegi [1];
- nosuid – Impedisce le operazioni di suid e sgid;
- noatime – Non aggiorna l’inode con i tempi di accesso al file system. Può aumentare le prestazioni (vedi l’opzione atime);
- nodiratime – Non agiorna l’inode delle directory sui tempi di accesso al file system. Può aumentare le prestazioni (vedi l’opzione atime);
- relatime – Aggiorna nell’inode solo i tempi relativi a modifiche o cambiamenti dei file. I tempi di accesso vengono aggiornati solo se l’ultimo accesso è precedente rispetto a quello dell’ultima modifica(simile a noatime ma non interferisce con programmi come mutt che devono sapere se un file è stato letto dopo la sua ultima modifica). Può aumentare le performance (vedi l’opzione atime);
- flush – Questa è una opzione per il file system FAT, serve a scrivere più spesso i dati sul disco in modo da evitare che le finestre di trasferimento vengano chiuse mentre i dati non sono ancora stati scritti;
- defaults – Assegna le impostazioni di default del filesystem per il comando mount. Le opzioni di default per ext3 sono rw,suid,dev,exec,auto,nouser,async.
Per la stragrande maggioranza dei casi basterà utilizzare “defaults”, o al limite “rw”.
Quindi la nostra riga sarà diventata così:
“UUID=8b4e53a9-500e-49b0-90cb-b37001610038 /home/rodrigo/dati” ext4 defaults”
Ora dobbiamo occuparci degli ultimi 2 parametri, “dump” e “pass”: il valore di dump (valori 0 e 1) viene usato per fare il backup; è raccomandato impostarlo su 0 su utenza desktop (o comuque se dump non è installato).
L’ultimo valore “pass” viene usato da fsck per determinare con che proprità i filesystem verranno controllati: 0 corrisponde a nessuna priorità e nessun controllo (sempre sconsigliato tranne che per le partizioni in sola lettura), 1 è dedicato alle partizioni “importanti” come quella che potreste voler montare su /var, e 2 è quella a priorità più bassa, adatta a partizioni non vitali.
Ecco quindi la nostra nuova riga in fstab pronta all’uso:
“UUID=8b4e53a9-500e-49b0-90cb-b37001610038 /home/rodrigo/dati” ext4 defaults 0 2”
Salviamo il nostro nuovo fstab e riavviamo, ed ecco la nostra partizione montata esattamente dove volevamo.