因为NFS支持的功能相当多,而不同的功能会使用不同的程序来启动,每启动一个功能就会启用一些端口来传输数据。因此,NFS功能所对应的端口才无法固定,而是随机取用一些未被使用的小于1024的端口来作为传输使用。但如此一来就会造成客户端与服务端联机的困扰,因为客户端必须要知道服务器端的数据传输端口才能进行连接交互数据。为了解决上面的问题,我们就需要远程过程调用(RPC)服务。RPC最主要的功能就是记录NFS功能所对应的端口号,并且将该信息传递给NFS客户端,让客户端可以连接到正确的端口上去。那么RPC又是如何知道每个NFS的端口呢?这是因为当NFS服务启动时会随机取用数个端口,并主动向RPC服务注册取用相关端口信息,这样RPC服务就可以知道每个端口对应的NFS功能了,然后RPC服务使用固定的port 111来监听NFS客户端的请求,并将正确的NFS端口应答给NFS客户端,这样,就可以让NFS服务端和客户端连接起来传输数据了。在启动NFS Server之前,首先要启动RPC服务(rpcbind),否则NFS Server就无法向RPC服务注册;另外,如果RPC服务重新启动,原来已经注册好的NFS端口数据就会丢失,因此,此时RPC管理的NFS程序也需要重新启动以重新向RPC注册。特别注意:一般修改NFS配置文件后,是不需要重启NFS的,reload即可使修改/etc/exports生效
NFC Server端
rpm -qa|grep nfs-utils rpm -qa|grep rpcbind 2、如果没有安装,则需要安装 yum -y install rpcbind nfs-utils 3、启动rpcbind,并检查端口是否开启 systemctl start rpcbind netstat -lntp|grep 111 4、查看rpc信息,如果rpcbind没有启动,则会报错 rpcinfo -p localhost 5、启动NFS服务 systemctl start nfs 6、配置NFS 配置文件:/etc/exports 文件格式:NFS共享目录 客户端地址1(参数1,参数2...) 客户端地址2(参数1,参数2) 说明: NFS共享目录:为NFS服务端要共享的实际目录绝对路径,如(/heboan/data) 客户端地址 :可访问共享目录的客户端服务器地址,可以是单独的IP或域名,也可以为整个网段 参数集 : 对授权的客户端的访问权限设置 配置示例: 1、 /heboan/data 192.168.88.0/24(rw,sync) 2、 /heboan/ryan 192.168.88.1(ro) 3、 /home/ryan 192.168.88.0/24(rw,sync,all_squash,anonuid=2000,anongid=2000)
NFS Client端
实现多台客户端同时挂一台NFS Server时,无论从哪个客户端写入数据,其他客户端同样也可以进行读写
方案一:chmod -R 777 /heboan/data(服务端的共享目录)
说明:权限太大,不建议使用
方案二:chmod -R nfsnobody /heboan/data(服务端共享目录)
说明:默认情况下客户端在共享目录写入文件或目录时,属主、属组都是nfsnobody,并且所有客户端的nfsnobody的UID和GID
都是65534,而服务端共享目录选项的默认参数anonuid和anongid也是65534。通过cat /var/lib/nfs/etab可查看
NFS问题:umount:/heboan_c:device is busy解决办法
①可能当前目录就是挂载的heboan_c目录(/heboan_c)
解决办法:退出挂载的目录/heboan_c,再执行umount /mnt卸载
②比如nfs server挂了,nfs client会出现问题(df -h窗口会死掉)
解决办法:强制卸载 umount -lf /heboan_c