ubuntu下安装NFS server
sudo apt install nfs-kernel-server -y
# 创建server端的共享文件夹
sudo mkdir -p /data/nfs
sudo chown gbxu:gbxu /data/nfs/gbxu
chmod 600 -R /data/nfs/gbxu/shared_ssh # .ssh只允许本用户有权限
sudo chown -R root:root /data/nfs/gbxu/shared_ssh # docker都是以root访问所以修改own为root
修改/etc/exports
,把文件夹用nfs暴露给其他机器(任何ip),all_squash让客户端的操作都被坍塌成匿名用户的操作,但是我们为了方便其他机器的docker访问nfs存放的shared_ssh,设置no_root_squash让root权限的用户不被坍塌。例如客户端机器的docker以root的权限直接访问。设置anon的uid和gid为server机器的$USER
(id
命令可查看),这样远程的所有操作就都是$USER的操作避免权限问题。
# example
/data/nfs *(rw,sync,no_subtree_check,no_root_squash,anonuid=1004,anongid=1004)
sudo exportfs -ra (重新加载配置)
showmount -e 192.168.1.40(查看共享的目录和允许访问的ip段)
NFS client
mkdir -p ~/data/nfs
# 将远程NFS文件夹映射到本地
sudo mount -t nfs 192.168.1.40:/data/nfs ~/data/nfs
# 因为之前server端给所有ip读写权限,所以可以读写了
# 设置开机自动挂载
vim /etc/fstab
#192.168.1.40:/data/nfs /home/gbxu/data/nfs nfs defaults 0 0
# 使修改生效
sudo mount -a
./gbxu_call_script.py "mkdir /data/DNN_Dataset; echo '192.168.1.40:/data/DNN_Dataset /data/DNN_Dataset nfs defaults 0 0'|sudo tee -a /etc/fstab && sudo mount -a"