NFS共享的教训

Ubuntu 18.04 系统上有2个6T的硬盘,分别挂载到/home和/usr下。现在要为这两个盘做nfs共享,但是nfs共享只能共享一个文件夹,如果要共享第二个文件夹,那么第二个文件夹必须是第一个文件夹的子文件夹。

这样,我要么只能共享/home/data,要么只能共享/usr/data

这时候就开始脑洞了:

  1. 建立一个软连接/usr/nfs-share/home/data/nfs-share,然后共享/home/data/nfs-share。实测是客户端无法挂载,提示文件不存在,所以该方案不可行。

  2. /usr所在的硬盘挂载到/home/data/nfs-share,实测该方案成功,客户端可正常挂载/nfs-share。但是存在很大的问题,这样等于客户端可以访问到服务器/usr下的所有文件,想想就恐怖噢,所以该方案不可行。

  3. 既然方案二可以通,那不就有方案了嘛,把/usr所在的硬盘挂载到/home/data/nfs-share,然后卸载/usr,这样/usr就隶属于根目录,而不是独立的硬盘了,再把/home/data/nfs-share里面的文件用cp -rp命令复制回去就可以了呗。说干就干,sudo umount /usrsudo cp -rp /home/data/nfs-share/* /usr,完蛋,command not found,这下才想起来坏事了。所有的命令都是存放在/usr/bin/usr/sbin里面的,你把/usr搞掉了,命令当然就没有了。好在,我还只是用命令行卸载了,没有修改/etc/fstab文件,那重启系统应该就解决了吧。太天真了嘛,所有命令都用不了,当然也不能重启拉。只能物理重启了。

后记:最终方案是使用启动盘做方案3的操作,而不是直接在原系统里面做方案3的操作。

另一种可能:将不同驱动器映射到docker容器的一个目录和该目录的子目录,然后在docker容器里面做nfs共享,简直完美。

0%