CentOS 7 NFS安装配置

系统约定

服务端:192.168.1.4

客户端:192.168.1.5

安装

服务端和客户端都要安装nfs和rpcbind

# yum -y install nfs-utils rpcbind

服务器端配置开机启动,客户端不需要

# systemctl enable rpcbind
# systemctl enable nfs-server

服务端配置

创建共享目录:

# mkdir /mnt/test

nfs文件配置

# vim /etc/exports

添加一行:

/mnt/test 192.168.1.0/24(rw,sync,no_root_squash)

或者

/mnt/test 192.168.1.5(rw,sync,no_root_squash)

如何文件数量特别大,可添加no_subtree_check参数,如下:

/mnt/test 192.168.1.5(rw,sync,no_subtree_check,no_root_squash)

如何要求挂载的目录权限为特定的所属用户和组,比如apache,那么要做如下两个操作

第一个,修改配置文件 /etc/idmapd.conf

# vim /etc/idmapd.conf

找到#Domain = local.domain.edu,将其修改为Domain = localdomain,重启rpcidmapd

# systemctl restart rpcidmapd

因为centos 6默认安装的是nfsv4版本,必须要配置下,然后exports里面添加如下

/mnt/test 192.168.10.0/24(rw,sync,all_squash,anonuid=48,anongid=48)

如果要允许所有客户端能访问

/mnt/test *(rw,sync,no_root_squash)

参数说明:
rw:read-write,可读写;
ro:read-only,只读;
sync:同步写入(文件同时写入硬盘和内存),适用在通信比较频繁且实时性比较高的场合
async:异步写入(文件先写入内存,稍候再写入硬盘),性能较好(速度快),适合超大或者超多文件的写入,但有数据丢失的风险,比如突然断电等情况;
注意:除非特別有需要,否则不建议使用 async。如果沒有指定 sync 或 async,NFS 服务器在启动的时候会印出警告信息。
no_root_squash:NFS客户端连接服务端时如果使用的是 root 的话,那么对服务端分享的目录也使用 root 权限。不安全!
root_squash:把客户端 root 身份的 UID/GID (0/0) 对应到服务端的 nobody 用户去,即服务端使用 nobody 用户来操作共享目录;
all_squash:不论NFS客户端连接服务端时使用什么用户,对服务端分享的目录来说都是拥有匿名用户权限;
anonuid:匿名用户的UID值,通常是nobody或nfsnobody,可以在此处自行设定;
anongid:匿名用户的GID值。

启动

# systemctl start rpcbind
# systemctl start nfs-server

关闭防火墙

# systemctl stop iptables

客户端配置

创建需要挂载的目录:

# mkdir /mnt/test

测试挂载

# showmount -e 192.168.1.4
Export list for 192.168.1.4:
/mnt/test 192.168.1.0/24

挂载

# mount -t nfs 192.168.1.4:/mnt/test /mnt/test

查看挂载是否成功

# mount | grep nfs

如果有输出说明成功

解除挂载

# umount /mnt/test

配置开机自动挂载

# vim /etc/fstab

在末尾添加如下一行

192.168.1.4:/mnt/test /mnt/test nfs defaults 0 0

另外要确保netfs安装netfs并开机启动,否则不能自动挂载

# chkconfig netfs on

注意:如果客户端挂载始终为nobody用户,在客户端清除idmap的缓存,然后重启rpcidmap,并重新挂载

# nfsidmap -c