4.13. Einhängereihenfolge für Bind Mounts und Dateisysteme


Wenn Sie die bind-Option des mount-Befehls verwenden, müssen Sie sicherstellen, dass die Dateisysteme in der richtigen Reihenfolge eingehängt werden. In dem folgenden Beispiel muss das /var/log-Verzeichnis eingehängt werden, bevor der Bind Mount auf dem /tmp-Verzeichnis ausgeführt wird:
# mount --bind /var/log /tmp
Die Reihenfolge, in der Dateisysteme eingehängt werden, wird wie folgt bestimmt:
  • Üblicherweise folgt die Reihenfolge, in der Dateisysteme eingehängt werden, der Reihenfolge, in der diese in der fstab-Datei aufgeführt sind. Ausnahmen davon betreffen Dateisysteme, die mit dem _netdev-Flag eingehängt werden, oder Dateisysteme, die über eigene init-Skripte verfügen.
  • Ein Dateisystem mit eigenem init-Skript wird später im Initialisierungsprozess eingehängt, nach den Dateisystemen in der fstab-Datei.
  • Dateisysteme mit dem _netdev-Flag werden eingehängt, sobald das Netzwerk auf dem System aktiviert wurde.
Falls Ihre Konfiguration erfordert, dass Sie ein Bind Mount erstellen, auf dem ein GFS2-Dateisystem eingehängt wird, können Sie Ihre fstab-Datei wie folgt ordnen:
  1. Einhängen der lokalen Dateisysteme, die für den Bind Mount notwendig sind.
  2. Bind Mount des Verzeichnisses, auf dem das GFS2-Dateisystem eingehängt werden soll.
  3. Einhängen des GFS2-Dateisystems.
Falls Ihre Konfiguration erfordert, dass Sie ein lokales Verzeichnis oder Dateisystem mittels Bind Mount auf einem GFS2-Dateisystem einhängen, würde auch die richtige Reihenfolge der Dateisysteme in der fstab-Datei die Dateisysteme nicht richtig einhängen, da das GFS2-Dateisystem erst eingehängt wird, wenn das GFS2-init-Skript ausgeführt wird. In diesem Fall sollten Sie ein init-Skript schreiben, um den Bind Mount derart zu konfigurieren, dass der Bind Mount erst durchgeführt wird, nachdem das GFS2-Dateisystem eingehängt wurde.
Das folgende Skript ist ein Beispiel für ein benutzerdefiniertes init-Skript. Dieses Skript führt einen Bind Mount von zwei Verzeichnissen auf zwei Verzeichnisse eines GFS2-Dateisystems durch. In diesem Beispiel gibt es einen vorhandenen GFS2-Einhängepunkt unter /mnt/gfs2a, der eingehängt wird, wenn das GFS2-init-Skript nach dem Cluster-Start ausgeführt wird.
In diesem Beispielskript bedeuten die Werte der chkconfig-Anweisung Folgendes:
  • 345 steht für die Runlevels, in denen das Skript gestartet wird
  • 29 ist die Startpriorität, was in diesem Fall bedeutet, dass das Skript zum Startzeitpunkt nach dem GFS2-init-Skript ausgeführt wird, welches eine Startpriorität von 26 hat
  • 73 ist die Stopppriorität, was in diesem Fall bedeutet, dass das Skript während des Herunterfahrens vor dem GFS2-Skript gestoppt wird, welches eine Stopppriorität von 74 hat
Die Start- und Stoppwerte zeigen, dass Sie die angegebene Aktion manuell durch Ausführen der Befehle service start und service stop vornehmen können. Falls das Skript beispielsweise fredwilma heißt, können Sie service fredwilma start ausführen.
Dieses Skript sollte im /etc/init.d-Verzeichnis abgelegt werden, mit denselben Berechtigungen wie die anderen Skripte in dem Verzeichnis. Sie können anschließend den Befehl chkconfig on ausführen, um das Skript mit den angegebenen Runlevels zu verknüpfen. Falls das Skript beispielsweise fredwilma heißt, können Sie chkconfig fredwilma on ausführen.

#!/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
Red Hat logoGithubRedditYoutubeTwitter

Lernen

Testen, kaufen und verkaufen

Communitys

Über Red Hat Dokumentation

Wir helfen Red Hat Benutzern, mit unseren Produkten und Diensten innovativ zu sein und ihre Ziele zu erreichen – mit Inhalten, denen sie vertrauen können.

Mehr Inklusion in Open Source

Red Hat hat sich verpflichtet, problematische Sprache in unserem Code, unserer Dokumentation und unseren Web-Eigenschaften zu ersetzen. Weitere Einzelheiten finden Sie in Red Hat Blog.

Über Red Hat

Wir liefern gehärtete Lösungen, die es Unternehmen leichter machen, plattform- und umgebungsübergreifend zu arbeiten, vom zentralen Rechenzentrum bis zum Netzwerkrand.

© 2024 Red Hat, Inc.