Skip to content

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.100nfs客户端
192.168.235.100nfs服务端

服务端配置

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

1000.png

客户端配置

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

1001.png

常见错误解决

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参数。