10

I've got a self-written FUSE file system I mount on my NFS server on mountpoint /export/example/mount. Then I export a parent directory of the FUSE via NFS. The /etc/exports contains the options nohide,crossmnt,subtree_check,ro,no_root_squash and allows free access to everyone:

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

I can mount this export on my NFS client and access it. As soon as I access the FUSE within the NFS my client hangs until I umount the NFS (and I need to use option -f to accomplish that).

I've tried mounting the FUSE as my working user and as root. The results are the same.

The server is running a Ubuntu 12.04, the client a SuSE 9.3. The FUSE is written in Python and works locally without any trouble. Only the export via NFS fails. I have no security restrictions as all this is on a private network with only trusted users.

Does anybody have an idea what could cause my trouble or (even better) how to solve the issue?

I've thought about replacing the NFS with SSHFS to work around the problem, but that does not work as the client system is too old to support SSHFS (as it is based on FUSE, and FUSE isn't supported).

4
  • Did you try the allow_other option to sshfs mount?
    – skarap
    Commented Apr 12, 2014 at 16:37
  • Yes, I did. To no avail, unfortunately. But in the meantime we switched off the old hardware with the old system, so this question isn't interesting anymore. I should maybe close it ... ;-)
    – Alfe
    Commented Apr 14, 2014 at 9:27
  • Did you find a solution ? 5 years later I got the same problem. A fuse (s3fs) partition mounted in a subdirectory of a NFS served directory cannot be seen by the nfs client (even with nfs4)...
    – Matthieu G
    Commented Apr 26, 2019 at 16:56
  • 1
    Did you use crossmnt? And does the fuse-side (the s3fs) allow being used by other users (there's a mount option for this, too). Don't forget that fuse is user-space (meant to be used by one single user) while nfs is multi-user.
    – Alfe
    Commented Apr 29, 2019 at 8:18

2 Answers 2

9

Most Linux distributions ship with a kernel that does not allow exporting a FUSE mounted file system using NFSv2 or NFSv3. Your choices are: 1. Implement your file system in kernel space. 2. Export it in NFSv4, which would require an fsid=

I myself use 2. In the below illustration, commands start with # are run on server, commands start with $ are run on client.

This is my server configuration, as you can see I am exporting a FUSE mount point:

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

Here is what I did on my client:

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

To verify that your failure is caused by exporting fuse in NFS v2/v3, export that mount point specificly without NFS v4 (fsid), and see if you get an error:

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

If on the server you export the mount point umounted, and mount it with fuse later, you should see in your log if you attempt to use nfs client:

# 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

by default exporting submounts over nfs is turned off. The recommended course of action is to also export the submount and have the client mount it as well.

2
  • Yes, I know, but as I wrote I tried various combinations of the mount options which should allow exporting the contents of submounts. In fact, with plain mounted ISO images this works flawlessly. Only with my FUSE it fails. And I cannot mount that FUSE on the client because that host is so old it does not support FUSE. The whole idea of that FUSE-via-NFS is just to allow the client to access the features of that FUSE it cannot run itself.
    – Alfe
    Commented Dec 2, 2013 at 8:50
  • You need to export /exports/example/mount and mount it from the client.
    – hildred
    Commented Dec 2, 2013 at 8:55

You must log in to answer this question.

Not the answer you're looking for? Browse other questions tagged .