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原理图
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