Red Hat Training

A Red Hat training course is available for Red Hat Enterprise Linux

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.