Centos7和Centos8的NFS配置几乎是完全一样的
服务端
Centos7默认安装了rpcbind, nfs-utils, 其中rpcbind的服务默认是启用的, nfs-utils默认是禁用的, 需要将后者启用
# 检查 rpcbind
systemctl status rpcbind
systemctl is-enabled rpcbind
# 检查并启用 nfs-server
systemctl status nfs-server
systemctl is-enabled nfs-server
systemctl enable nfs-server
systemctl is-enabled nfs-server
systemctl start nfs-server
# 前往编辑exports
vi /etc/exports
# 重启两个服务
systemctl restart rpcbind
systemctl restart nfs-server
其中/etc/exports的内容, 表示将/data/uploads这个目录开放给192.168.12.*网段, 只读, 异步, root用户按匿名用户对待
/data/uploads 192.168.12.* (ro,async,root_squash)
参数说明
- ro 只读(read only)
- rw 读写(read write)
- sync 同时将数据写入到内存与硬盘中,保证不丢失数据
- async 优先将数据保存到内存,然后再写入硬盘,效率更高,但可能丢失数据
- root_squash 当NFS客户端以root管理员访问时,映射为NFS服务器匿名用户
- no_root_squash 当NFS客户端以root管理员访问时,映射为NFS服务器的root管理员
配置防火墙
默认Centos7没安装firewalld, 如果安装了并且是开机启动的, 需要在防火墙上添加规则. nfs服务不仅需要nfs server 还需要rpc-bind服务和mountd服务, 因为nfs服务需要向客户端广播地址和端口信息, nfs客户端需要使用mount对远程nfs服务器目录进行挂载.
# 查看服务状态
systemctl status firewalld
# 查看防火墙配置
firewall-cmd --zone=public --list-all
# 列出可用的服务
firewall-cmd --get-services
# 添加 nfs, rpc-bind, mountd
firewall-cmd --permanent --zone=internal --add-service=nfs
firewall-cmd --permanent --zone=internal --add-service=rpc-bind
firewall-cmd --permanent --zone=internal --add-service=mountd
firewall-cmd --reload
客户端
客户端为Centos7时, 默认也安装了nfs-utils, 可以直接通过showmount查看可用的nfs目录
showmount -e 192.168.12.84
建目录, 挂载
# 建目录
cd /mnt
mkdir nfs_uploads
# 挂载
mount -t nfs 192.168.12.84:/data/uploads nfs_uploads
加入fstab, 以便开机自动挂咋
vi /etc/fstab
# 加入以下内容, 内容开始
192.168.12.84:/data/uploads /mnt/nfs_uploads nfs defaults 0 0
# 内容结束