在遵循《无盘拱门》指南时,我偶然发现了这个问题,这确实使我放慢了速度。我将在这里分享我的发现,因为我很好奇这是否对其他人也有用。
根据无盘指南,我在回环映像中具有无盘客户端的根文件系统(我需要导出的实际数据),该映像已安装在/srv/des1
:
/srv/des1.img on /srv/des1 type btrfs (rw,relatime,compress=lzo,discard,space_cache)
然后,我创建了一个/nfs/des1
安装点,然后运行该安装,并确认可以看到所有内容:
# mkdir -p /nfs/des1
# mount --bind /srv/des1 /nfs/des1
# ls -l /nfs/des1
bin boot dev usr #[SNIP]
参考Arch NFS指南,然后将以下内容放入/etc/exports
服务器中:
/nfs/ *(rw,no_root_squash,no_subtree_check,fsid=root)
/nfs/des1/ *{rw,no_root_squash,no_subtree_check,nohide)
然后,我exportfs -rav
在服务器上运行以应用这些更改。
但是mount server:/des1 /mnt/tmp
,当我希望无盘根文件系统在那里时,我随后使用以下命令将共享装载到测试客户机上:只是发现它是一个空目录。
在此阶段,我几乎尝试了所有操作,直到某些内容使我进入exports
手册页中的该选项:
crossmnt
This option is similar to nohide but it makes it possible for clients
to move from the filesystem marked with crossmnt to exported filesystems
mounted on it. Thus when a child filesystem "B" is mounted on a parent "A",
setting crossmnt on "A" has the same effect as setting "nohide" on B.
因此,尝试了所有其他方法之后,我将其交换了一下,因此/etc/exports
看起来像这样:
/nfs/ *(rw,no_root_squash,no_subtree_check,fsid=root,crossmnt)
/nfs/des1/ *{rw,no_root_squash,no_subtree_check)
阅读了手册页条目后,您会认为这将与先前的代码具有相同的效果,但是当我exportfs -rav
再次运行以注册更改时,然后尝试从客户端重新挂载并成功了!
/srv/foo --> /bar/foo
?