4.12. Bind Mounts und kontextabhängige Pfade
GFS2-Dateisysteme unterstützen keine kontextabhängigen Pfade (Context-Depentent Path Names oder kurz CDPNs), die es Ihnen ermöglichen, symbolische Links zu erzeugen, die auf verschiedene Zieldateien oder -verzeichnisse zeigen. Um dieselbe Funktionalität In GFS2-Dateisystemen zu erreichen, können Sie die
bind
-Option des mount
-Befehls verwenden.
Die
bind
-Option des mount
-Befehls ermöglicht es Ihnen, einen Teil einer Dateihierachie an anderer Stelle einzuhängen, während dieser gleichzeitig weiterhin an der ursprünglichen Stelle erreichbar bleibt. Das Format des Befehls lautet wie folgt:
mount --bind olddir newdir
Nach der Ausführung des Befehls ist der Inhalt des
olddir
-Verzeichnisses von zwei Orten aus erreichbar: olddir
und newdir
. Sie können diese Option auch dazu verwenden, um eine einzelne Datei von zwei Orten aus erreichbar zu machen.
Beispielsweise ist der Inhalt des
/root/tmp
-Verzeichnisses nach Ausführung des folgenden Befehls identisch mit dem Inhalt des vorher eingehängten /var/log
-Verzeichnisses.
[root@menscryfa ~]#cd ~root
[root@menscryfa ~]#mkdir ./tmp
[root@menscryfa ~]#mount --bind /var/log /root/tmp
Alternativ können Sie auch einen Eintrag in die
/etc/fstab
-Datei einfügen, um beim Einhängen das gleiche Ergebnis zu erreichen. Der folgende /etc/fstab
-Eintrag führt dazu, dass die Inhalte von /root/tmp
mit den Inhalten des /var/log
-Verzeichnisses identisch sind.
/var/log /root/tmp none bind 0 0
Nachdem das Dateisystem eingehängt wurde, können Sie wie im folgenden Beispiel dargestellt den
mount
-Befehl verwenden, um zu überprüfen, ob das Dateisystem eingehängt worden ist.
[root@menscryfa ~]# mount | grep /tmp
/var/log on /root/tmp type none (rw,bind)
Angenommen, Sie haben mit einem Dateisystem, das kontextabhängige Pfade unterstützt, das
/bin
-Verzeichnis als kontextabhängigen Pfad definiert, der abhängig von der Systemarchitektur in einen der folgenden Pfade aufgelöst wird.
/usr/i386-bin /usr/x86_64-bin /usr/ppc64-bin
Sie können das gleiche Ergebnis erreichen, indem Sie ein leeres
/bin
-Verzeichnis erstellen. Anschließend können Sie entweder mithilfe eines Skripts oder mithilfe eines Eintrags in der /etc/fstab
-Datei jedes der einzelnen Architekturverzeichnisse unter dem /bin
-Verzeichnis mit dem Befehl mount -bind
einhängen. Beispielsweise könnten Sie den folgenden Befehl als eine Zeile in einem Skript verwenden.
mount --bind /usr/i386-bin /bin
Alternativ können Sie den folgenden Eintrag in der
/etc/fstab
-Datei verwenden.
/usr/1386-bin /bin none bind 0 0
Ein Bind Mount bietet mehr Flexibilität als ein kontextabhängiger Pfad, da Sie mithilfe dieser Funktion verschiedene Verzeichnisse abhängig von verschiedenen, von Ihnen definierten Kriterien einhängen können (z. B. abhängig vom
%fill
-Wert für das Dateisystem). Kontextabhängige Pfade sind dagegen eher eingeschränkt in ihren Möglichkeiten. Beachten Sie jedoch, dass Sie Ihr eigenes Skript schreiben müssen, um Dateisysteme abhängig von Kriterien wie dem %fill
-Wert einhängen zu können.
Warnung
Wenn Sie ein Dateisystem mit der
bind
-Option einhängen und das Originaldateisystem als rw
eingehängt war, dann wird das neue Dateisystem genauso eingehängt (rw
), selbst wenn Sie das ro
-Flag verwenden. Das ro
-Flag wird ohne jegliche Meldung ignoriert. In diesem Fall kann das neue Dateisystem im /proc/mounts
-Verzeichnis unter Umständen dennoch als ro
gekennzeichnet sein, was irreführend sein kann.