3.11. Bind Mounts e Context-Dependent Path Names

I file system GFS2 non forniscono alcun supporto per i Context-Dependent Path Name (CDPN), i quali permettono all'utente di creare link simbolici che indicano file o directory a destinazione variabili. Per questa funzionalità in GFS2, è possibile utilizzare l'opzione bind del comando mount.
L'opzione bind del comando mount permette di rimontare parte della gerarchia del file su di una posizione diversa, pur restando disponibile nella posizione originale. Di seguito viene riportato il formato del comando:
mount --bind olddir newdir
Dopo aver eseguito questo comando i contenuti della directory olddir saranno disponibili in due posizioni: olddir e newdir. È possibile utilizzare questa opzione per rendere disponibile un file singolo in due posizioni.
Per esempio, dopo aver eseguito i seguenti comandi i contenuti di /root/tmp risulteranno identici ai contenuti della directory /var/log precedentemente montata.
[root@menscryfa ~]# cd ~root
[root@menscryfa ~]# mkdir ./tmp
[root@menscryfa ~]# mount --bind /var/log /tmp
Alternativamente potrete utilizzare una entry all'interno del file /etc/fstab in modo da avere gli stessi risultati al momento dell'esecuzione del mount. La suddetta entry di /etc/fstab permetterà ai contenuti di /root/tmp di essere identici ai contenuti della directory /var/log.
/var/log                /root/tmp               none    bind            0 0
Dopo aver montato il file system è possibile utilizzare il comando mount per controllare il montaggio del file system, come riportato nel seguente esempio.
[root@menscryfa ~]# mount | grep /tmp
/var/log on /root/tmp type none (rw,bind)
Con un file system in grado di supportare il Context-Dependent Path Nam, potrete definire la directory /bin come un Context-Dependent Path Name risolvibile in uno dei seguenti percorsi, a seconda dell'architettura del sistema.
/usr/i386-bin
/usr/x86_64-bin
/usr/ppc64-bin
È possibile ottenere la stessa funzionalità creando una directory /bin vuota. Successivamente utilizzando uno script o una entry nel file /etc/fstab, è possibile montare ogni directory individuale dell'architettura sulla directory /bin, con un comando mount -bind. Per esempio, è possibile usare il seguente comando all'interno di uno script.
mount --bind /usr/i386-bin /bin
Alternativamente potrete utilizzare la seguente entry all'interno del file /etc/fstab.
/usr/1386-bin             /bin               none    bind            0 0
Un bind mount può fornire una maggiore flessibilità rispetto ad un Context-Dependent Path Name, poichè l'utente sarà in grado di usare questa caratteristica per montare directory diverse in base al criterio da lui definito (come ad esempio il valore di %fill per il file system). I Context-Dependent Path Names risultano molto più limitati nel contenuto. Da notare tuttavia che sarà necessario scrivere il proprio script per eseguire il mount in base al valore di %fill.

Avvertimento

Se montate un file system utilizzando l'opzione bind ed il file system originale è stato precedentemente montato in modalità rw, il nuovo file system sarà anch'esso montato in modalità rw, anche se utilizzate il flag ro; il flag ro verrà ignorato senza generare alcun messaggio. In questo caso, il nuovo file system potrebbe essere contrassegnato in modo non corretto come ro nella directory /proc/mounts.