Problemi nell'esportazione di FUSE tramite NFS


8

Ho un file system FUSE scritto da me che monto sul mio server NFS su mountpoint /export/example/mount. Quindi esporto una directory principale del FUSE tramite NFS. Il /etc/exportscontiene le opzioni nohide,crossmnt,subtree_check,ro,no_root_squashe permette l'accesso gratuito a tutti:

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

Posso montare questa esportazione sul mio client NFS e accedervi. Non appena accedo a FUSE all'interno di NFS, il mio client si blocca fino a quando non ho umountNFS (e -fper farlo devo usare l'opzione ).

Ho provato a montare il FUSE come utente funzionante e come root. I risultati sono gli stessi

Il server esegue Ubuntu 12.04, il client SuSE 9.3. FUSE è scritto in Python e funziona localmente senza problemi. Solo l'esportazione tramite NFS ha esito negativo. Non ho restrizioni di sicurezza in quanto tutto questo è su una rete privata con solo utenti fidati.

Qualcuno ha idea di cosa potrebbe causare il mio problema o (ancora meglio) come risolvere il problema?

Ho pensato di sostituire NFS con SSHFS per aggirare il problema, ma non funziona poiché il sistema client è troppo vecchio per supportare SSHFS (poiché è basato su FUSE e FUSE non è supportato).


Hai provato l' allow_otheropzione per montare sshfs?
skarap,

Si l'ho fatto. Inutilmente, sfortunatamente. Ma nel frattempo abbiamo spento il vecchio hardware con il vecchio sistema, quindi questa domanda non è più interessante. Forse dovrei chiuderlo ... ;-)
Alfe,

Hai trovato una soluzione? 5 anni dopo ho avuto lo stesso problema. Una partizione fuse (s3fs) montata in una sottodirectory di una directory servita NFS non può essere vista dal client nfs (anche con nfs4) ...
Matthieu G

Hai usato crossmnt? E il lato fusibile (il s3fs) consente di essere utilizzato da altri utenti (c'è anche un'opzione di montaggio per questo). Non dimenticare che il fusibile è spazio utente (pensato per essere utilizzato da un singolo utente) mentre nfs è multiutente.
Alfe,

Risposte:


7

La maggior parte delle distribuzioni Linux viene fornita con un kernel che non consente l'esportazione di un file system montato su FUSE utilizzando NFSv2 o NFSv3. Le tue scelte sono: 1. Implementa il tuo file system nello spazio del kernel. 2. Esportalo in NFSv4, che richiederebbe un fsid =

Io stesso uso 2. Nell'illustrazione seguente, i comandi che iniziano con #sono eseguiti sul server, i comandi che iniziano con $sono eseguiti sul client.

Questa è la configurazione del mio server, come puoi vedere sto esportando un mount point 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)

Ecco cosa ho fatto sul mio cliente:

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

Per verificare che l'errore sia causato dall'esportazione del fusibile in NFS v2 / v3, esportare quel punto di montaggio in modo specifico senza NFS v4 (fsid) e vedere se si verifica un errore:

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

Se sul server esporti il ​​punto di montaggio smontato e lo monti con un fusibile in un secondo momento, dovresti vedere nel tuo registro se tenti di usare il 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.

0

per impostazione predefinita, l'esportazione di submount su nfs è disattivata. La linea di condotta raccomandata è anche esportare il submount e far montare anche il client.


Sì, lo so, ma mentre scrivevo ho provato varie combinazioni delle opzioni di montaggio che dovrebbero consentire l'esportazione del contenuto dei sottoassiemi. In effetti, con immagini ISO montate in modo semplice funziona perfettamente. Solo con il mio FUSE fallisce. E non posso montare quel FUSE sul client perché quell'host è così vecchio che non supporta FUSE. L'intera idea di quel FUSE-via-NFS è solo quella di consentire al client di accedere alle funzionalità di quel FUSE che non può funzionare da solo.
Alfe,

Devi esportare / export / esempio / mount e montarlo dal client.
hildred
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.