官网文档:http://nfs.sourceforge.net/nfs-howto/index.html,官方表示此文档并不是全部信息的文档
配置服务端 NFS
1 yum 安装 nfs-utils
yum -y install nfs-utils
#安装 nfs-utils 时,会自动安装依赖 rpcbind 和 mount 相关包。
2 编辑配置文件 /etc/exports
格式如下:
directory machine(option)
#directory:共享的目录。
#machine:可以访问目录的客户端地址。支持 DNS 和 IP,使用 IP 地址更可靠一些。
#option:选项。
option 选项包含如下:ro
:目录为只读共享,这是默认值。rw
:目录为读写共享。secure
:在小于 1024 的端口上发起请求,这是默认值。应使用 insecure
来关闭它。insecure
:在大于 1024 的端口上发起请求。async
:此选项允许 NFS 服务器违反 NFS 协议,并在数据没有完全写入之前回复请求,即异步请求。可以提高性能,但是在 NFS 服务重启时会导致数据丢失或损坏。sync
:与 async 相反,当数据完全写入之后才回复请求,即同步请求。在1.0.0之后的所有版本中,这是默认值。no_wdelay
:允许提交多个写入请求。如果还设置了 async
,则此选项无效。nohide
:共享 NFS 目录的子目录。可以使用 hide
禁用此选项。crossmnt
:与 nohide
类似。no_subtree_check
:如果配置了共享子目录,则不检查父目录的权限。如果还设置了 no_root_squash
,则此选项没必要;因为 root 具有所有权限。subtree_check
:与 no_subtree_check
相反,强制检查父目录的权限。如果还设置了 no_root_squash
,则此选项无效;因为 root 具有所有权限。root_squash
:将请求从 uid/gid 0 映射到 anonymous uid/gid。all_squash
:将所有 uid/gid 都映射到 anonymous uid/gid。anonuid and anongid
:显式设置 anonymous uid/gid。no_root_squash
:默认情况下,客户端用户 root 发出的任何文件请求都被视为服务端 nobody 用户发出的请求。即请求映射到的 UID 取决于服务端的 nobody 用户的 UID,而不取决于客户端。如果选择 no_root_squash
,则客户端 root 具有服务端 root 对系统文件的访问级别。这可能会带来严重的安全隐患。
示例:
/data 192.168.10.0/24(rw,insecure,async,all_squash,anonuid=10000,anongid=10000)
3 启动 NFS
注意一: NFS 依赖于端口映射器(portmapper)守护程序,一般的 Linux 系统都会默认启动它。可以使用 rpcinfo
查看:
[root@nfs ~]# rpcinfo -p 127.0.0.1
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
注意二: 需要确保先启动 rpcbind 服务,再启动 nfs,不然使用 showmount
时会报错 “clnt_create: RPC: Program not registered”,不过一般启动 nfs 时会自动先启动 rpcbind。
验证 NFS 是否正常运行:
[root@nfs ~]# rpcinfo -p 127.0.0.1
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
100024 1 udp 45066 status
100024 1 tcp 39085 status
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
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 46568 nlockmgr
100021 3 udp 46568 nlockmgr
100021 4 udp 46568 nlockmgr
100021 1 tcp 36807 nlockmgr
100021 3 tcp 36807 nlockmgr
100021 4 tcp 36807 nlockmgr
NFS 服务包含五个守护程序:(包含在 nfs-utils 软件包中)
- rpc.nfsd:完成大部分工作。
- rpc.lockd 和 rpc.statd:处理文件锁定。从 2.2.18 开始,nfsd 会根据需要调用 lockd。
- rpc.mountd:它处理初始安装请求。
- rpc.rquotad:处理导出的卷上的用户文件配额。
附加: 重新加载配置文件 /etc/exports 可以使用 exportfs -ra
命令,或者使用 kill -HUP
。
4 查看共享信息
[root@nfs ~]# showmount -e 127.0.0.1
Export list for 127.0.0.1:
/data 192.168.10.0/24
附加: showmount命令的用法
- -e:显示NFS服务器的共享列表
- -a:显示本机挂载的文件资源的情况NFS资源的情况
- -v:显示版本号
客户端挂在使用
1 yum 安装 nfs-utils
yum -y install nfs-utils
2 查看共享信息
[root@nfs_client ~]# showmount -e 192.168.10.148
Export list for 192.168.10.148:
/data 192.168.10.0/24
3 挂载共享目录
使用 mount 选项来控制 NFS 客户端处理当服务端崩溃或网络中断时的反应:
- soft:如果文件请求失败,则 NFS 客户端将向请求端报告错误。不建议使用此设置。
- hard:当服务器崩溃时,访问 NFS 挂载的文件系统上的文件的程序将挂起。同时指定 intr,可以中断或终止该进程;当 NFS
服务器重新启动时,程序将从原来的位置不受干扰地继续运行。建议在所有 NFS 挂载的文件系统上使用 hard,intr。
示例:
vim /etc/fstab
...
192.168.10.148:/data /mnt nfs rw,hard,intr 0 0
...