一、NFS介绍
NFS(Network File System)即网络文件系统,又称为网络文件共享服务。能通过网络让服务器之间共享目录或文件。必须和RPC共同使用,而且只兼容类UNIX系统。
NFS分为服务端和客户端。服务端提供共享目录或文件,客户端对服务端共享的目录或文件挂载后,就可以读取到服务端提供的文件或目录,在客户端看来就像访问本地一样。
RPC,远程过程调用协议。可以通过网络从远程主机程序上请求服务,而不需要了解底层网络技术。最重要的功能是远程连接、端口注册。使用111端口监听客户请求。在CentOS 6.5以后更名为port mapper。
二、NFS工作原理
NFS服务端和客户端之间通过随机选择端口来传输数据,NFS服务端利用RPC协议与客户端进行沟通决定使用的随机端口,然后利用这个端口来传输数据,使用的随机端口通常小于1024。RPC协议用来统一管理NFS的随机端口,其使用的端口默认为111。
通信过程:
1.客户端向服务端的rpc服务请求服务端的NFS端口
2.服务端的rpc服务返回NFS端口信息给客户端
3.客户端通过获取到的NFS端口建立和服务端的连接
4.服务端获取本地共享文件的信息
5.服务端通过NFS端口建立和客户端的连接
6.开始进行文件传输
三、安装NFS服务
需要准备两台服务器,一台为服务端,IP为192.168.227.130;一台为客户端,IP为192.168.227.131;
主要参数说明
参数 | 作用 |
ro | 只读 |
rw | 读写 |
root_squash | 当以root身份访问时,映射为NFS服务端的匿名用户 |
no_root_squash | 当以root身份访问时,映射为NFS服务端的root用户 |
all_squash | 无论使用什么账户访问,均映射为NFS服务端的匿名用户 |
sync | 同时将数据写入内存和硬盘中,保证不丢失数据 |
async | 先将数据写入内存,然后写入硬盘中,可能会造成数据丢失 |
1.NFS服务端的配置
(1)安装NFS服务
sudo dnf install -y nfs-utils
(2)创建共享目录/NFS
(3)设置权限,根据需求自行设定
(4)修改配置文件,配置文件为/etc/exports
/NFS 192.168.227.*(rw,sync,root_squash)
(5)启动RPC服务和NFS服务,并设置为开机自动启动
sudo systemctl restart rpcbind
sudo systemctl enable rpcbind
sudo systemctl restart nfs-server
sudo systemctl enable nfs-server
2.NFS客户端的配置
(1)安装NFS服务
sudo dnf install -y nfs-utils
(2)查看NFS服务端的共享目录
sudo showmount -e 192.168.227.130
(3)创建一个目录/nfs,用来挂载共享目录
(4)配置自动挂载文件/etc/fstab
sudo vi /etc/fstabl
192.168.227.130:/NFS /nfs nfs default 0 0
(5)挂载共享目录
sudo mount -a
(6)使用df -h查看是否挂载成功,如果挂载成功,在共享目录上进行读写操作确认权限是否充足
四、 报错
1. 报错编号:113
报错:clnt_create: RPC: Port mapper failure - unable to receive: errno 113 (No route to host)
描述:当服务端与客户端都安装并启动nfs后,在客户端查看共享目录时(执行showmout -e IP ),出现该错误。
解决方法:
(1)观察报错信息
由报错信息可知,该错误是“没有到主机的路由”,因此可能是由于防火墙未开放的原因。
(2)尝试开放防火墙
nfs所依赖的服务包括(nfs,rpc-bind,mountd),开放这三个服务。
在服务端执行如下命令:
firewall-cmd --add-service=nfs --permanent
firewall-cmd --add-service=rpc-bind --permanent
firewall-cmd --add-service=mountd --permanent
firewall-cmd --reload
(3)开放防火墙后,再次在客户端尝试查看共享目录,发现能够正常查看并挂载