Linux to Linux 的文件共享服务,默认端口 2049
安装与启用
- yum 包名: nfs-utils (含客户端)
- apt 包名: nfs-kernel-server
- systemctl 服务名:nfs-server ( RHEL 5 6 需要开启 rpcbind 服务支持 )
-
RHEL 系配置
防火墙
firewall-cmd --permanent --add-service=nfsfirewall-cmd --reload
共享目录配置文件
/etc/exports
<输出目录> [客户端1 选项(访问权限,用户映射,其他)] [客户端2 选项(访问权限,用户映射,其他)]
客户端来源指定的几种方式
指定ip地址的主机:192.168.0.200
- 指定子网中的所有主机:192.168.*
- 指定域名的主机:david.bsmart.cn
- 指定域中的所有主机:*.bsmart.cn
- 所有主机:*
选项参数
| 参数 | 作用 | | —- | —- | | ro | 只读 | | rw | 读写 | | root_squash | 当NFS客户端以root管理员访问时,映射为NFS服务器的匿名用户 | | no_root_squash | 当NFS客户端以root管理员访问时,映射为NFS服务器的root管理员 | | all_squash | 无论NFS客户端使用什么账户访问,均映射为NFS服务器的匿名用户 | | sync | 同时将数据写入到内存与硬盘中,保证不丢失数据 | | async | 优先将数据保存到内存,然后再写入硬盘;这样效率更高,但可能会丢失数据 | | secure | 限制客户端只能从小于1024的tcp/ip端口连接nfs服务器(默认设置) | | insecure | 允许客户端从大于1024的tcp/ip端口连接服务器 | | wdelay | 检查是否有相关的写操作,如果有则将这些写操作一起执行,这样可以提高效率(默认设置) | | no_wdelay | 若有写操作则立即执行,应与sync配合使用 | | subtree | 若输出目录是一个子目录,则nfs服务器将检查其父目录的权限(默认设置) | | no_subtree | 即使输出目录是一个子目录,nfs服务器也不检查其父目录的权限,这样可以提高效率 |
快速配置
mkdir /mnt/nfs
chmod -R 777 /mnt/nfs
lan_ip=$(hostname -I | awk '{print $1}')
src_ip=${lan_ip%.*}
echo "# nfs for $src_ip" >> /etc/exports
sed -i "$ a /mnt/data/nfs ${src_ip}.*(rw,sync,no_root_squash,insecure,no_subtree)" /etc/exports
systemctl restart nfs-server
systemctl enable nfs-server
查看已生效的配置
cat /var/lib/nfs/etab
查看哪些客户端正在挂载
cat /var/lib/nfs/rmtab
客户端配置
showmount 命令
| 参数 | 作用 |
|---|---|
| -e IP | 显示NFS服务器的共享列表 |
| -a | 显示本机挂载的文件资源的情况NFS资源的情况 |
| -v | 显示版本号 |
mkdir /mnt/data/nfs_a
sed -i "$ a 192.168.1.70:/mnt/data/nfs /mnt/data/nfs_a nfs defaults 0 0" /etc/fstab
mount -a
