deepin安装nfs服务和客户端

Docker安装nfs服务器端(测试已失败,不建议用docker方式部署nfs和服务端和客户端):

Docker搭建nfs失败并放弃,原因有3:

  1. 容器内mount的文件夹不能映射到宿主机。
  2. 111端口被rpcbind占用,不能在同一台服务器同时部署nfs的服务器和客户端。
  3. docker-composer搞不定–privileged,执行mount失败。
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安装/ \

你可能感兴趣的:(deepin安装nfs服务和客户端)