NFS介绍

  • NFS是 Network File System 的缩写,即网络文件系统
  • NFS最早由Sun公司开发,分2,3,4三个版本,2和3由Sun起草开发,4.0开始Netapp公司参与并主导开发
  • NFS数据传输基于RPC协议,RPC为Romote Procedure Call的简写
  • NFS的应用场景:A,B,C三台机器上需要保证被访问到的文件是一样的,A共享数据出来,B和C分别去挂载A共享的数据目录,从而B和C访问到的数据和A上的一致。

NFS架构图

NFS安装与配置使用-LMLPHP

NFS原理图

NFS安装与配置使用-LMLPHP

NFS服务端/客户端安装

服务端安装与配置

[root@test-a ~]# yum install -y nfs-utils rpcbind
[root@test-a ~]# vim /etc/exports
[root@test-a ~]# cat /etc/exports
/home/nfstestdir 192.168.77.0/24(rw,sync,all_squash,anonuid=1000,anongid=1000)

[root@test-a ~]# mkdir /home/nfstestdir
[root@test-a ~]# chmod 777 /home/nfstestdir
[root@test-a ~]# netstat -ntlp
Active Internet connections (only servers)
Proto Recv-Q Send-Q Local Address           Foreign Address         State       PID/Program name
tcp        0      0 127.0.0.1:25            0.0.0.0:*               LISTEN      2376/master
tcp        0      0 0.0.0.0:443             0.0.0.0:*               LISTEN      1714/nginx: master
tcp        0      0 0.0.0.0:111             0.0.0.0:*               LISTEN      1/systemd
tcp        0      0 0.0.0.0:80              0.0.0.0:*               LISTEN      1714/nginx: master
tcp        0      0 0.0.0.0:22              0.0.0.0:*               LISTEN      1206/sshd
tcp6       0      0 ::1:25                  :::*                    LISTEN      2376/master
tcp6       0      0 :::3306                 :::*                    LISTEN      2405/mysqld
tcp6       0      0 :::111                  :::*                    LISTEN      1/systemd
tcp6       0      0 :::22                   :::*                    LISTEN      1206/sshd

[root@test-a ~]# systemctl start nfs  # 启动nfs服务
[root@test-a ~]# ps aux | grep nfs
root      9022  0.0  0.0      0     0 ?        S<   01:59   0:00 [nfsd4]
root      9023  0.0  0.0      0     0 ?        S<   01:59   0:00 [nfsd4_callbacks]
root      9027  0.0  0.0      0     0 ?        S    01:59   0:00 [nfsd]
root      9028  0.0  0.0      0     0 ?        S    01:59   0:00 [nfsd]
root      9029  0.0  0.0      0     0 ?        S    01:59   0:00 [nfsd]
root      9030  0.0  0.0      0     0 ?        S    01:59   0:00 [nfsd]
root      9031  0.0  0.0      0     0 ?        S    01:59   0:00 [nfsd]
root      9032  0.0  0.0      0     0 ?        S    01:59   0:00 [nfsd]
root      9033  0.0  0.0      0     0 ?        S    01:59   0:00 [nfsd]
root      9034  0.0  0.0      0     0 ?        S    01:59   0:00 [nfsd]
root      9050  0.0  0.0 112704   972 pts/0    R+   01:59   0:00 grep --color=auto nfs

[root@test-a ~]# systemctl enable nfs # 允许nfs开机启动

客户端安装

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

NFS选项说明

测试

客户端

[root@centos0 ~]# showmount -e 192.168.77.134 # 看192.168.77.134这台机器上开启的nfs服务是否能访问,提示通信失败,同时关闭服务端和客户端的防火墙和SELinux
clnt_create: RPC: Port mapper failure - Unable to receive: errno 113 (No route to host)

[root@centos0 ~]# setenforce 0
[root@centos0 ~]# getenforce
Permissive
[root@centos0 ~]# systemctl stop firewalld
[root@centos0 ~]# showmount -e 192.168.77.134 # 都关闭后再次测试OK
showmount -e 192.168.77.134
Export list for 192.168.77.134:
/home/nfstestdir 192.168.77.0/24

# 挂载
[root@centos0 ~]# mount -t nfs 192.168.77.134:/home/nfstestdir /mnt/
[root@centos0 ~]# df -h
文件系统                         容量  已用  可用 已用% 挂载点
/dev/sda3                         26G  879M   25G    4% /
devtmpfs                         489M     0  489M    0% /dev
tmpfs                            494M     0  494M    0% /dev/shm
tmpfs                            494M   13M  481M    3% /run
tmpfs                            494M     0  494M    0% /sys/fs/cgroup
/dev/sda1                        197M   76M  122M   39% /boot
tmpfs                             99M     0   99M    0% /run/user/0
192.168.77.134:/home/nfstestdir   26G  9.4G   17G   37% /mnt
[root@centos0 ~]# cd /mnt/ # 进入挂载目录
[root@centos0 mnt]# ls
[root@centos0 mnt]# touch test.aaaa

服务端

# 关闭防火墙,SELinux
[root@test-a ~]# systemctl stop firewalld
[root@test-a ~]# setenforce 0
# 在客户端touch test.aaaa后查看
[root@test-a ~]# ls /home/nfstestdir/ -l
total 0
-rw-r--r--. 1 test03 grouptest01 0 Dec  9 02:45 test.aaaa
12-08 21:44