Server A
exportiert Verzeichnis /srv
via NFS mit Option nohide
. Ein Unterverzeichnis innerhalb /srv
, /srv/foo
ist ein Punkt für eine andere Stelle auf dem NFS - Server unter Verwendung von Mount - --bind
Option, wie
server# mount --bind /bar/foo/ /srv/foo/
Der Client B
importiert A:/srv
und hängt es /mnt/srv
mithilfe von NFS ein. Inhalte von /mnt/srv
sind die Inhalte von A:/srv
.
Das Problem ist, dass /mnt/srv/foo
leer ist, während ich erwarte, den Inhalt von A:/bar/foo/
dort zu sehen.
Wie exportiere und importiere ich NFS-Freigaben, die auch Unterverzeichnisse als Mount-Punkte haben?
/srv/foo --> /bar/foo
?/bar/foo
Client-Rechner zu gelangenB
, nicht auf den ServerA
.Antworten:
crossmnt
ist dein Freund.quelle
Ich bin auf dieses Problem gestoßen, als ich dem Diskless Arch- Handbuch gefolgt bin , und es hat mich wirklich verlangsamt. Ich werde meine Erkenntnisse hier mitteilen, da ich neugierig bin, ob dies für irgendjemanden anderen funktioniert.
Gemäß dem Diskless-Handbuch habe ich das Root-Dateisystem des Diskless-Clients (die eigentlichen Daten, die ich exportieren muss) in einem Loopback-Image, auf dem Folgendes bereitgestellt wurde
/srv/des1
:Ich habe dann einen
/nfs/des1
Mountpunkt erstellt und dann den Mount ausgeführt und bestätigt, dass ich alles sehen kann:In Bezug auf das Arch NFS- Handbuch habe ich dann Folgendes
/etc/exports
auf dem Server eingefügt:Ich habe dann eine
exportfs -rav
auf dem Server ausgeführt, um diese Änderungen zu übernehmen.Allerdings habe ich dann die Freigabe auf dem Testclient gemountet mit:
mount server:/des1 /mnt/tmp
nur um festzustellen, dass es ein leeres Verzeichnis ist, als ich erwartet hatte, dass das plattenlose Root-Dateisystem da ist.Zu diesem Zeitpunkt habe ich so gut wie alles versucht, bis mich etwas zu dieser Option in der
exports
Manpage geführt hat:Nachdem ich alles andere ausprobiert hatte, tauschte ich es so
/etc/exports
aus, dass es so aussah:Nachdem Sie den Manpage-Eintrag gelesen haben, würden Sie denken, dass dies den gleichen Effekt wie der vorherige Code haben würde, aber als ich
exportfs -rav
erneut ausgeführt habe, um die Änderungen zu registrieren, habe ich versucht, vom Client erneut zu mounten, und es hat funktioniert!quelle
Anscheinend muss jeder Mount-Unterpunkt vom NFS-Server exportiert werden, um für Clients sichtbar zu sein. In der obigen Situation sollte die
/etc/exports
Datei folgendermaßen aussehen:Dann Import
/srv
mit Option auf dem Client-t nfs
machen beide/srv
und/srv/foo
ordnungsgemäß zur Verfügung.bearbeitet von OP
diese Linie
hat bei mir statt gearbeitet
quelle
Eigentlich wollte ich das auch, aber es scheint, dass es Probleme mit dieser Idee gibt, da die NFS-Clients erwarten, dass die Anzahl der Inode-Dateien in der Ansicht des Clients für einen einzelnen Mount eindeutig ist .
Die Probleme werden in diesem Blog-Beitrag (nicht von mir) beschrieben: http://utcc.utoronto.ca/~cks/space/blog/unix/MultiFilesystemNFSIssue
Ich habe beschlossen, die Dateisysteme separat einzuhängen und miteinander zu verknüpfen, was für alle NFS-Clients funktionieren sollte.
quelle
HINWEIS: Nur Einzelbenutzer aktiviert
Was hinzugefügt wird, ist eine Reihe von Änderungen auf Server- und Clientseite. Auf der Serverseite
/etc/exports
und/etc/fstab
auf der Clientseite.Serverseite
Asus Eeepc
Client-Seite
Kernel Linux 4.15.0-38-generisches x86_64
quelle