Linux搭建NFS服务
nfs参数
- ro:目录只读
- rw:目录读写
- sync:将数据同步写入内存缓冲区与磁盘中,效率低,但可以保证数据的一致性
- async:将数据先保存在内存缓冲区中,必要时才写入磁盘
- all_squash:将远程访问的所有普通用户及所属组都映射为匿名用户或用户组(nfsnobody)
- no_all_squash:与all_squash取反(默认设置)
- root_squash:将root用户及所属组都映射为匿名用户或用户组(默认设置)
- no_root_squash:与rootsquash取反
- anonuid=xxx:将远程访问的所有用户都映射为匿名用户,并指定该用户为本地用户(UID=xxx)
- anongid=xxx:将远程访问的所有用户组都映射为匿名用户组账户
主机规划
| 节点IP | 作用 |
|---|---|
| 192.168.235.100 | nfs客户端 |
| 192.168.235.100 | nfs服务端 |
服务端配置
exports文件的格式
shell
nfs的主配置文件是/etc/exports,在此文件中,可以定义NFS系统的输出目录(即共享目录)、访问权限和允许访问的主机等参数。该文件默认为空,没有配置输出任何共享目录,这是基于安全性的考虑,如此即使系统启动了NFS服务也不会输出任何共享资源。
exports文件中每一行提供了一个共享目录的设置,其命令格式为:
<输出目录> [客户端1(选项1,选项2,...)] [客户端2(选项1,选项2,...)]客户端常用的指定方式
| 客户端 | 说明 |
|---|---|
| 192.168.235.100 | 指定IP地址的主机 |
| 192.168.235.0/24(或192.168.235.*) | 指定子网中的所有主机 |
| www.odboy.cn | 指定域名的主机 |
| *.odboy.cn | 指定odboy.cn域中的所有主机 |
| *(或缺省) | 所有主机 |
shell
yum -y install rpcbind nfs-utils gcc net-tools -y
systemctl start rpcbind
systemctl enable nfs
mkdir /data
echo '/data 192.168.235.0/24(rw,no_root_squash,sync,fsid=0)' > /etc/exports
#systemctl restart nfs
exportfs -rv
#rpcinfo -p
showmount -e 192.168.235.200
客户端配置
shell
yum install rpcbind -y
systemctl start rpcbind.service
cd ~
mkdir nfstest
mount -t nfs 192.168.235.200:/data nfstest强制卸载挂载
shell
umount -f ~/nfstest
常见错误解决
Stale NFS file handle的解决方法
text
首先用umount卸载当前目录,如果卸载不了使用umount -f /root/nfstest强制卸载,然后再重新挂载即可。touch: cannot touch ‘test2’: Permission denied nfs
text
这个是提醒你客户端挂载的nfs服务器的目录没有权限,你在nfs客户端给权限没用,要不就给nfs服务器目录777权限,这样显得啥,要不就配置文件里面如上加上no_root_squash参数。
