Using mirror mounts to get a better /net
By user12625760 on May 21, 2008
One problem with the automounter is that when you use the /net mount points to mount a server if the admin on that server adds a share then you client won't see that share until the automounter timesout the mount. This obviously requires that the mounts are unused which for a large nfs server could never happen.
So given an NFS server host called sa64-zfs-gmp03.eu which is sharing a directory /newpool/cjg on a client you can do:
# ls /net/sa64-zfs-gmp03.eu/newpool cjg # ls /net/sa64-zfs-gmp03.eu/newpool/cjg SPImage ipmiLog ppcenv sel.bin tmp SPValueAdd mcCpu0Core0Log processLog summaryLog evLog mcCpu1Core0Log prsLog swLog hwLog mcCpu2Core0Log pstore tdulog.tar # cd /net/sa64-zfs-gmp03.eu/newpool/cjg # ls SPImage ipmiLog ppcenv sel.bin tmp SPValueAdd mcCpu0Core0Log processLog summaryLog evLog mcCpu1Core0Log prsLog swLog hwLog mcCpu2Core0Log pstore tdulog.tar
However if at this point on the server you create and share a new file system:
# zfs create -o sharenfs=rw newpool/cjg2 # share -@newpool/cjg /newpool/cjg rw "" -@newpool/cjg2 /newpool/cjg2 rw "" # echo foo > /newpool/cjg2/file #
You can't now directly access it on the client:
# ls /net/sa64-zfs-gmp03.eu/newpool/cjg2 /net/sa64-zfs-gmp03.eu/newpool/cjg2: No such file or directory #
Now we all know you can work around this by using aliases for the server or even different capitalization:
# ls /net/SA64-zfs-gmp03.eu/newpool/cjg2 file #
however lots of users just won't buy that and I don't blame them.
With the advent or mirror mounts to NFSv4 you can do a lot better and there is an RFE (4107375) for the automounter to do this for you, which looks like it would be simple on a client that can do mirror mounts but until that is done here is a work-around. Create a file “/etc/auto_mirror “that contains this line:
Then add this line to auto_master:
/mirror auto_mirror -nosuid,nobrowse,vers=4
or add a new key to an existing automount table:
: s4u-nv-gmp03.eu TS 50 $; nismatch mirror auto_share mirror / -fstype=autofs,nosuid,nobrowse auto_mirror.org_dir.cte.sun.com. : s4u-nv-gmp03.eu TS 51 $;
Now if we do the same test this time replacing the “/net” path with the “/mirror” path you get:
# ls /mirror/sa64-zfs-gmp03.eu/newpool/ cjg # ls /mirror/sa64-zfs-gmp03.eu/newpool/cjg SPImage ipmiLog ppcenv sel.bin tmp SPValueAdd mcCpu0Core0Log processLog summaryLog evLog mcCpu1Core0Log prsLog swLog hwLog mcCpu2Core0Log pstore tdulog.tar # (cd /mirror/sa64-zfs-gmp03.eu/newpool/cjg ; sleep 1000000) &  10455 # ls /mirror/sa64-zfs-gmp03.eu/newpool/cjg2 /mirror/sa64-zfs-gmp03.eu/newpool/cjg2: No such file or directory
Here I created the new file system on the server and put the file in.
# ls /mirror/sa64-zfs-gmp03.eu/newpool/cjg2 file #
If you are an entirely NFSv4 shop then you could change the “/net” mount point to use this.