1. NFS 原理
NFS是Network File System的简写,即网络文件系统。NFS基于RPC(Remote Procedure Call)远程过程调用实现。由操作系统的内核,将 NFS 文件系统的调用请求通过 TCP/IP 发送至服务端的 NFS 服务。NFS服务器执行相关的操作,并将操作结果返回给客户端
- rpc.nfsd:主要的NFS进程,管理客户端是否可登录
- rpc.mountd:挂载和卸载NFS文件系统,包括权限管理
- rpc.lockd:非必要,管理文件锁,避免同时写出错
- rpc.statd:非必要,检查文件一致性,可修复文件
1.1 配置文件/etc/exports
每条配置记录由NFS共享目录、NFS客户端地址和参数这3部分组成
[NFS共享目录] [NFS客户端地址1(参数1,参数2,参数3……)] [客户端地址2(参数1,参数2,参数3……)]
/nfs/data *(rw,no_root_squash,sync)
- root_squash:客户端使用root访问,服务器映射为服务器本地的匿名账号
- no_root_squash:客户端连接服务端时使用的是root,拥有服务端分享的目录的root权限
- sync:同步写操作,数据写入存储设备后返回成功信息(默认)
- async:异步写操作,数据在未完全写入存储设备前就返回成功信息,实际还在内存
2. nfs服务端配置
首先,需要安装nfs和rpcbind服务
接着,需要创建使用共享目录的用户
然后,需要对共享目录进行配置
最后,需要启动rpcbind和nfs服务
2.1 安装nfs服务和rpcbind服务
# yum -y install nfs-utils rpcbind
检查nfs服务是否正常安装
# rpcinfo -p localhost
program vers proto port service
100000 4 tcp 111 portmapper
100000 3 tcp 111 portmapper
100000 2 tcp 111 portmapper
100000 4 udp 111 portmapper
100000 3 udp 111 portmapper
100000 2 udp 111 portmapper
100005 1 udp 20048 mountd
100005 1 tcp 20048 mountd
100005 2 udp 20048 mountd
100005 2 tcp 20048 mountd
100005 3 udp 20048 mountd
100005 3 tcp 20048 mountd
100024 1 udp 51776 status
100024 1 tcp 52797 status
100003 3 tcp 2049 nfs
100003 4 tcp 2049 nfs
100227 3 tcp 2049 nfs_acl
100003 3 udp 2049 nfs
100003 4 udp 2049 nfs
100227 3 udp 2049 nfs_acl
100021 1 udp 46824 nlockmgr
100021 3 udp 46824 nlockmgr
100021 4 udp 46824 nlockmgr
100021 1 tcp 45418 nlockmgr
100021 3 tcp 45418 nlockmgr
100021 4 tcp 45418 nlockmgr
2.2 创建nfs共享目录
为NFS服务其添加用户,可以使直接使用root
# mkdir -p /nfs/data
# chmod a+w /nfs/data
2.3 配置文件 /etc/exports
# echo "/nfs/data *(rw,no_root_squash,sync)" >> /etc/exports
配置生效执行 exportfs -r
2.4 启动服务
先启动rpcbind服务,再启动nfs服务,让nfs服务在rpcbind服务上注册
# systemctl start rpcbind && systemctl enable rpcbind
# systemctl start nfs && systemctl enable nfs
2.5 检查nfs服务是否正常启动
# showmount -e localhost
Export list for localhost:
/nfs/data *