Vous avez du mal à exporter FUSE via NFS

8

J'ai un système de fichiers FUSE auto-écrit que je monte sur mon serveur NFS sur le point de montage /export/example/mount. Ensuite, j'exporte un répertoire parent du FUSE via NFS. Le /etc/exportscontient les options nohide,crossmnt,subtree_check,ro,no_root_squashet permet un accès gratuit à tout le monde:

/export/example *(nohide,crossmnt,subtree_check,ro,no_root_squash)

Je peux monter cette exportation sur mon client NFS et y accéder. Dès que j'accède au FUSE dans le NFS, mon client se bloque jusqu'à ce que je umountle NFS (et j'ai besoin d'utiliser l'option -fpour accomplir cela).

J'ai essayé de monter le FUSE en tant qu'utilisateur actif et en tant que root. Les résultats sont les mêmes.

Le serveur exécute un Ubuntu 12.04, le client un SuSE 9.3. Le FUSE est écrit en Python et fonctionne localement sans aucun problème. Seule l'exportation via NFS échoue. Je n'ai aucune restriction de sécurité car tout cela se fait sur un réseau privé avec uniquement des utilisateurs de confiance.

Quelqu'un at-il une idée de ce qui pourrait causer mes problèmes ou (encore mieux) comment résoudre le problème?

J'ai pensé à remplacer le NFS par SSHFS pour contourner le problème, mais cela ne fonctionne pas car le système client est trop ancien pour prendre en charge SSHFS (car il est basé sur FUSE et FUSE n'est pas pris en charge).

Alfe
la source
Avez-vous essayé l' allow_otheroption de montage sshfs?
skarap le
Oui je l'ai fait. En vain, malheureusement. Mais en attendant, nous avons éteint l'ancien matériel avec l'ancien système, donc cette question n'est plus intéressante. Je devrais peut-être le fermer ... ;-)
Alfe
Avez-vous trouvé une solution ? 5 ans plus tard, j'ai eu le même problème. Une partition fuse (s3fs) montée dans un sous-répertoire d'un répertoire servi par NFS ne peut pas être vue par le client nfs (même avec nfs4) ...
Matthieu G
L'avez-vous utilisé crossmnt? Et le côté fusible (le s3fs) permet-il d'être utilisé par d'autres utilisateurs (il existe également une option de montage). N'oubliez pas que le fusible est l'espace utilisateur (destiné à être utilisé par un seul utilisateur) tandis que nfs est multi-utilisateur.
Alfe

Réponses:

7

La plupart des distributions Linux sont livrées avec un noyau qui ne permet pas d'exporter un système de fichiers monté FUSE à l'aide de NFSv2 ou NFSv3. Vos choix sont: 1. Implémentez votre système de fichiers dans l'espace noyau. 2. Exportez-le en NFSv4, ce qui nécessiterait un fsid =

J'utilise moi-même 2. Dans l'illustration ci-dessous, les commandes commençant par #sont exécutées sur le serveur, les commandes commençant par $sont exécutées sur le client.

Voici ma configuration de serveur, comme vous pouvez le voir, j'exporte un point de montage FUSE:

# 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)

Voici ce que j'ai fait sur mon client:

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

Pour vérifier que votre échec est causé par l'exportation de fusible dans NFS v2 / v3, exportez ce point de montage spécifiquement sans NFS v4 (fsid) et voyez si vous obtenez une erreur:

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

Si sur le serveur vous exportez le point de montage démonté et que vous le montez avec un fusible ultérieurement, vous devriez voir dans votre journal si vous essayez d'utiliser le client nfs:

# 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 六四
la source
0

par défaut, l'exportation de sous-montages sur nfs est désactivée. Il est recommandé d'exporter également le sous-montage et de le faire également monter par le client.

hildred
la source
Oui, je sais, mais en écrivant, j'ai essayé différentes combinaisons des options de montage qui devraient permettre d'exporter le contenu des sous-montages. En fait, avec des images ISO montées en clair, cela fonctionne parfaitement. Ce n'est qu'avec mon FUSE qu'il échoue. Et je ne peux pas monter ce FUSE sur le client car cet hôte est tellement ancien qu'il ne prend pas en charge FUSE. L'idée de ce FUSE-via-NFS est simplement de permettre au client d'accéder aux fonctionnalités de ce FUSE qu'il ne peut pas exécuter lui-même.
Alfe
Vous devez exporter / exports / example / mount et le monter à partir du client.
hildred