Greifen Sie auf Dateien zu, die sich im zugrunde liegenden Dateisystem eines NFS-Mountpunkts befinden

8

Vielleicht ist dies eine seltsame Anfrage, aber es ist das Gegenteil der Frage, die unter folgender Adresse aufgeführt ist:

Ist es möglich, den Inhalt einer zugrunde liegenden NFS-Bereitstellung anzuzeigen, ohne die Bereitstellung des NFS-Inhalts aufzuheben?

Ich habe eine Vereinbarung, bei der Linux-Server an mehreren Remotestandorten eine NFS-Freigabe von einem zentralen Server (alle CentOS 5.x) bereitstellen. Denken Sie: /opt/softwareoder etwas ähnliches.

Wenn alles in Ordnung ist, stellen die Client-Systeme den NFS-Export vom Hauptserver bereit und werden ohne Zwischenfälle ausgeführt. Die in der Freigabe enthaltenen Daten ändern sich nicht häufig (möglicherweise wöchentlich).

Ich bin besorgt über die Situation, in der die Verbindung zum Haupt-NFS-Server unterbrochen wird (Ausfall des NFS-Servers, Glasfaserschnitt usw.). Aufgrund der Tatsache, dass sich die gemeinsam genutzten Daten nicht häufig ändern, möchte ich, dass diese Systeme eigenständig ausgeführt werden können, wenn sie den NFS-Mount verlieren.

Angenommen, der Mount verschwindet. Ich möchte die lokalen Dateien verwenden, die sich /opt/softwareunter dem NFS-Mount am selben Ort befinden. Außerdem würde ich diese Dateien täglich synchronisieren.

Die NFS-Bereitstellung erfolgt durch Lesen / Schreiben, da Änderungen am bereitgestellten Volume von jedem Clientstandort aus möglich sein müssen.

Ist das möglich? Wie greife ich auf die Dateien im zugrunde liegenden Verzeichnis zu (oder überschreibe sie)? Würde es möglicherweise Timeout-Probleme geben? Gibt es Mount-Optionen / Tipps, die dabei helfen könnten?

ewwhite
quelle

Antworten:

16
mount -o bind / /mnt

Wenn Sie sich / mnt / opt / software ansehen, finden Sie die Dateien (falls vorhanden), die sich unter dem Mount in / opt / software befinden.

Seth Robertson
quelle
Aber das würde das gesamte Root-Dateisystem unter / mnt mounten. Hmm ...
ewwhite
1
Damit? Welchen Schaden wird es anrichten? Sie können damit nur die gewünschten Dateien synchronisieren. Sie können es sogar in / private / root ablegen, wobei / private 700 root ist, damit niemand anderes auf diese Dateien zugreifen kann, und nicht, dass es Schaden anrichten würde, wenn sie könnten, da sie genau die gleichen Berechtigungen haben. Es scheint im Grunde eine genaue Antwort auf Ihre Frage zu sein. Wenn Sie nun die Frage haben, wie Sie nach dem Ausfall des NFS-Servers eine Wiederherstellung durchführen können, ist dies völlig anders und erfordert wahrscheinlich das Aufheben der Bereitstellung. Dadurch wird die Hälfte Ihrer Prozesse ungültig und es wird trotzdem ein Neustart erzwungen.
Seth Robertson
Dies war knapp, aber ich entschied mich, das Verzeichnis, auf das ich zugreifen musste, mit dem Parameter bind an einen anderen Speicherort im Dateisystem zu hängen.
ewwhite
Eigentlich ist dies in einem bestimmten Fall sehr nützlich und ich wünschte, ich hätte vor langer Zeit von dieser Option gewusst. Ich bin gerade wieder in diese Situation geraten. Grundsätzlich hatte ich ein / usr-Verzeichnis, das an das Root-Dateisystem gebunden war, und wollte es in ein eigenes Dateisystem verschieben, um Speicherplatz im Root wiederherzustellen. Wie können Sie die alten / usr-Daten einfach entfernen, nachdem Sie usr erstellt und die Daten dort migriert und neu gestartet haben, um den neuen usr bereitzustellen? Eine Möglichkeit besteht darin, den Einzelbenutzermodus zu verwenden und zu hoffen, dass dort keine Dateien verwendet werden. Eine andere Möglichkeit besteht darin, diesen Bindungstrick zu verwenden und das Datenverzeichnis von einem alternativen Pfad zu entfernen.
Deltaray
8

Dies ist mit der mount --bindOption möglich.

Since Linux 2.4.0 it is possible to remount part of the file hierarchy somewhere else. The call is
   mount --bind olddir newdir
After this call the same contents is accessible in two places.

Also konnte ich mount --bind /opt/software /foo

Wenden Sie dann den NFS-Mount an /opt/softwareund behalten Sie die Möglichkeit, die zugrunde liegenden Dateien unter anzuzeigen /foo.

ewwhite
quelle
3

Was Sie möglicherweise benötigen, da die Dateien relativ statisch sind, ist rsync. Es sei denn, mehrere Remoteclients können Dateien ändern. Wenn die Daten im Wesentlichen schreibgeschützt sind, können Sie sie nicht einfach ein paar Mal am Tag über einen Cron-ähnlichen Job auf jedem Computer synchronisieren. Auch hier fehlt mir möglicherweise der Punkt, aber wenn Daten in NFS grundsätzlich schreibgeschützt sind, kann dies der Fall sein.

Schrägstrich
quelle
Rsync ist traditionell sinnvoll, aber es besteht die Möglichkeit, dass Dateien an einer bestimmten Site geändert werden. Wenn ich schreibgeschützt mounten würde, wäre rsync die bessere Wahl. Es sei denn, Sie kennen eine Zwei-Wege-Synchronisationslösung ...
ewwhite
Mit rsync können Sie einen Cron-Job einrichten, der die Zeitstempel Ihrer Dateien auf jedem Computer überprüft und möglicherweise alle 5 Minuten. Sobald ein Update bemerkt wird, schieben Sie die Dateien an nfs und erstellen Sie gleichzeitig möglicherweise eine Triggerdatei, die jeder andere Computer zu einem festgelegten Zeitpunkt überprüft. Sobald sie diesen Auslöser sehen, führen sie alle rsync aus, um die aktuellsten Dateien von NFS zu erhalten.
Slashdot
Ich kann Unison als Lösungsansatz versuchen.
ewwhite