I currently use Fedora, and in an effort to come around to trying to use ubuntu, i have hit the following issue. in my environment i use NFS over SSH via an autossh tunnel, to mount a shared tools directory across the whole environment ... On fedora this work fine. On ubuntu, not so much.
yes, from the command line - using the mount commad i can do the mount successfully, through the tunnel
Putting automount into debug mode (automount -f -v -d) the difference appreas to be that fedora tries to bind the mount (as it looks local as it is being served over the ssh tunnel, and when that fails it does a "normal" nfs mount ... as seen here
attempting to mount entry /opt/mynfsmount
lookup_mount: lookup(file): looking up /opt/mynfsmount
lookup_mount: lookup(file): /opt/mynfsmount -> -rw,soft,intr,rsize=8192,wsize=8192,suid,port=9999 localhost:/var/nfs/mynfsmount
parse_mount: parse(sun): expanded entry: -rw,soft,intr,rsize=8192,wsize=8192,suid,port=9999 localhost:/var/nfs/mynfsmount
parse_mount: parse(sun): gathered options: rw,soft,intr,rsize=8192,wsize=8192,suid,port=9999
parse_mount: parse(sun): dequote("localhost:/var/nfs/mynfsmount") -> localhost:/var/nfs/mynfsmount
parse_mount: parse(sun): core of entry: options=rw,soft,intr,rsize=8192,wsize=8192,suid,port=9999, loc=localhost:/var/nfs/mynfsmount
sun_mount: parse(sun): mounting root /opt/mynfsmount, mountpoint /opt/mynfsmount, what localhost:/var/nfs/mynfsmount, fstype nfs, options rw,soft,intr,rsize=8192,wsize=8192,suid,port=9999
mount(nfs): root=/opt/mynfsmount name=/opt/mynfsmount what=localhost:/var/nfs/mynfsmount, fstype=nfs, options=rw,soft,intr,rsize=8192,wsize=8192,suid,port=9999
mount(nfs): nfs options="rw,soft,intr,rsize=8192,wsize=8192,suid,port=9999", nobind=0, nosymlink=0, ro=0
mount_mount: mount(nfs): calling mkdir_path /opt/mynfsmount
mount_mount: mount(nfs): /opt/mynfsmount is local, attempt bind mount
mount_mount: mount(bind): calling mkdir_path /opt/mynfsmount
mount(bind): calling mount --bind -o defaults /var/nfs/mynfsmount /opt/mynfsmount
>> mount: /opt/mynfsmount: special device /var/nfs/mynfsmount does not exist.
mount(nfs): calling mount -t nfs -s -o rw,soft,intr,rsize=8192,wsize=8192,suid,port=9999 localhost:/var/nfs/mynfsmount /opt/mynfsmount
mount_mount: mount(nfs): mounted localhost:/var/nfs/mynfsmount on /opt/mynfsmount
dev_ioctl_send_ready: token = 13
mounted /opt/mynfsmountthe interesting bit being here ... where the bind mount fails and it does the "normal" mount ...
mount(bind): calling mount --bind -o defaults /var/nfs/mynfsmount /opt/mynfsmount
>> mount: /opt/mynfsmount: special device /var/nfs/mynfsmount does not exist.
mount(nfs): calling mount -t nfs -s -o rw,soft,intr,rsize=8192,wsize=8192,suid,port=9999 localhost:/var/nfs/mynfsmount /opt/mynfsmounton ubuntu ...
attempting to mount entry /opt/mynfsmount
lookup_mount: lookup(file): looking up /opt/mynfsmount
lookup_mount: lookup(file): /opt/mynfsmount -> -rw,ver=4.2,soft,intr,rsize=8192,wsize=8192,suid,port=9999 localhost:/var/nfs/mynfsmount
parse_mount: parse(sun): expanded entry: -rw,ver=4.2,soft,intr,rsize=8192,wsize=8192,suid,port=9999 localhost:/var/nfs/mynfsmount
parse_mount: parse(sun): gathered options: rw,ver=4.2,soft,intr,rsize=8192,wsize=8192,suid,port=9999
parse_mount: parse(sun): dequote("localhost:/var/nfs/mynfsmount") -> localhost:/var/nfs/mynfsmount
parse_mount: parse(sun): core of entry: options=rw,ver=4.2,soft,intr,rsize=8192,wsize=8192,suid,port=9999, loc=localhost:/var/nfs/mynfsmount
sun_mount: parse(sun): mounting root /opt/mynfsmount, mountpoint /opt/mynfsmount, what localhost:/var/nfs/mynfsmount, fstype nfs, options rw,ver=4.2,soft,intr,rsize=8192,wsize=8192,suid,port=9999
mount_mount: mount(nfs): root=/opt/mynfsmount name=/opt/mynfsmount what=localhost:/var/nfs/mynfsmount, fstype=nfs, options=rw,ver=4.2,soft,intr,rsize=8192,wsize=8192,suid,port=9999
mount_mount: mount(nfs): nfs options="rw,ver=4.2,soft,intr,rsize=8192,wsize=8192,suid,port=9999", nobind=0, nosymlink=0, ro=0
mount_mount: mount(nfs): calling mkdir_path /opt/mynfsmount
mount_mount: mount(nfs): /opt/mynfsmount is local, attempt bind mount
mount_mount: mount(bind): calling mkdir_path /opt/mynfsmount
mount_mount: mount(bind): calling mount --bind -o defaults /var/nfs/mynfsmount /opt/mynfsmount
>> mount: /opt/mynfsmount: special device /var/nfs/mynfsmount does not exist.
mount(nfs): nfs: mount failure localhost:/var/nfs/mynfsmount on /opt/mynfsmount
dev_ioctl_send_fail: token = 31
failed to mount /opt/mynfsmountwith the failure here, but no try of the normal mount
mount_mount: mount(bind): calling mount --bind -o defaults /var/nfs/mynfsmount /opt/mynfsmount >> mount: /opt/mynfsmount: special device /var/nfs/mynfsmount does not exist. mount(nfs): nfs: mount failure localhost:/var/nfs/mynfsmount on /opt/mynfsmount dev_ioctl_send_fail: token = 31 failed to mount /opt/mynfsmounti have looked at the config options, but cannot see any that seem to simply imply this behaviour, any help would be greatly appreciated.
Ubuntu -
Starting automounter version 5.1.5, master map /etc/auto.master
root@ubuntu:~# lsb_release -a
No LSB modules are available.
Distributor ID: Ubuntu
Description: Ubuntu 19.10
Release: 19.10
Codename: eoanFedora -
Starting automounter version 5.1.6-1.fc31, master map auto.master
cat /etc/redhat-release
Fedora release 31 (Thirty One)thanks in advance ... c
01 Answer
I found out how to do it, i didn't check the man pages well enough
man 5 auto.master
nobind This is an autofs specific option that is a pseudo mount option and so is given without a leading dash. It may be used either in the master map entry (so it effects all the map entries) or with individual map entries to prevent bind mounting of local NFS filesystems. For direct mount maps the option is only effective if specified on the first direct map entry and is applied to all direct mount maps in the master map. It is ignored if given on subsequent direct map entries. It may be used on individual map entries of both types. Preventing bind mounts of NFS file systems can no longer be done by using the "port=" option, the nobind option must be used instead.so the revised, working command line in /etc/auto.direct looks like this:
/opt/mynfsmount -rw,soft,intr,rsize=8192,wsize=8192,suid,port=9999,nobind,fstype=nfs4 localhost:/var/nfs/mynfsmountthe fstype=4 isn't required (but added in my testing), but the nobind is definitely required, and now it works.
hope this helps someone else!
c