“这是我参与8月更文挑战的第1天,活动详情查看:8月更文挑战”
Linux服务端
安装
-
centos7自带了rpcbind,所以只需执行
yum -y install nfs-utils
当然,如果要执行
yum -y install nfs-utils rpcbind
同时安装nfs+rpc也没有问题。 -
验证是否安装成功
rpm -qa nfs-utils
-
查看当前nfs服务所支持的nfs的版本
cat /proc/fs/nfsd/versions
配置
-
创建一个共享目录
/data/share
(目录可自定义)并设置权限mkdir /data/share chmod -R 777 /data/share
-
配置编辑NFS默认的配置文件
/etc/exports
// 固定网段所有IP可挂载 echo "/data/nfs 172.18.30.*(rw,sync,no_root_squash)" >> /etc/exports // 固定网段固定IP区间可挂载 echo "/data/nfs 172.18.30.0/24(rw,sync,no_root_squash)" >> /etc/exports // 所有客户端可挂载 echo "/data/nfs *(rw,sync,no_root_squash)" >> /etc/exports
权限配置的说明:
- rw:可读写
- ro: 只读,但最终能不能读写,还是与文件系统的 rwx 及身份有关
- no_root_squash:当NFS客户端以root管理员访问时,映射为NFS服务器的root管理员
- root_squash: 当NFS客户端以root管理员访问时,映射为NFS服务器的匿名(nobody)用户
- all_squash: 不论登入 NFS 的使用者身份为何, 均被映射为匿名用户,通常就是 nobody(nfsnobody)
- insecure: 允许从客户端过来的非授权访问
- sync: 数据会同步写入到内存与硬盘中
- async: 数据会先暂存于内存当中,而非直接写入硬盘
- anonuid: 指定uid的值,此uid必须存在于/etc/passwd中
- anongid:指定gid的值
-
使nfs配置生效
exportfs -r
exportfs的参数说明:
- -a:全部mount 或unmount /etc/exports中的内容
- -r: Reexport all directories: 重新导出所有目录
- -u:umount目录
- -v: verbose,输出详情
-
查看当前配置为nfs共享的目录及其状态
exportfs -v
-
检查共享目录是否设置成功
showmount -e
启动&检查
- 启动 RPC 服务
// 启动rpc systemctl start rpcbind // 设置开机启动 systemctl enable rpcbind
- 启动 NFS 服务
// 启动nfs systemctl start nfs // 设置开机启动 systemctl enable nfs
rpcinfo -p
,如果显示rpc 服务器注册的端口列表(端口:111),则启动成功。
Windows & Linux 客户端
安装NFS
Linux
客户端上不需要启动nfs服务,只是为了使用showmount/mount工具
- 安装nfs
yum -y install nfs-utils
- 检测rpc服务
rpcinfo -p
- 查看服务器端可挂载目录
showmount -e 129.xxx.xx.139
Windows
挂载目录
Linux
- 将服务器端目录挂在到本地
mount -t nfs 129.xxx.xx.139:/data/share /data/share
- 验证:在服务器端
/data/share
路径下新建文件后去客户端挂载目录查看是否同步- 使用
df -hT
查看 Linux 系统上的文件系统磁盘使用情况,可以看到挂载盘
- 使用
自动挂载
客户端机器启动后能自动加载nfs文件系统:
把mount命令:例如:mount -t nfs 192.168.3.172:/data/share /data/share
写入到 /etc/rc.local
说明:有很多资料建议写入到
/etc/fstab
os启动时一般会先加载文件系统后启动网络,在没有网络时nfs是无法加载的,总是出错,所以还是建议放到/etc/rc.local中
Windows7
-
mount \\file-system-nas.com\data\share y:
自动挂载
参考=> windows自动挂载NFS文件系统
常见问题
RPC: Port mapper failure
错误提示:RPC:端口映射失败,
既然是端口的问题,那就放行端口。查看rpc正在运行的关于nfs的端口rpcinfo -p
;
// 防火墙上放行端口
firewall-cmd --zone=public --add-port=111/tcp --permanent
firewall-cmd --zone=public --add-port=20048/tcp --permanent
firewall-cmd --zone=public --add-port=111/udp --permanent
firewall-cmd --zone=public --add-port=20048/udp --permanent
// 重启防火墙
firewall-cmd --reload
// 查看防火墙public端口
firewall-cmd --zone=public --list-ports
windows 挂载报错 NET HELPMSG 53
NFS 服务器有一个在不安全模式下工作的选项(允许更高的传入端口号)。Windows NFS 客户端通常使用更高的端口号。您可以通过向共享添加一个选项来启用此选项 insecure
示例:/share *(insecure,rw)
其他命令
客户端查看nfs服务的版本:
nfsstat -c
服务端查看 nfs的版本
nfsstat -s
查看本地centos的版本:
cat /etc/redhat-release
去掉nfs共享
只需只需卸载命令即可,umount
用法如下
mount 挂载追加参数
通过执行man nfs
查看帮助文档,nfs版本不同,对应的挂载参数名不同
示例:mount -t nfs -o vers=4.1,proto=tcp,timeo=60 129.204.4.139:/data/share /data/share