NFS简介
- 网络文件系统,采用CS架构的
- 分布式计算系统中的一部分组成,可以在不同网络上共享和装配远程文件系统
- 提供一种Unix操作系统上共享文件的方法
- 结合远程网络启动实现
- 无盘工作站:PXE启动系统,所有数据均在服务器磁盘阵列上
- 瘦客户工作站:本地启动系统,本地磁盘存储了常用的系统工作,而所有的/home目录的用户数据都被会存放在NFS服务器上并在网络中处处可用
NFS协议模型
- NFS客户端和服务端
- RPC远程调用
- 基于TCP/IP网络进行传输
RPC协议
- NFS协议本身不具备网络传输功能 ,而是基于RCP协议实现的
- 提供一个面向过程的远程服务的接口
- 可以通过网络从远程主机程序上请求服务,而不需要了解底层网络技术协议 - 工作在OIS模型的会话层,可以遵循RPC应用层协议提供服务端口注册等功能
- RPC使用网络端口111监听客户端请求
NFS相关包和工具
- nfs-utils: NFS的主要组件,包含有:rpc.nfsd已经rpc.mountd这两个核心守护进程组件
- rpcbind:提供RPC的端口映射的守护进程及相关文件、执行文件等
- exportfs: 在NFS服务端,维护NFS共享资源的命令
- showmount:在NFS客户端,查看服务器共享的资源
- nfsstat:显示NFS的状态统计信息
- rpcinfo:显示由RPC维护的端口映射,显示已经注册的RPC服务列表
NFS服务概览
- 安装:
yum install nfs-utils rpcbind
- 软件包:nfs-utils -> 依赖rpcbind软件包
- 服务类型:由systemd启动的守护进程
- 配置单元: /usr/lib/systemd/system/nfs.service
- 守护进程: rpc.nfsd / rpc.mountd等
- 端口: 111 2049 20048
- 配置文件:/etc/exportfs
- 启动相关服务:
[root@test ~]# systemctl start rpcbind
[root@test ~]# systemctl start nfs-server
ss -tanl | grep -E "111|2049|20048"
尽量先启动rpcbind,如果顺序颠倒可能之前启动的服务端口没有注册上去。
NFS服务端配置
-
主配置文件:/etc/exportfs
-
格式:
共享文件 [主机表1[参数项…]] [主机表2[参数项…]]参数项:控制共享目录的访问权限,用户映射等等
ro:只读
rw:读写
root_squash: nfs客户端以root用户访问时被映射为匿名用户
no_root_squash
all_squash:所有用户
sync: 同时将数据写入到内存和磁盘中,保证不丢失数据
async:优先将数据写入到内存中,然后再写入到硬盘中,提高效率,但是可能会丢失书数据 -
exportfs命令:用户维护NFS共享目录列表
-
当配置了/etc/exportfs文件后,可以使用exportfs命令直接使其生效
-
参数选项:
-a: 全部挂载或卸载/etc/exportfs文件中的设置
-r: 重新挂载
-u: 卸载共享目录
-v: 显示输出列表的同时,显示设定参数
NFS客户端
- showmount命令:
常用参数:
-e: 显示NFS服务端上共享的文件列表
-a: 显示本地挂载的文件资源的情况
-v:version
-d: 查看哪些共享目录已经被客户端挂载
关于NFS文件系统的和卸载:
mount -t nfs [-o 参数] NFS服务端地址:/共享目录 /本地挂载点
umount /本地挂载点
开机启动时自动挂载:/etc/fstab文件
NFS服务端地址:/共享目录 /本地挂载点 nfs default 0 0
NFS实验部署
[root@node1 ~]# yum install nfs‐utils rpcbind ‐y
[root@node1 ~]# mkdir /nfsfile
[root@node1 ~]# chmod ‐Rf 777 /nfsfile/
[root@node1 ~]# cat /etc/exports
/nfsfile 192.168.10.0/24(rw,sync,no_root_squash)
[root@node1 ~]# systemctl restart rpcbind
[root@node1 ~]# systemctl restart nfs‐server
Export list for node1: /nfsfile 192.168.10.0/24
[root@node1 ~]# mount ‐t nfs 192.168.10.10:/nfsfile /mnt/nfsfile
[root@node1 data]# mount
192.168.10.130:/nfsfile on /data type nfs4 (rw,relatime,vers=4.1,rsize=131072,wsize=131072,namlen=255,hard,proto=tcp,port=0,timeo=600,retrans=2,sec=sys,clientaddr=192.168.10.10,local_lock=none,addr=192.168.10.130)
开机自动挂载 /etc/fstab配置文件中加入:
192.168.10.10:/nfsfile /mnt/nfsfile nfs defaults 0 0