1. NFS理论基础
1.1. NFS服务介绍
1.1.1. 什么是NFS
NFS就是Network File System的缩写,它最大的功能就是可以通过网络,让不同的机器、不同的操作系统可以共享彼此的文件
1.1.2. NFS的文件传输
NFS这个服务器的端口开在2049,但由于文件系统非常复杂。因此NFS还有其他的程序去启动额外的端口,这些额外的用来传输数据的端口是随机选择的,是小于1024的端口;既然是随机的那么客户端又是如何知道NFS服务器端到底使用的是哪个端口呢?这时就需要通过远程过程调用(Remote Procedure Call,RPC)协议来实现了.RPC服务(portmap 或rpcbind服务)
1.1.3. 什么是RPC服务
RPC(Remote Procedure Call)即远程过程调用。RPC 最主要的功能就是在指定每个 NFS 功能所对应的 port number ,并且回报给客户端,让客户端可以连结到正确的port上去
1.2. NFS的通讯原理
由于NFS启用的功能相当多,所以对应的端口不固定,需要RPC来统一管理NFS端口,PRC最主要的功能就是指定每个NFS功能所对应的port number,并且通知客户端,让客户端可以连接到正常端口上去
1.2.1. RPC又是如何知道每个NFS功能的端口
首先当NFS启动后,就会随机的使用一些端口,然后NFS就会向RPC去注册这些端口,RPC就会记录下这些端口,并且RPC会开启111端口,等待客户端RPC的请求,如果客户端有请求,那么服务器端的RPC就会将之前记录的NFS端口信息告知客户端。如此客户端就会获取NFS服务器端的端口信息,就会以实际端口进行数据的传输了。
1.2.2. 什么是portmap?
功能:主要是把RPC程序号转化为Internet的端口号
内容解释:
1)首先服务器端启动RPC服务,并开启111端口
2)服务器端启动NFS服务,并向RPC注册端口信息
3)客户端启动RPC(portmap服务),向服务端的RPC(portmap)服务请求服务端的NFS端口
4)服务端的RPC(portmap)服务反馈NFS端口信息给客户端
1.3. NFS的优点和缺点
1.3.1. 优点
a.节省本地存储空间将常用的数据存放在一台服务器可以通过网络访问
b.简单容易上手
c.方便部署非常快速,维护十分简单
1.3.2. 缺点
a.局限性容易发生单点故障,及server机宕机了所有客户端都不能访问
b.在高并发下NFS效率/性能有限
c.客户端没用用户认证机制,且数据是通过明文传送,安全性一般(一般建议在局域网内使用)
d.NFS的数据是明文的,对数据完整性不做验证
e.多台机器挂载NFS服务器时,连接管理维护麻烦
实验一:
NFS-Server:
[root@localhost ~]# yum -y install nfs*
[root@localhost ~]# systemctl restart nfs-idmapd.service
[root@localhost ~]# systemctl restart nfs-server.service
[root@localhost ~]# systemctl status nfs-server.service
[root@localhost ~]# mkdir -p /test
[root@localhost ~]# chmod 777 /test
[root@localhost ~]# echo "/test *(rw,sync,no_root_squash)" >> /etc/exports
[root@localhost ~]# exportfs -r
[root@localhost ~]# showmount -e
Export list for localhost.localdomain:
/test *
NFS-Client:
[root@localhost ~]# yum -y install nfs*
[root@localhost ~]# showmount -e 192.168.5.4
Export list for 192.168.5.4:
/test *
[root@localhost ~]# mkdir -p /mount //创建挂载点
[root@localhost ~]# mount -t nfs 192.168.5.4:/test /mount //挂载点
[root@localhost ~]# df -Th //检查系统磁盘使用情况及挂载
文件系统 类型 容量 已用 可用 已用% 挂载点
devtmpfs devtmpfs 4.0M 0 4.0M 0% /dev
tmpfs tmpfs 369M 0 369M 0% /dev/shm
tmpfs tmpfs 148M 3.9M 144M 3% /run
/dev/sda3 xfs 17G 13G 4.8G 72% /
/dev/sda1 xfs 960M 256M 705M 27% /boot
tmpfs tmpfs 74M 0 74M 0% /run/user/0
/dev/loop0 iso9660 11G 11G 0 100% /mnt
192.168.5.4:/test nfs4 17G 13G 4.8G 72% /mount
[root@localhost ~]# cd /mount/
[root@localhost mount]# ls
[root@localhost mount]# touch 1.txt