Linux NFS文件服务器实战

时间:2020-12-11 00:46:05

NFS是network file system的缩写,它最大的特点是可以通过网络,让不同的机器,不同的系统实现文件共享。

NFS客户端可以将NFS服务器共享的目录挂载在本地的文件系统中,访问目录就如同访问自己本地目录一样。

NFS工作原理

Linux NFS文件服务器实战

  1. 首先服务器端启动RPC服务,并开启111端口;启动NFS服务,并向RPC注册端口信息
  2. 客户端启动RPC(portmap服务),向服务端的RPC(portmap)服务请求服务端的NFS端口(由程序在NFS客户端发起存取文件的请求,客户端本地的RPC(rpcbind)服务会通过网络向NFS服务端的RPC的111端口发出文件存取功能的请求。)
  3. 服务端的RPC(portmap)服务反馈NFS端口信息给客户端。
  4. 客户端通过获取的NFS端口来建立和服务端的NFS连接并进行数据的传输。(客户端获取正确的端口,并与NFS daemon联机存取数据。)
  5. 存取数据成功后,返回前端访问程序,完成一次存取操作。

         NFS在文件传送或信息传送过程中依赖于RPC协议。RPC,远程过程调用 (Remote Procedure Call) 是能使客户端执行其他系统中程序的一种机制。NFS本身是没有提供信息传输的协议和功能的,但NFS却能让我们通过网络进行资料的分享,这是因为NFS使用了一些其它的传输协议。而这些传输协议用到这个RPC功能的。可以说NFS本身就是使用RPC的一个程序。或者说NFS也是一个RPC SERVER。所以只要用到NFS的地方都要启动RPC服务,不论是NFS SERVER或者NFS CLIENT。这样SERVER和CLIENT才能通过RPC来实现PROGRAM PORT的对应。可以这么理解RPC和NFS的关系:NFS是一个文件系统,而RPC是负责信息的传输。

        NFS的原理结构其实还是挺简单,NFS就是网络共享目录,就是共享文件.服务端共享,客户端挂载使用。挂载流程原理,就是上面提到的5个流程。NFS要向RPC去注册端口信息。NFS的端口也是随机获取的。

NFS安装部署

服务器和客户端关闭防火墙,安装nfs服务组件:

nfs服务端:192.168.1.1

nfs客户端:192.168.1.2

#关闭防火墙
systemctl stop firewalld && systemctl disable firewalld
#临时关闭selinux
setenforce 0
#永久关闭selinux
vim /etc/selinux/config
修改为SELINUX=disabled

#安装NFS服务组件(两台都需要装)
yum -y install nfs-utils

#服务端创建共享目录/share
mkdir -p /data/share

#配置服务端/etc/exports文件
vim /etc/exports
/data/share 192.168.1.2(ro,sync)

#启动nfs服务
systemctl start nfs

#启动rpcbind
systemctl start rpcbind

#重新读取NFS配置文件
exportfs -r

#查看共享详细信息
exportfs -v

#客户端查询NFS服务器
showmount -e 192.168.1.1

#客户端挂载nfs共享目录
mkdir /mnt/nfs -p
mount -t nfs 192.168.1.1:/data/share /mnt/nfs

exports文件详情

Linux NFS文件服务器实战


报错处理

卸载时报错:

umont.nfs4: /data/share device is busy

umont -l /data/share  强行接触挂载

或者使用

fuser -m /data/share 将会显示使用这个模块的pid

fuser -mk /data/share 将会直接kill那个pid

NFS知识扩展

Linux NFS文件服务器实战

RPC扩展

Linux NFS文件服务器实战