NFS介绍

网络文件系统(network files system)简称NFS是一种基于TCP传输协议的文件共享习通。
NFS的CS体系中的服务端启用协议将文件共享到网络上,然后允许本地NFS客户端通过网络挂载服务端共享的文件。
应用场景:
为web服务器作为视频,图片资源的服务器。域用户家目录服务器。内容文件存储服务器。

NFS部署

安装:
yum install nfs-utils -y
启动:
systemctl status rpcbind.server 确保rpc启动
systemctl start nfs 启动nfs
systemctl enable nfs 确保开机启动
验证:
systeam is-active nfs
配置共享文件
vim /etc/exports
共享格式: 共享目录绝对路径 授权的ip或网段(权限1,权限2)
权限说明

权限

用途

ro

只读

rw

读写访问

sync

客户端写入数据同步到服务器后才会返回

no_root_squash

客户端root用户具有完全的权限

root_squash

root用户权限被映射成服务端上的普通用户nobody

anonuid

指定匿名用户的UID

anongid

指定匿名用户的GID

NFS管理

通过exportfs对NFS进行管理
exportfs 管理NFS共享文件列表
-a 打开或取消所有目录共享
-o options 指定选项
-r 重读
-v 详细
通过showmount检查是否共享成果

NFS原理

nfs读写小文件性能慢 nfs 文件_nfs读写小文件性能慢


当NFS服务器设置好一个共享目录,且设置好授权ip以及权限后,有访问权的客户机就可以将此目录挂载到自己某个挂载点。

nfs读写小文件性能慢 nfs 文件_linux_02


既然NS的客户及服务器是基于TCP会话建立访问的,那么两者能够互访的前提是知道互相的IP和程序的端口号。

对于IP,服务器是设置对某一IP网段授权的;客户机是设置挂载某个网络目录的。所以他们IP互知。

对于端口号。NFS的端口号大概位于2049,但是因为文件系统非常复杂,往往的情况是端口号不固定(2049+的形式),以及NFS需要启动额外的端口,这些端口是1024以下的随机端口。那么客户机如何知道服务器的端口号呢?答案是:通过rpcbind实现

RPC机制介绍

rpc程序会随着nfs启用而自动开启,默认端口号为固定的111.

当nfs启动后,会随机占用一些端口。

然后nfs会找rpcbind进行注册,记录这些端口信息。

rpc的固定端口是111,当rpc记录到nfs的端口号后会沟通客户机的111端口,并且通知nfs的端口。

当客户端知道了rpc通知的nfs端口号,就可以不依靠rpc进行工作了。

nfs读写小文件性能慢 nfs 文件_nfs读写小文件性能慢_03


1)首先服务器端启动RPC服务,并开启111端口

2)服务器端启动NFS服务,并向RPC注册端口信息

3)客户端启动RPC(portmap服务),向服务端的RPC(portmap)服务请求服务端的NFS端口

4)服务端的RPC(portmap)服务反馈NFS端口信息给客户端。

5)客户端通过获取的NFS端口来建立和服务端的NFS连接并进行数据的传输。

nfs读写小文件性能慢 nfs 文件_linux_04


注:rpc重启后,nfs的注册信息会丢失,因此需要重启nfs完成注册。

利用autofs自动挂载
/etc/aotu.master 定义本地挂载点
/etc/auto.misc 配置挂载的文件系统 以及 选项

master
/服务器共享的目录 /子配置目录(可以自己创建)
子配置文件格式
【挂载点目录】【参数】【:/文件系统】

nfs读写小文件性能慢 nfs 文件_linux_05