Ich habe ein selbstgeschriebenes FUSE-Dateisystem, das ich auf meinem NFS-Server am Mountpoint einbinde /export/example/mount
. Dann exportiere ich ein übergeordnetes Verzeichnis der FUSE über NFS. Das /etc/exports
enthält die Optionen nohide,crossmnt,subtree_check,ro,no_root_squash
und ermöglicht den freien Zugang zu allen:
/export/example *(nohide,crossmnt,subtree_check,ro,no_root_squash)
Ich kann diesen Export auf meinem NFS-Client bereitstellen und darauf zugreifen. Sobald ich auf die FUSE innerhalb des NFS zugreife, bleibt mein Client hängen, bis ich umount
das NFS habe (und ich muss die Option verwenden, -f
um dies zu erreichen).
Ich habe versucht, die FUSE als meinen Arbeitsbenutzer und als Root zu mounten. Die Ergebnisse sind die gleichen.
Auf dem Server läuft ein Ubuntu 12.04, auf dem Client ein SuSE 9.3. Die FUSE ist in Python geschrieben und funktioniert problemlos lokal. Nur der Export über NFS schlägt fehl. Ich habe keine Sicherheitsbeschränkungen, da dies alles in einem privaten Netzwerk mit nur vertrauenswürdigen Benutzern geschieht.
Hat jemand eine Idee, was meine Probleme verursachen könnte oder (noch besser) wie ich das Problem lösen kann?
Ich habe darüber nachgedacht, das NFS durch SSHFS zu ersetzen, um das Problem zu umgehen, aber das funktioniert nicht, da das Client-System zu alt ist, um SSHFS zu unterstützen (da es auf FUSE basiert und FUSE nicht unterstützt wird).
allow_other
Option zum Sshfs-Mount ausprobiert?crossmnt
? Und erlaubt die Sicherungsseite (die s3fs) die Verwendung durch andere Benutzer (auch dafür gibt es eine Mount-Option). Vergessen Sie nicht, dass die Sicherung ein Benutzerbereich ist (der von einem einzelnen Benutzer verwendet werden soll), während nfs ein Mehrbenutzer ist.Antworten:
Die meisten Linux-Distributionen werden mit einem Kernel geliefert, der das Exportieren eines FUSE-gemounteten Dateisystems mit NFSv2 oder NFSv3 nicht ermöglicht. Sie haben folgende Möglichkeiten: 1. Implementieren Sie Ihr Dateisystem im Kernelbereich. 2. Exportieren Sie es in NFSv4, was ein fsid = erfordern würde
Ich selbst benutze 2. In der folgenden Abbildung werden Befehle, die mit beginnen
#
, auf dem Server ausgeführt, Befehle, die mit beginnen,$
werden auf dem Client ausgeführt.Dies ist meine Serverkonfiguration, wie Sie sehen können, exportiere ich einen FUSE-Mountpunkt:
Folgendes habe ich bei meinem Kunden getan:
Um zu überprüfen, ob Ihr Fehler durch das Exportieren der Sicherung in NFS v2 / v3 verursacht wird, exportieren Sie diesen Einhängepunkt speziell ohne NFS v4 (fsid) und prüfen Sie, ob eine Fehlermeldung angezeigt wird:
Wenn Sie auf dem Server den gemounteten Mount-Punkt exportieren und später mit Sicherung mounten, sollten Sie in Ihrem Protokoll sehen, ob Sie versuchen, den nfs-Client zu verwenden:
quelle
Standardmäßig ist das Exportieren von Submounts über nfs deaktiviert. Die empfohlene Vorgehensweise besteht darin, das Submount auch zu exportieren und vom Client bereitstellen zu lassen.
quelle