部署NFS存储服务(下)
2.1 服务端有关的配置
2.1.1 练习题:共享不同的俩个目录,分别赋予读和写权限
服务端部署过程:
第一个里程:编写nfs配置文件
vim /etc/exports
/data/w 172.16.1.0/24(rw,sync,all_squash)
/data/r 172.16.1.0/24(ro,sync,all_squash)
注:服务端配置文件中,尽量避免继承权限的发生(因权限大的会生效)
第二个里程:创建配置文件中指定的共享目录,并进行授权
mkdir /data/{w,r} -p
chown -R nfsnobody.nfsnobody /data/{w,r}
第三个里程:重启nfs服务(平滑重启)
/etc/init.d/nfs reload
第四个里程:检查是否生成新的共享目录信息
showmount -e 172.16.1.31
Export list for 172.16.1.31:
/data/r 172.16.1.0/24
/data/w 172.16.1.0/24
客户端部署过程:
第一个里程:确认是否安装好了nfs服务相关软件
yum install -y nfs-utlis rpcbind
第二个里程:进行网络挂载
客户端web01:
mkdir /data/w -p
mount -t nfs 172.16.1.31:/data/w /data/w
客户端backup:
mkdir /data/r -p
mount -t nfs 172.16.1.31:/data/r /data/r
第三个里程:检查测试
条件:web01:对共享目录有读写权限
条件:backup:对共享目录只有只读权限
[root@backup r]# touch test.txt
touch: cannot touch `test.txt': Read-only file system
说明强调:在nfs服务端配置共享目录时,会遵循目录的继承条件
当上一级共享目录为读写时,下一级共享目录就算为只读模式,也会继承上一级目录的权限为读写
2.1.3 NFS出现错误排查思路:
分为两部:
1. 排除NFS服务端是否存在问题
rpcinfo -p 172.16.1.31 #向rpc服务进行发送注册信息
showmount -e 172.16.1.31 #查看可以通过网络进行挂载的目录
mount -t nfs 172.16.1.31:/data /mnt #在本地先测试一下挂载,进行创建文件,删除文件测试
2. 排查NFS客户端是否存在问题
rpcinfo -p 172.16.1.31 #向rpc服务进行发送注册信息
showmount -e 172.16.1.31 #查看可以通过网络进行挂载的目录
mount -t nfs 172.16.1.31:/data /mnt #进行挂载使用
2.1.4 服务端重点知识梳理
1. 多个客户端访问NFS服务端的读写文件时,需要以下权限:
① NFS服务器/etc/exports设置需要开放可写入的权限,即服务器端的共享权限。
② NFS服务器实际要共享的NFS目录权限具有可写入w的权限,即服务器端本地目录的安全权限。
③ 每台机器中需要存在和NFS默认配置文件中对应的UID用户相同 (确保所有客户端的访问权限统一,否则每个机器需要同时建立相同UID的用户,并覆盖NFS的默认用户配置)
2. /usr/sbin/exportfs #可以管理nfs服务运行状态
/usr/sbin/exportfs -r #平滑重启
/usr/sbin/exportfs -v #显示共享详细信息
注:一般组合用expostfs -rv
exportfs -o rw,sync 172.16.1.31/24:/data #临时加载一条配置文件,即使生效
2.2 客户端有关的配置
2.2.1 NFS客户端开机启动挂载
①. 利用/etc/rc.local文件实现自动挂载
echo "mount -t nfs 172.16.1.31:/data /mnt" >> /etc/rc.local
②. 利用/etc/fstab文件实现自动挂载
vim /etc/fstab
挂载什么 挂载到哪 类型 挂载参数 是否备份 是否检查磁盘
172.16.1.31:/data /mnt nfs defaults 0(dump) 0(fsck)
需要加一步:chkconfig netfs on
说明:netfs服务作用:在网络服务启动之后,让系统重新读取加载/etc/fstab文件(因为默认情况 /etc/fstab会先启动,network服务会后启动,导 致网络自动挂载不上,所以需要让netfs服务在network服务后启动一下)
查看一下命令的启动顺序:
[root@backup ~]# head /etc/init.d/netfs
# chkconfig: 345 25 75
# description: Mounts and unmounts all Network File System (NFS), \
[root@backup ~]# head /etc/init.d/network
# network Bring up/down networking
# chkconfig: 2345 10 90
[root@backup ~]# ll /etc/rc.d/rc3.d/|grep local ---网络服务启动后加载rc.local文件
lrwxrwxrwx. 1 root root 11 Dec 8 12:38 S99local -> ../rc.local
注:S99表示最后加载这个配置文件
2.2.2 NFS客户端挂载参数深入
▲. 共享目录权限总结:
1)与服务端配置文件中权限参数设置有关
2)本地共享目录本身权限有关
3)与客户端挂载参数有关
▲. 查看客户端挂载历史记录与默认参数
cat /proc/mounts
3. mount -t nfs -o fg 172.16.1.31:/data /mnt --- 前台挂载(默认)
mount -t nfs -o bg 172.16.1.31:/data /mnt --- 后台挂载
4. soft 软挂载 :一直常识挂载,超时后退出(timeout后有可能丢失数据,不推荐使用)
hard 硬挂载:一直常识挂载,不停止(一般配合intr参数使用),默认为head
5. hard+intr =soft软挂载
6. rsize和wsize的作用:设置大一点,提升NFS传输的能力(设置的值为2的倍数,centos6默认为130721)
类似于缓存区,会影响客户端和服务端缓存数据的存储量,最大传输速率越快,根据网络传输带宽决定大小,不要超过带宽
7. suid的作用:让普通用户执行命令时相当于root用户,一般用于脚本(默认值)
如目录和目录下的文件都是suid,root和普通用户都可以访问,其他的情况普通用户都不能访问。
8.exec和noexec的作用:相当于x权限,如果是noexec,用户则没有执行权限
9.user和nouser的作用:是否允许普通用户挂载或卸载文件系统(默认不允许,root才行)
10.auto和noauto的作用:执行mount -a 时,是否自动挂载(默认为auto)
11. atime 和noatime、nodiratime的作用:每次访问数据时,会同步更新访问文件的Inode时间戳。
高并发环境使用noatime,nodiratime,提升系统I/O性能
12. remount的作用:重新挂载,针对于已经挂载的设备或目录
例:mount -t nfs -o remount,ro 172.16.1.31:/data /mnt
2.2.3 NFS客户端优化挂载的参数
Centos6优化参数: mount -t nfs -o noatime,nodiratime,nosuid,noexec,nodevp,rsize=131072,wsize=131072 172.16.1.31:/data/ mnt
默认参数性能也不错:mount -t nfs 172.16.1.31:/data /mnt
2.2.4 NFS系统应用的优点
1. 简单,易操作
2. NFS内的数据是在文件系统之上的,可以看得见的。
3. 部署方便,可控制,配置文件一条命令即可搞定,
4. 可靠性高
5. 服务非常稳定
2.2.5 NFS系统应用缺点
1. 存在单点故障(NFS服务器宕机了,其他用户都不能访问了)
2. 不适用于高并发(2千万以上访问量)
3. 没有认证(基于IP和主机名),安全性低
4. NFS数据是明文的(一般内网通信)
5. 其他与架构有关,比如客户端与服务端的耦合性(实时同步可解耦)
建议:NFS适用于中小型企业(2000万/日PV以下),尽量通过缓存服务器或/CND,不然NFS服务器扛不住压力,用户体验会很差。
注:PV 访问量
小伙伴们可以关注我的微信公众号:linux运维菜鸟之旅
关注“中国电信天津网厅”公众号,首次绑定可免费领2G流量,为你的学习提供流量!