14.1 NFS介绍



NFS介绍

• NFS是Network File System的缩写

• NFS最早由Sun公司开发,分2,3,4三个版本,2和3由Sun起草开发,4.0开始Netapp公司参与并主导开发,最新为4.1版本

• NFS数据传输基于RPC协议,RPC为Remote Procedure Call的简写。



NFS应用场景

A,B,C三台机器上需要保证被访问到的文件是一样的,A共享数据出来,B和C分别去挂载A共享的数据目录,从而B和C访问到的数据和A上的一致



NFS架构

14.1 NFS介绍 14.2 NFS服务端安装配置 14.3 NFS配置选项_服务端



NFS原理图

14.1 NFS介绍 14.2 NFS服务端安装配置 14.3 NFS配置选项_客户端_02



14.2 NFS服务端安装配置

准备两台机器,lem-01(192.168.88.5)作为服务端,lem-02(192.168.88.10)作为客户端。



服务端安装nfs-utils和rpcbind

[root@linux-5 ~]# yum install -y nfs-utils rpcbind



客户端安装nfs-utils

[root@linux-10 ~]# yum install -y nfs-utils

其实只要安装了nfs-utils,就会自动装上rpcbind包。



服务端编辑/etc/exports文件

vim /etc/exports //加入如下内容
/home/nfstestdir 192.168.88.0/24(rw,sync,all_squash,anonuid=1000,anongid=1000)



创建指定的分享目录并赋予权限

mkdir /home/nfstestdir
chmod 777 /home/nfstestdir



服务端启动nfs服务

systemctl start nfs

在启动nfs服务的同时,系统也会自动启动rpcbind的服务。



服务端开机自动启动nfs服务

[root@linux-5 ~]# systemctl enable nfs
Created symlink from /etc/systemd/system/multi-user.target.wants/nfs-server.service to /usr/lib/systemd/system/nfs-server.service.



14.3 NFS配置选项



NFS配置选项

• rw 读写

• ro 只读

• sync 同步模式,内存数据实时写入磁盘

• async 非同步模式

• no_root_squash 客户端挂载NFS共享目录后,root用户不受约束,权限很大

• root_squash 与上面选项相对,客户端上的root用户收到约束,被限定成某个普通用户

• all_squash 客户端上所有用户在使用NFS共享目录时都被限定为一个普通用户

• anonuid/anongid 和上面几个选项搭配使用,定义被限定用户的uid和gid



NFS客户端挂载



在客户端查看权限

[root@linux-10 ~]# showmount -e 192.168.88.5
clnt_create: RPC: Port mapper failure - Unable to receive: errno 113 (No route to host)

这时服务出现了报错,由于NFS服务的特性,需要将客户端与服务端的防火墙以及SElinux关闭才可以正常使用。

[root@linux-10 ~]# showmount -e 192.168.88.5
Export list for 192.168.88.5:
/home/nfstestdir 192.168.88.0/24

关闭防火墙后可以正常查看权限,可以看到远程服务端192.168.88.5共享的目录为/home/nfstestdir,针对192.168.88.0/24IP段开放。



客户端挂载

[root@linux-10 ~]# mount -t nfs 192.168.88.5:/home/nfstestdir /mnt



查看挂载点

[root@linux-10 ~]# df -h
文件系统 容量 已用 可用 已用% 挂载点
/dev/sda3 26G 3.5G 23G 14% /
devtmpfs 903M 0 903M 0% /dev
tmpfs 912M 0 912M 0% /dev/shm
tmpfs 912M 8.6M 904M 1% /run
tmpfs 912M 0 912M 0% /sys/fs/cgroup
/dev/sda1 197M 113M 85M 58% /boot
tmpfs 183M 0 183M 0% /run/user/0
192.168.88.5:/home/nfstestdir 26G 4.3G 22G 17% /mnt

从显示结果可以发现已经成功在客户端挂载了nfs。



测试文件共享

在客户端创建一个文件,并在服务端查询是否同步。

[root@linux-10 ~]# cd /mnt/
[root@linux-10 mnt]# touch lemtest.txt
[root@linux-10 mnt]# ls -l
总用量 0
-rw-r--r--. 1 mysql mysql 0 6月 28 12:56 lemtest.txt
[root@linux-5 ~]# ls -l /home/nfstestdir/
总用量 0
-rw-r--r--. 1 user1 user1 0 6月 28 12:56 lemtest.txt
[root@linux-5 ~]#

从结果可以看到,文件已成功同步,这里二者属组和属主不同的原因是在配置服务端时限制了uid和gid的值为1000,两台机器上1000所对应的用户不同,因此属组和属主也不相同。