4.13. Mount bind e ordine di montaggio di un file system
Se usate l'opzione
bind
del comando mount
assicuratevi che i file system siano montati nell'ordine corretto. Nel seguente esempio la directory /var/log
deve essere montata prima di eseguire il mount bind sulla directory /tmp
:
# mount --bind /var/log /tmp
L'ordine di montaggio dei file system è determinato nel modo seguente:
- In generale il montaggio dei file system è determinato dall'ordine nel quale il file system appare all'interno del file
fstab
. Eccezioni a questa regola sono i file system montati con il flag_netdev
o i file system che possiedono i propri scriptinit
. - Un file system con il proprio script
init
è montato nelle fasi successive del processo di inizializzazione, dopo il file system presente nel filefstab
. - File system montati con il flag
_netdev
sono montati dopo aver abilitato una rete sul sistema.
Se la configurazione necessita di una creazione di un mount bind sul quale montare un file system GFS2 sarà possibile ordinare il file
fstab
nel modo seguente:
- Montate i file system locali necessari per il mount bind.
- Eseguire il mount bind della directory sulla quale montare il file system GFS2.
- Montare il file system GFS2.
Se la configurazione richiede l'esecuzione di un mount bind di una directory locale o file system su di un file system GFS2, anche se elencherete i file system nell'ordine corretto nel file
fstab
non sarà possibile montare i file system correttamente poichè il file system GFS2 non verrà montato fino a quando non sarà eseguito lo script init
di GFS2. In questo caso è consigliato scrivere uno script init
per eseguire il mount bind in modo tale che questa operazione non sia eseguita prima del montaggio del file system GFS2.
Il seguente script è un esempio di script
init
personalizzato. Esso esegue un mount bind di due directory su due directory di un file system GFS2. In questo esempio è presente un mount point GFS2 esistente su /mnt/gfs2a
, montato al momento dell'esecuzione dello script init
di GFS2, dopo l'avvio del cluster.
In questo script d'esempio i valori dell'istruzione
chkconfig
indicano quanto di seguito riportato:
- 345 indica i run level nei quali verrà iniziato lo script
- 29 è la priorità d'avvio la quale in questo caso indica che lo script verrà eseguito al momento dell'avvio dopo lo script
init
di GFS2, il quale avrà una priorità di 26 - 73 è la priorità d'arresto, in questo caso indica che lo script verrà arrestato durante il processo di shutdown prima dello script GFS2, il quale ha una priorità d'arresto pari a 74.
I valori d'avvio e d'arresto indicano la possibilità di eseguire manualmente l'azione indicata tramite l'esecuzione di un comando
service start
ed un service stop
. Per esempio, se lo script è fredwilma
allora sarà possibile eseguire service fredwilma start
.
Questo script dovrà essere archiviato nella directory
/etc/init.d
con gli stessi permessi di altri script presenti in quella directory. Successivamente sarà possibile eseguire un comando chkconfig on
per collegare lo script ai run level indicati. Per esempio se lo script è fredwilma
allora sarà possibile eseguire chkconfig fredwilma on
.
#!/bin/bash # # chkconfig: 345 29 73 # description: mount/unmount my custom bind mounts onto a gfs2 subdirectory # # ### BEGIN INIT INFO # Provides: ### END INIT INFO . /etc/init.d/functions case "$1" in start) # In this example, fred and wilma want their home directories # bind-mounted over the gfs2 directory /mnt/gfs2a, which has # been mounted as /mnt/gfs2a mkdir -p /mnt/gfs2a/home/fred &> /dev/null mkdir -p /mnt/gfs2a/home/wilma &> /dev/null /bin/mount --bind /mnt/gfs2a/home/fred /home/fred /bin/mount --bind /mnt/gfs2a/home/wilma /home/wilma ;; stop) /bin/umount /mnt/gfs2a/home/fred /bin/umount /mnt/gfs2a/home/wilma ;; status) ;; restart) $0 stop $0 start ;; reload) $0 start ;; *) echo $"Usage: $0 {start|stop|restart|reload|status}" exit 1 esac exit 0