• NFS 就是 Network File System 的缩写,最早是由 Sun 这家公司所发展出来的。 它最大的功能就是可以透过网络,让不同的机器、不同的操作系统、可以彼此分享个别的文件 (share files)。我们可以简单的将他看做是一个文件服务器 (file server) !这个 NFS 服务器可以让你的 PC 来将网络远程的 NFS 服务器分享的目录,挂载到本地端的机器当中, 在本地端的机器看起来,那个远程主机的目录就好像是自己的一个磁盘分区一样 (partition)!
  • RPC(Remote Procedure Call)——远程过程调用,它是一种通过网络从远程计算机程序上请求服务,而不需要了解底层网络技术的协议。RPC协议假定某些传输协议的存在,如TCP或UDP,为通信程序之间携带信息数据。在OSI网络通信模型中,RPC跨越了传输层和应用层。RPC使得开发包括网络分布式多程序在内的应用程序更加容易。NFS 服务器在启动的时候就得要向 RPC 注册,所以 NFS 服务器也是一种 RPC server 。

1、服务端和客户端必须软件nfs-utils,事实上在安装nfs-utils的同时,rpcbind作为依赖包被安装,因此无需再单独安装rpcbind。单独安装rpcbind时不会同时安装nfs-utils。

[root@Geeklp-NFS-Server ~]# yum -y install nfs-utils

2、启动服务端的nfs和rpcbind服务,并将其设置为开机启动(作为服务器,应保证服务在每次重启之后都能迅速提供服务)

[root@Geeklp-NFS-Server ~]# systemctl start nfs
[root@Geeklp-NFS-Server ~]# systemctl enable nfs
[root@Geeklp-NFS-Server ~]# systemctl status nfs
● nfs-server.service - NFS server and services
Loaded: loaded (/usr/lib/systemd/system/nfs-server.service; enabled; vendor preset: disabled)
Active: active (exited) since 四 2017-12-07 17:01:25 CST; 58s ago
[root@Geeklp-NFS-Server ~]# systemctl start rpcbind
[root@Geeklp-NFS-Server ~]# systemctl enable rpcbind
[root@Geeklp-NFS-Server ~]# systemctl status rpcbind
● rpcbind.service - RPC bind service
Loaded: loaded (/usr/lib/systemd/system/rpcbind.service; indirect; vendor preset: enabled)
Active: active (running) since 四 2017-12-07 17:01:25 CST; 3min 26s ago
Main PID: 35630 (rpcbind)
CGroup: /system.slice/rpcbind.service
└─35630 /sbin/rpcbind -w

3、在服务端创建共享目录。

[root@Geeklp-NFS-Server ~]# mkdir /nfs
chown nfsnobody:nfsnobody /nfs

4、修改服务端配置文件
修改服务端配置文件/etc/exports,增加如下一行:
/nfs 192.168.237.22/24(rw,sync)
5、依次重启服务端rpcbind、nfs服务

[root@Geeklp-NFS-Server ~]# systemctl restart rpcbind
[root@Geeklp-NFS-Server ~]# systemctl restart nfs

6、 配置服务端防火墙

systemctl stop firewalld
systemctl disable firewalld

7、启动客户端nfs服务(客户端可以不启动rpcbind服务),挂载服务端nfs目录。

[root@Geeklp-NFS-Client ~]# systemctl start nfs
[root@Geeklp-NFS-Client ~]# mount -t nfs 192.168.237.21:/nfs /mnt

8、测试。
在客户端查看一下挂载情况。

[root@Geeklp-NFS-Client mnt]# df -Th
文件系统 类型 容量 已用 可用 已用% 挂载点
/dev/mapper/centos-root xfs 8.3G 966M 7.4G 12% /
devtmpfs devtmpfs 478M 0 478M 0% /dev
tmpfs tmpfs 489M 0 489M 0% /dev/shm
tmpfs tmpfs 489M 6.8M 482M 2% /run
tmpfs tmpfs 489M 0 489M 0% /sys/fs/cgroup
/dev/sda1 xfs 247M 105M 142M 43% /boot
tmpfs tmpfs 98M 0 98M 0% /run/user/0
192.168.237.21:/nfs nfs4 14G 1.2G 13G 9% /mnt

正常挂载,无异常。
在服务端及客户端分别写入数据,发现只能在服务端对/nfs目录进行读写,而在客户端只能读取。因为都是使用root账户进行操作的,在客户端看到的root是指服务端的root而并非客户端的root。为了尽快使用、体验nfs服务,在服务端将/nfs目录的权限设置为7,此时就能愉快的体验nfs带来的乐趣了。但这并不严谨,不是我们想要达到的目标。