NFS介绍、NFS服务端安装配置、NFS配置选项
NFS介绍
其中 A、B、C 三台设备上所需的共享资源具有相同的配置。A节点发布数据后会被多个客户端同时挂载。这些客户端(如 B 和 C)即可像访问本地存储一样获取一致的数据副本。

NFS原理图:

NFS服务端安装配置
准备两台机器,一个做服务端,一个做客户端
服务器端:192.168.176.135 客户端:192.168.176.134
服务器端操作:
安装两个包 nfs-utils rpcbind
[root@shuai-01 ~]# yum install -y nfs-utils rpcbind
安装完后编辑export
[root@shuai-01 ~]# vim /etc/exports
加入下面内容
/home/nfstestdir 192.168.176.0/24(rw,sync,all_squash,anonuid=1000,anongid=1000)
字段理解
#/home/nfstestdir :需要共享挂载的目录
#192.168.8.0/24:共享网段的权限,也可以是IP
保存配置文件后,执行如下准备操作
[root@shuai-01 ~]# mkdir /home/nfstestdir //创建分享的目录
[root@shuai-01 ~]# chmod 777 /home/nfstestdir //共享目录设置777权限
#systemctl start nfs //启动nfs服务,rpcbind默认监听端口111
#systemctl enable rpcbind //设置开机启动
#systemctl enable nfs //开机启动nfs
客户端的配置
安装 nfs-utils
[root@shuai-02 ~]# yum install -y nfs-utils
//安装包
查看是否有权限连接
[root@shuai-02 ~]# showmount -e 192.168.176.135
Export list for 192.168.176.135:
/home/nfstestdir 192.168.176.0/24
错误:
[root@shuai-02 ~]# showmount -e 192.168.176.135
clnt_create: RPC: Port mapper failure - Unable to receive: errno 113 (No route to host)
如果所有配置都已完成,请注意可能的连接问题,请确保nfs服务已启用。为了进一步排查问题,请通过检查以下防火墙工具来确认:使用iptables进行端口转发管理、util/f Firewalld进行动态管理以及selinux用于细粒度的安全控制。
Export list for 192.168.176.135:
/home/nfstestdir 192.168.176.0/24
//服务器机的/home/nfstestdir目录,共享给了192.168.176.0/24网段
在客户机上挂载:
[root@shuai-02 ~]# mount -t nfs 192.168.176.135:/home/nfstestdir /mnt/
[root@shuai-02 ~]# df -h
文件系统 容量 已用 可用 已用% 挂载点
/dev/sda3 18G 1.1G 17G 6% /
devtmpfs 479M 0 479M 0% /dev
tmpfs 489M 0 489M 0% /dev/shm
tmpfs 489M 6.7M 482M 2% /run
tmpfs 489M 0 489M 0% /sys/fs/cgroup
/dev/sda1 197M 109M 88M 56% /boot
tmpfs 98M 0 98M 0% /run/user/0
192.168.176.135:/home/nfstestdir 18G 7.0G 11G 40% /mnt
客户机创建文件,指定为1000
[root@shuai-02 mnt]# touch test
[root@shuai-02 mnt]# ls -l
总用量 0
-rw-r--r--. 1 1000 1000 0 1月 21 21:00 test
-rw-r--r--. 1 1000 1000 0 1月 21 20:51 test.log
服务器机创建文件:
[root@shuai-01 mnt]# touch test.log
[root@shuai-01 ~]# ls -l /home/nfstestdir/
总用量 0
-rw-r--r--. 1 shuai shuai 0 1月 21 21:00 test
-rw-r--r--. 1 shuai shuai 0 1月 21 20:51 test.log
NFS配置选项
rw:读写;
ro :只读
sync:(同步)将数据同步写入内存缓冲区与磁盘中进行处理效率较低但能确保数据一致性;
async:(异步)先将数据暂存于内存缓冲区待必要时再进行磁盘操作;
all_squash:所有访问用户均被映射为匿名用户或系统指定用户(如/etc/exports文件定义的用户);
no_all_squash(默认):允许客户端用户与本地系统用户进行匹配若匹配成功则执行相应操作若无匹配则转为匿名用户或系统指定用户;
anonuid=1000,anongid=1000:设置匿名用户的ID信息为uid:1000 gid:1000;
no_root_squash 客户端挂载NFS服务后root用户的权限不受限制拥有较大的权限范围;
root_squash 与此相对应客户端root用户的权限受到严格限制仅能以特定普通用户身份运行
exports命令
该工具执行的服务器端操作具体包括...]
【该工具用于控制或维护当前NFS共享的文件系统的列表信息...
命令:exports
选项:
-a:全解压或全挂载
-r:解压
-u:解压指定目录
-v:列出共享目录
常用组合 exportfs -arv
修改服务器上的配置文件后无需重启即可通过执行此命令使更新生效。
请特别注意,在进行nfs服务重启操作之前必须首先将所有挂载点进行卸载操作;这可能导致程序运行异常。
NFS客户端问题
NFS 4版本的问题
将共享目录配置至客户端端后,在注册root账户或者普通账户的情况下,默认状态下新增文件均不会指定所属账户与存储位置
解决方法:
方法1:在客户端进行挂载时加上选项-o nfsvers=3
monunt -t nfs -o nfsvers=3 192.168.176.135:/tmp/ /mnt/
如果目录已经挂载,而又不想卸载,执行如下命令:
monunt -t nfs -o remount,nfsvers=3 192.168.176.135:/tmp/ /mnt/
方法2:客户端和服务端都需要
vim /etc/idmapd.conf
更换该配置文件中的Domain字段值为xxx.com(其中xxx.com为自定义域名),随后重新启动 rpcidmapd 服务;具体操作中,在CentOS 7环境中直接重新启动 rpcbind 服务。
