Probleme beim Exportieren von FUSE über NFS

8

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/exportsenthält die Optionen nohide,crossmnt,subtree_check,ro,no_root_squashund 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 umountdas NFS habe (und ich muss die Option verwenden, -fum 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).

Alfe
quelle
Haben Sie die allow_otherOption zum Sshfs-Mount ausprobiert?
Skarap
Ja, habe ich. Leider ohne Erfolg. In der Zwischenzeit haben wir die alte Hardware mit dem alten System ausgeschaltet, sodass diese Frage nicht mehr interessant ist. Ich sollte es vielleicht schließen ... ;-)
Alfe
Haben Sie eine Lösung gefunden? 5 Jahre später bekam ich das gleiche Problem. Eine Sicherungspartition (s3fs), die in einem Unterverzeichnis eines NFS-Served-Verzeichnisses bereitgestellt ist, kann vom nfs-Client nicht gesehen werden (auch nicht mit nfs4) ...
Matthieu G
Hast du benutzt 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.
Alfe

Antworten:

7

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:

# mount | tail -n1
convmvfs on /mnt/gb2312 type fuse.convmvfs (rw,nosuid,nodev,relatime,user_id=0,group_id=0)
# grep gb2312 /etc/exports 
/mnt/gb2312     192.168.0.0/16(no_subtree_check,fsid=0)

Folgendes habe ich bei meinem Kunden getan:

$ sudo mount -t nfs4 server:/ /mnt/
$ ls /mnt
Downloads  IMAGES  Library  lost+found

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:

# exportfs -a
exportfs: /mnt/gb2312 requires fsid= for NFS export

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:

# tail /var/log/syslog
Aug 18 03:54:31 server rpc.mountd[17183]: Cannot export /mnt/gb2312, possibly unsupported filesystem or fsid= required
Aug 18 04:00:52 server rpc.mountd[17183]: Caught signal 15, un-registering and exiting.
Tankman 六四
quelle
0

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.

hildred
quelle
Ja, ich weiß, aber als ich schrieb, habe ich verschiedene Kombinationen der Mount-Optionen ausprobiert, die den Export des Inhalts von Submounts ermöglichen sollen. Bei einfach montierten ISO-Images funktioniert dies einwandfrei. Nur mit meiner SICHERUNG schlägt es fehl. Und ich kann diese FUSE nicht auf dem Client mounten, weil dieser Host so alt ist, dass er FUSE nicht unterstützt. Die ganze Idee dieses FUSE-via-NFS besteht nur darin, dem Client den Zugriff auf die Funktionen dieses FUSE zu ermöglichen, den er nicht selbst ausführen kann.
Alfe
Sie müssen es exportieren / exportieren / example / mount und vom Client aus mounten.
Hildred