系统约定
服务端: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