linux搭建nfs网路文件系统

NFS(网络文件系统)服 务可以将远程 Linux 系统上的文件共享资源挂载到本地主机的目录上,从而使得本地主机(Linux 客户端)基于 TCP/IP 协议,像使用本地主机上的资源那样读写远程 Linux 系统上的共享文件,NFS适用于linux系统之间文件共享服务。

NFS实现原理:

NFS服务器启动后,都会开启对客户端连接对应的端口号,端口号的范围是1-1024但是每次启动NFS服务器后,服务器端口号都各不相同,为了确保每次客户端都能正确连接到NFS服务器端,NFS通过一个远程过程调用(Remote Procedure Call,RPC)的协议来协助NFS服务器完成连接,程序可以使用这种协议向网络中的另一台计算机上的程序请求服务,在NFS中,RPC最主要的功能就是指定并监控NFS守护进程对应的端口号,并将端口信息通知给客户端,让客户端可以连接到正确的端口上来,需要注意的是:远程挂在NFS服务器的本地主机也需要同步启用RPC协议,大致流程如下:

  • 首先服务器端启动RPC服务,并开启111端口
  • 服务器端启动NFS服务,并向RPC注册端口信息
  • 客户端启动RPC(portmap服务),向服务端的RPC(portmap)服务请求服务端的NFS端口
  • 服务端的RPC(portmap)服务反馈NFS端口信息给客户端
  • 客户端通过获取的NFS端口来建立和服务端的NFS连接并进行数据的传输。

上面的过程可以理解为tcp\ip的三次握手

搭建步骤:

首先在nfs服务端查看系统中是否安装了nfs,执行命令,rpm -qa | grep nfs,如果没有安装那么执行命令yum -y install nfs-utils进行安装,如图:

由于NFS 服务进行文件共享之前,需要使用 RPC(Remote Procedure Call,远程过程调用)服务将 NFS 服务器的 IP 地址和端口号等信息发送给客户端 ,因此还需要安装rpc,执行命令yum -y install rpcbind,如图:

编辑NFS配置文件,vi /etc/exports 添加内容如下:

上述配置文件中表示将/data/guan目录共享给5.144,并且5.144机器具有读写权限,并将数据写入内存以及硬盘,映射为匿名用户。

如果是共享给一个ip段,可直接写成10.88.5.0/24即可,如果要授权给多个机器挂载,只需要在下面新增一行配置命令即可,并指定其他机器IP。

接下来启动nfs以及rpc服务程序,执行命令如下:

systemctl start nfs

systemctl start rpcbind

启动后防火墙通过111、2049端口,如图:

注意:在配置完/etc/exports后,也可以通过exportfs -av让配置即时生效

接下来配置nfs客户端:

NFS客户端也需要安装nfs-utls和rpcbind才能正常使用(默认的Linux系统都已安装,如果未安装自行安装即可)

在客户端执行命令showmount -e 10.88.5.31可以看到NFS服务端共享信息,如果没有showmount可直接执行yum -y install showmount安装即可,如图:

在客户端创建一个挂载目录,然后将服务端目录挂载过来,执行命令如下:

mkdir -p /data/guan

mount -t nfs 10.88.5.31:/data/guan /data/guan

然后将挂载信息写入到/etc/fstab文件中,如图:

NFS配置文件参数说明:

  1. ro : 只读
  2. rw : 读写
  3. root_squash : 当 NFS 客户端以 root 管理员访问时,映射为 NFS 服务器的匿名用户
  4. no_root_squash : 当 NFS 客户端以 root 管理员访问时,映射为 NFS 服务器的 root 管理员
  5. all_squash : 无论 NFS 客户端使用什么账户访问,均映射为 NFS 服务器的匿名用户
  6. sync : 同时将数据写入到内存与硬盘中,保证不丢失数据
  7. async : 优先将数据保存到内存,然后再写入硬盘;这样效率更高,但可能会丢 失数据

标签