Docker安装nfs服务器端(测试已失败,不建议用docker方式部署nfs和服务端和客户端):
Docker搭建nfs失败并放弃,原因有3:
- 容器内mount的文件夹不能映射到宿主机。
- 111端口被rpcbind占用,不能在同一台服务器同时部署nfs的服务器和客户端。
docker run -d --name nfs --privileged --restart=always \ -h nfsserver \ -v /datadisk/share/nfsshare/:/nfsshare/ \ -v /datadisk/share/nfs:/nfs \ -v /mnt/share:/mnt/nfs1 \ -v /mnt/nfs:/mnt/nfs \ -e NFS_EXPORT_DIR_1=/share \ -e NFS_EXPORT_DOMAIN_1=\* \ -e NFS_EXPORT_OPTIONS_1=rw,insecure,no_subtree_check,no_root_squash,fsid=1 \ -e NFS_EXPORT_DIR_2=/nfs \ -e NFS_EXPORT_DOMAIN_2=\* \ -e NFS_EXPORT_OPTIONS_2=rw,insecure,no_subtree_check,no_root_squash,fsid=2 \ -e NFS_SERVER_HOST=127.0.0.1 \ -e NFS_CLIENT_DIR_1=/mnt/share \ -e NFS_CLIENT_DIR_2=/mnt/nfs \ -p 111:111 -p 111:111/udp \ -p 2049:2049 -p 2049:2049/udp \ -p 32765:32765 -p 32765:32765/udp \ -p 32766:32766 -p 32766:32766/udp \ -p 32767:32767 -p 32767:32767/udp \ runqin/nfs:latest # NFS_SERVER_HOST、NFS_CLIENT_DIR_N为客户端设置,可选填
直接安装nfs服务器端:
# rpcbind已包含在nfs-kernel-server或nfs-common或nfs-utils中,可省略 apt install rpcbind nfs-kernel-server # 设置共享目录及权限 vi /etc/exports /share *(rw,insecure,no_subtree_check,no_root_squash,fsid=1) /download *(ro,insecure,no_subtree_check,no_root_squash,fsid=2) ^x # 创建物理共享目录 mkdir -p /datadisk/share/nfs /datadisk/share/download # 创建软连接,经测试确认nfs支持软连接 ln -s /datadisk/share/nfs /share && ln -s /datadisk/share/download /download # 重启服务 systemctl restart rpcbind nfs-server # 关闭服务,注意不加rpcbind.socke会报错 systemctl stop rpcbind.socket rpcbind nfs-server # 检查2049、111的TCP和UDP端口,、rpc.mountd、rpcbind是否已开启 netstat -nlutp
关于共享文件夹的权限问题,使用no_root_squash可以解决:
no_root_squash:登入 NFS 主机使用分享目录的使用者,如果是 root 的话,那么对于这个分享的目录来说,他就具有 root 的权限!这个项目『极不安全』,不建议使用!
root_squash:在登入 NFS 主机使用分享之目录的使用者如果是 root 时,那么这个使用者的权限将被压缩成为匿名使用者,通常他的 UID 与 GID 都会变成 nobody 那个系统账号的身份。
安装nfs客户端:
# For deepin, rpcbind is included apt install nfs-common # For centos yum install rpcbind nfs-utils
客户端装载nfs文件夹:
# 显示某个IP可加载nfs的路径 showmount -e 127.0.0.1 # 执行结果 Export list for 127.0.0.1: /nfs * # 创建被mount的目录 mkdir -p /mnt/share /mnt/download # mount nfs mount -v -t nfs -o nfsvers=3,nolock,proto=udp,port=2049 127.0.0.1:/share /mnt/share # 结果显示 mount.nfs: timeout set for Fri Sep 13 12:11:11 2019 mount.nfs: trying text-based options 'nfsvers=3,nolock,proto=udp,port=2049,addr=127.0.0.1' mount.nfs: prog 100005, trying vers=3, prot=17 mount.nfs: trying 127.0.0.1 prog 100005 vers 3 prot UDP port 55459 # 测试文件写权限 touch /share/test.txt && rm /mnt/share/test.txt # 取消装载nfs,注意如果nfs服务关闭,会卡死,这里就要加-f参数进行强制umount umount /mnt/share # 强制卸载 umount -f /mnt/share
客户端实现开机自动挂载
echo -e "127.0.0.1:/share /mnt/share nfs defaults 0 0" >>/etc/fstab ^x # 或 vi /etc/rc.local mount -v -t nfs -o nfsvers=3,nolock,proto=udp,port=2049 127.0.0.1:/share /mnt/share ^x
https://blog.csdn.net/u013010240/article/details/83618770
https://blog.csdn.net/aiwangtingyun/article/details/79420845
http://lizhuangs.github.io/2019/05/12/nfs安装/ \
来源:51CTO
作者:ffychina
链接:https://blog.csdn.net/ffychina/article/details/100801825