NFS 服务搭建
原理
- NFS服务器向RPC服务注册启用的端口
- 客户端向RPC请求NFS服务
- RPC返回给客户端可用的服务器及端口
- 客户端用获得的端口与相应的服务器通信
搭建
服务器端
1.相关软件安装
yum -y install nfs-utils rpcbind
2.首先关闭selinux,iptables
setenfore 0
systemctl stop firewalld
上面是临时关闭,永久关闭如下:
sed -ir 's/SELINUX=.*/SELINUX=disabled/g' /etc/selinux/config
source /etc/selinux/config
systemctl disable firewalld
3.编辑 /etc/exports 文件
假设将/var/nfs 共享给任意主机,允许读写,并将所有用户均压缩为nfsnobody
vim /etc/exports
/var/nfs *(rw,all_squash)
#目录 主机名(设置参数)
4.重启服务即可
systemctl restart nfs rpcbind
客户端
1.安装客户端工具 nfs-utils rpcbind
yum -y install nfs-utils rpcbind
2.查看指定IP服务器可共享文件列表
[root@node1 ~]# showmount -e 192.168.139.105
Export list for 192.168.139.105:
/var/nfs *
3.挂载nfs服务器共享出来的目录:
mount -t nfs 192.168.139.105:/var/nfs /var/nfs
4.根据需要写进/etc/fstab 进行开机自动挂载
vim /etc/fstab
192.168.139.105:/var/nfs /var/nfs bg,hard,intr 0 0
补充配置参数
编辑/etc/exports
主机名格式:
- 192.168.139.105 特定主机
- 192.168.139.0/24 特定网段
- 192.168.139.* 通配符指定
- * #任意主机
设置参数:
- ro 只读
- rw 读写
- sync 同步到硬盘才返回
- async 同步到内存缓冲区,硬盘空闲时再写入
- all_squash 所有用户都压缩成nfs匿名用户nfsnobady
- root_squash 只将root用户压缩成nfsnobody
- no_root_squash 只有root不压缩成nfsnobady
nfs客户端挂载选项
- fg/bg fg在前台挂载,bg在后台
- soft/hard soft在网络出现问题时将无法进行传输,客户端会一直尝试连接直到timeout然后报错,hard会一直等待服务器重新上线
- intr 配合hard使用,使用hard挂载时当出现timeout可以中断,避免nfs锁死
- rsize/wsize 读/写区块的大小
- proto=tcp/udp 指定传输协议