服务部署
服务端操作(nfs server部署及配置)
[root@Q1 ~]# yum -y install rpcbind nfs-utils
[root@Q1 ~]# systemctl start rpcbind.service
[root@Q1 ~]# systemctl start nfs.service
[root@Q1 ~]# rpcinfo -p localhost
[root@Q1 ~]# id nfsnobody
uid=65534(nfsnobody) gid=65534(nfsnobody) 组=65534(nfsnobody)
# yum安装服务后会自动生成对应的用户及组
[root@Q1 ~]# systemctl enable rpcbind.service
[root@Q1 ~]# systemctl enable nfs-server.service
[root@Q1 ~]# systemctl list-unit-files |egrep "rpc|nfs"
[root@Q1 ~]# mkdir -pv /data
[root@Q1 ~]# chown -R nfsnobody.nfsnobody /data
[root@Q1 ~]# cat /etc/exports
#share /data by kazihuo for tom at 20170925
/data 192.168.11.0/24(rw,sync)
[root@Q1 ~]# systemctl reload nfs.service
[root@Q1 ~]# showmount -e 192.168.11.11 # 查询共享目录
export list for 192.168.11.11:
/data 192.168.11.0/24
客户端操作(nfs client部署及挂载使用)
[root@Q2 ~]# yum -y install rpcbind nfs-utils
[root@Q2 ~]# systemctl start rpcbind.service
[root@Q2 ~]# systemctl enable rpcbind.service
[root@Q2 ~]# mkdir /kazihuo
[root@Q2 ~]# mount -t nfs 192.168.11.11:/data /kazihuo
[root@Q2 ~]# df -h #查看
客户端开机自启挂载情况优选
法一
将挂载命令写入/etc/rc.local;
#偶尔开机挂载失败;
法二
将挂载命令写入/etc/fstab;
# fstab会优于网络被系统加载,网络没启动时执行fstab会导致连不上NFS服务器端,无法实现开机挂载,所以一般不用此方式;
使用法三将完美解决问题(不会因为nfs服务器无法与客户端建立连接而导致客户端服务器无法启动)!亲测!
法三
autofs服务实现自动挂载
/etc/auto.master #文件定义本地挂载点
/etc/auto.misc #设置需要挂载的文件系统类型及选项
# 以下是Q2服务器开机自动挂载Q1共享的nfs磁盘,实现基于以上部署及配置环境!
客户端操作
[root@Q2 ~]# yum -y install autofs
[root@Q2 ~]# cat /etc/auto.master
# For details of the format look at auto.master(5).
#
/misc /etc/auto.misc
/tmp/kazihuo /etc/auto.nfs
#前段是要将服务器端共享的存储挂载在本机的指定目录下,后段是挂载时配置设置,可自定义
#
# NOTE: mounts done from a hosts map will be mounted with the
[root@Q2 ~]# cat /etc/auto.nfs
nfs -fstype=nfs 192.168.10.11:/data
#将服务器端的data目录挂载到本机/tmp/kazihuo/nfs目录
[root@Q2 ~]# systemctl start autofs.service
[root@Q2 ~]# systemctl enable autofs.service
# 重启后查看挂载情况
[root@Q2 ~]# mount |grep kazihuo
/etc/auto.nfs on /tmp/kazihuo type autofs (rw,relatime,fd=12,pgrp=1554,timeout=300,minproto=5,maxproto=5,indirect)
注:以上操作将服务器端共享的存储挂载到本地/tmp/kazihuo/nfs目录下,需要cd /tmp/kazihuo/nfs进去,触发才能自动挂载,同时nfs目录不能提前自动创建,自动挂载时系统自动创建nfs目录。
进一步探讨:
当服务端和客户端失去联系时,客户端能正常启动系统,而后又与服务端建立了连接,此刻,nfs是否能自动挂载上,情况带跟进!!!
挂载配置说明
公司挂载实例
[root@master(35.100) ~]# cat /etc/exports
/r2 192.168.52.0/8(insecure,rw,no_root_squash)
指定NFS客户端地址的配置说明
客户端地址 |
具体地址 |
说明 |
授权指定地址 |
192.168.10.10 |
生产环境不常用 |
授权整个网段 |
192.168.10.0/24 |
生产环境常见配置 |
授权整个网段 |
192.168.10.* |
不推荐使用 |
授权指定域名客户端 |
nfs.kazihuo.com |
生产环境不常用 |
授权整个域名客户端 |
*.kazihuo.com |
生产环境不常用 |
NFS配置权限常用参数说明
参数 |
说明 |
rw |
read-write 可读写 |
ro |
read-only 只读 |
sync |
将数据同步写入内存缓冲区与磁盘中,效率低,但可以保证数据的一致性; |
async |
将数据先保存在内存缓冲区中,必要时才写入磁盘 |
no_root_squash |
来访的root用户保持root帐号权限; |
root_squash(默认) |
将来访的root用户映射为匿名用户或用户组; |
all_squash |
无论访问共享目录的用户身份如何,其权限将被镇压为匿名用户,同时它的UID和GID通常会变成nfsnobody账号身份 |
no_all_squash(默认) |
访问用户先与本机用户匹配,匹配失败后再映射为匿名用户或用户组; |
anonuid |
匿名用户UID设置值,可自行设置,但必须在/etc/passwd中存在;在多台客户端共享一个nfs目录时,可通过此参数使得不同的客户端写入的数据保持相同的用户权限 |
anongid |
匿名用户组 |
secure(默认) |
限制客户端只能从小于1024的tcp/ip端口连接服务器; |
insecure |
允许客户端从大于1024的tcp/ip端口连接服务器; |
wdelay(默认) |
检查是否有相关的写操作,如果有则将这些写操作一起执行,这样可以提高效率; |
no_wdelay |
若有写操作则立即执行,应与sync配合使用; |
subtree_check(默认) |
若输出目录是一个子目录,则nfs服务器将检查其父目录的权限; |
no_subtree_check |
即使输出目录是一个子目录,nfs服务器也不检查其父目录的权限,这样可以提高效率; |
在生产中配置NFS的重要技巧
确保所有客户端对共享目录具有相同的用户访问权限;
all_squash把所有客户端都镇压为固定的匿名用户(UID相同);
就是anonuid、anongid指定的UID和GID用户;
所有的客户端和服务端都需要有一个相同的UID和GID用户
企业生产场景配置实例
格式 |
共享目录 客户端地址(参1,参2···) |
说明 |
样例一 |
/data 192.168.10.0/24(rw,sync) |
允许客户端读写,且数据同步写到服务端的磁盘 |