Ubuntu 18.04 系统上有2个6T的硬盘,分别挂载到/home和/usr下。现在要为这两个盘做nfs共享,但是nfs共享只能共享一个文件夹,如果要共享第二个文件夹,那么第二个文件夹必须是第一个文件夹的子文件夹。
这样,我要么只能共享
/home/data
,要么只能共享
/usr/data
。
这时候就开始脑洞了:
建立一个软连接
/usr/nfs-share
到
/home/data/nfs-share
,然后共享
/home/data/nfs-share
。实测是客户端无法挂载,提示文件不存在,所以该方案不可行。
将
/usr
所在的硬盘挂载到
/home/data/nfs-share
,实测该方案成功,客户端可正常挂载
/nfs-share
。但是存在很大的问题,这样等于客户端可以访问到服务器
/usr
下的所有文件,想想就恐怖噢,所以该方案不可行。
既然方案二可以通,那不就有方案了嘛,把
/usr
所在的硬盘挂载到
/home/data/nfs-share
,然后卸载
/usr
,这样
/usr
就隶属于根目录,而不是独立的硬盘了,再把
/home/data/nfs-share
里面的文件用
cp -rp
命令复制回去就可以了呗。说干就干,
sudo umount /usr
,
sudo cp -rp /home/data/nfs-share/* /usr
,完蛋,
command not found
,这下才想起来坏事了。所有的命令都是存放在
/usr/bin
和
/usr/sbin
里面的,你把
/usr
搞掉了,命令当然就没有了。好在,我还只是用命令行卸载了,没有修改
/etc/fstab
文件,那重启系统应该就解决了吧。太天真了嘛,所有命令都用不了,当然也不能重启拉。只能物理重启了。
后记:
最终方案是使用启动盘做方案3的操作,而不是直接在原系统里面做方案3的操作。
另一种可能:
将不同驱动器映射到docker容器的一个目录和该目录的子目录,然后在docker容器里面做nfs共享,简直完美。