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服务器设置好一个共享目录,且设置好授权ip以及权限后,有访问权的客户机就可以将此目录挂载到自己某个挂载点。
既然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进行工作了。
1)首先服务器端启动RPC服务,并开启111端口
2)服务器端启动NFS服务,并向RPC注册端口信息
3)客户端启动RPC(portmap服务),向服务端的RPC(portmap)服务请求服务端的NFS端口
4)服务端的RPC(portmap)服务反馈NFS端口信息给客户端。
5)客户端通过获取的NFS端口来建立和服务端的NFS连接并进行数据的传输。
注:rpc重启后,nfs的注册信息会丢失,因此需要重启nfs完成注册。
利用autofs自动挂载
/etc/aotu.master 定义本地挂载点
/etc/auto.misc 配置挂载的文件系统 以及 选项
master
/服务器共享的目录 /子配置目录(可以自己创建)
子配置文件格式
【挂载点目录】【参数】【:/文件系统】