Tiene problemas para exportar FUSE a través de NFS

8

Tengo un sistema de archivos FUSE autoescrito que monto en mi servidor NFS en mountpoint /export/example/mount. Luego exporto un directorio principal del FUSE a través de NFS. El /etc/exportscontiene las opciones nohide,crossmnt,subtree_check,ro,no_root_squashy permite el acceso gratuito a todos:

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

Puedo montar esta exportación en mi cliente NFS y acceder a ella. Tan pronto como accedo al FUSE dentro del NFS, mi cliente se cuelga hasta que tengo umountel NFS (y necesito usar la opción -fpara lograrlo).

He intentado montar el FUSE como mi usuario que trabaja y como root. Los resultados son los mismos.

El servidor ejecuta un Ubuntu 12.04, el cliente un SuSE 9.3. El FUSE está escrito en Python y funciona localmente sin ningún problema. Solo falla la exportación a través de NFS. No tengo restricciones de seguridad ya que todo esto está en una red privada con solo usuarios confiables.

¿Alguien tiene una idea de lo que podría causar mi problema o (incluso mejor) cómo resolver el problema?

He pensado en reemplazar el NFS con SSHFS para solucionar el problema, pero eso no funciona ya que el sistema del cliente es demasiado antiguo para admitir SSHFS (ya que se basa en FUSE y FUSE no es compatible).

Alfe
fuente
¿ allow_otherProbaste la opción de montar sshfs?
skarap
Sí, lo hice. En vano, desafortunadamente. Pero mientras tanto apagamos el hardware antiguo con el sistema antiguo, por lo que esta pregunta ya no es interesante. Tal vez debería cerrarlo ... ;-)
Alfe
Encontraste una solución ? 5 años después tuve el mismo problema. El cliente nfs no puede ver una partición de fusible (s3fs) montada en un subdirectorio de un directorio servido por NFS (incluso con nfs4) ...
Matthieu G
¿Usaste crossmnt? Y el lado del fusible (s3fs) permite que otros usuarios lo usen (también hay una opción de montaje para esto). No olvide que el fusible es espacio de usuario (destinado a ser utilizado por un solo usuario) mientras que nfs es multiusuario.
Alfe

Respuestas:

7

La mayoría de las distribuciones de Linux se entregan con un kernel que no permite exportar un sistema de archivos montado en FUSE usando NFSv2 o NFSv3. Sus opciones son: 1. Implemente su sistema de archivos en el espacio del kernel. 2. Exportarlo en NFSv4, lo que requeriría un fsid =

Yo mismo uso 2. En la siguiente ilustración, los comandos comienzan con #se ejecutan en el servidor, los comandos comienzan con $se ejecutan en el cliente.

Esta es la configuración de mi servidor, como puede ver, estoy exportando un punto de montaje 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)

Esto es lo que hice en mi cliente:

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

Para verificar que su falla es causada por la exportación del fusible en NFS v2 / v3, exporte ese punto de montaje específicamente sin NFS v4 (fsid), y vea si obtiene un error:

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

Si en el servidor exporta el punto de montaje desmontado y lo monta con fusible más adelante, debería ver en su registro si intenta usar el cliente 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 六四
fuente
0

de forma predeterminada, la exportación de submontes sobre nfs está desactivada. El curso de acción recomendado es exportar también la submonta y hacer que el cliente la monte también.

hildred
fuente
Sí, lo sé, pero mientras escribía probé varias combinaciones de las opciones de montaje que deberían permitir exportar el contenido de submontajes. De hecho, con imágenes ISO montadas sin problemas, esto funciona a la perfección. Solo con mi FUSIBLE falla. Y no puedo montar ese FUSE en el cliente porque ese host es tan antiguo que no es compatible con FUSE. La idea de ese FUSE-via-NFS es simplemente permitir que el cliente acceda a las funciones de ese FUSE que no puede ejecutarse por sí mismo.
Alfe
Necesita exportar / exportar / ejemplo / montar y montarlo desde el cliente.
hildred