Fstab
Il file fstab (/etc/fstab) (o tabella dei file system) è un file di configurazione del sistema su macchine Debian; solitamente elenca tutti i dischi e le partizioni dei dischi e indica come debbano essere inizializzati o integrati nel file system complessivo del sistema.
Esempio
# <file system> <dir> <type> <options> <dump> <pass> /dev/sda1 / ext4 defaults 1 1 /dev/hdxx /usr ext4 defaults 1 1 /dev/sda5 swap swap defaults 0 0
Non è necessario inserire /proc e /sys in fstab, a meno che siano necessarie alcune opzioni particolari. Il sistema di boot le monterà sempre.
Definizioni dei campi
/etc/fstab contiene i seguenti campi separati da spazi o caratteri di tabulazione:
<file system> <dir> <type> <options> <dump> <pass>
<file system> - definisce il device di archiviazione (ad esempio /dev/sda1).
<dir> - dice al comando mount dove deve montare il <file system>.
<type> - definisce il tipo di file system del device o della partizione da montare. Sono gestiti molti tipi diversi di file system; alcuni esempi sono: ext2, ext3, reiserfs, xfs, jfs, smbfs, iso9660, vfat, ntfs, swap e auto. Il tipo 'auto' lascia che sia il comando mount a cercare di indovinare il tipo di file system in uso; è utile per i dispositivi rimovibile come CD e DVD.
<options> - definisce opzioni specifiche per i file system. Alcune opzioni sono correlate solo a quel file system stesso. Alcune delle opzioni più comuni sono:
auto - il file system viene montato automaticamente all'avvio o quando viene eseguito il comando 'mount -a'.
noauto - il file system viene montato solo quanto esplicitamente richiesto.
exec - permette l'esecuzione dei binari che sono presenti su quella partizione (predefinito).
noexec - non permette l'esecuzione di binari su quel file system.
ro - monta il file system in sola lettura.
rw - monta il file system in lettura e scrittura.
sync - l'I/O dovrebbe essere fatto in modo sincrono.
async - l'I/O dovrebbe essere fatto in modo asincrono.
flush - opzione specifica per FAT per fare il flush dei dati più spesso facendo così in modo che i dialoghi di copia o le barre di avanzamento siano presenti sino a che le cose sono sul disco.
user - permette a qualunque utente di montare il file system (implica noexec,nosuid,nodev a meno che altrimenti specificato).
nouser - permette solamente a root di montare il file system (predefinito).
defaults - impostazioni predefinite per mount (equivalente a rw,suid,dev,exec,auto,nouser,async).
suid - permette il funzionamento dei bit suid e sgid, che sono principalmente usati per permettere agli utenti di un sistema di eseguire binari con privilegi temporaneamente più alti al fine di svolgere uno specifico compito.
nosuid - blocca il funzionamento dei bit suid e sgid.
noatime - non aggiorna gli orari di accesso agli inode sul file system. Può migliorare le prestazioni.
nodiratime - non aggiorna gli orari di accesso agli inode delle directory sul file system. Può migliorare le prestazioni. Non è necessario abilitare anche questa opzione se si ha già abilitato noatime.
relatime - aggiorna i tempi di accesso agli inode in relazione agli orari di modifica o cambiamento. L'orario di accesso viene aggiornato solamente se quello precedente era precedente all'attuale orario di modifica o cambiamento. (Simile a noatime, ma non crea problemi con mutt o con altre applicazioni che hanno bisogno di sapere se un file è stato letto dall'ultima volta che è stato modificato.) Può migliorare le prestazioni.
<dump> - è usato dall'utilità dump per decidere quando fare un backup. Quando installato, dump controlla la voce e usa il numero per decidere se deve essere fatto il backup di un file system. I valori possibili sono 0 e 1; se 0, dump ignora il file system, se 1, dump esegue un backup. La maggior parte degli utenti non ha dump installato, perciò dovrebbe mettere 0 nella voce <dump>.
<pass> fsck legge il numero <pass> e determina in quale ordine debbano essere controllati i file system. I valori possibili sono 0, 1 e 2. Il file system root dovrebbe avere la priorità più alta: 1, tutti gli altri file system da controllare dovrebbero avere 2; i file system con 0 come valore per <pass> non verranno controllati dalla utilità fsck.
Definizione dei file system
I file system possono essere definiti all'interno della configurazione di /etc/fstab in tre diversi modi: con i descrittori dei nomi del kernel, con gli UUID o con le etichette. Il vantaggio dell'uso degli UUID o delle etichette è che non dipendono dall'ordine dei dischi; ciò è utile quando si cambia l'ordine dei dispositivi di archiviazione nel BIOS, quando si spostano i cavi di connessione dei dispositivi o quando alcuni BIOS occasionalmente cambiano l'ordine dei dispositivi di archiviazione.
Le istantanee LVM possono avere come risultato UUID ed etichette duplicati, perciò i volumi logici LVM dovrebbero sempre essere identificati con il nome del volume logico (/dev/mapper/nome).
I nomi dati dal kernel
Si possono ottenere i descrittori dei nomi del kernel usando fdisk:
# fdisk -l ... Device Boot Start End Blocks Id System /dev/sda1 * 1 19458 156290016+ 83 Linux
Un esempio di /etc/fstab che usa i nomi del kernel:
# <file system> <dir> <type> <options> <dump> <pass> /dev/sda1 / ext4 defaults 1 1
UUID
Gli UUID sono generati dalle utilità make-filesystem (mkfs.*) quando si crea un file system. blkid mostra l'UUID dei device e delle partizioni montati:
# blkid /dev/sda1: UUID="6a60524d-061d-454a-bfd1-38989910eccd" TYPE="ext4"
Un esempio di /etc/fstab che usa gli identificatori UUID:
# <file system> <dir> <type> <options> <dump> <pass> UUID=6a60524d-061d-454a-bfd1-38989910eccd / ext4 defaults 1 1
Etichette
È necessario prima dare un'etichetta al device o alla partizione; per farlo si possono usare applicazioni comuni come gparted oppure usare e2label per dare un'etichetta a partizioni ext2, ext3 e ext4. Tenere a mente che non tutti i file system gestiscono le etichette (ad esempio i file system FAT). Le etichette possono essere lunghe fino a 16 caratteri; dovrebbero essere non ambigue nel senso che ogni etichetta dovrebbe essere originale in modo da evitare possibili conflitti.
Non si deve cercare di montare un device o una partizione prima di assegnare loro un'etichetta. Sarà necessario inizialmente avviare da un (CD/DVD/USB)Live prima di assegnare un'etichetta con un'applicazione come gparted, oppure per le partizioni ext si può usare e2label:
# e2label /dev/<disco-o-partizione> Debian
Un esempio di /etc/fstab che usa le etichette:
# <file system> <dir> <type> <options> <dump> <pass> LABEL=Debian / ext4 defaults 1 1