NFS(网络文件系统)服务部署

版权声明:原创作品,谢绝转载!否则将追究法律责任。 ————— 作者:kirin

存储服务器概念介绍—NFS

NFS是Network File System的缩写,中文意思是网络共享文件系统,

它的主要功能是通过网络(一般是局域网)让不同的主机系统之间可以共享文件或目录

nfs服务优缺点:

优点:部署简单,配置简单,管理简单,节省成本

缺点:没有认证功能 不能在windows上部署 不具有高可用功能(主备份) -- keepalived

一、企业环境:实现数据共享存储

1. FTP服务器(windows--server-U) 部署安装麻烦 / 权限设置
2. samba软件    部署安装麻烦 windows linux系统都支持
3. 分布式存储 Moosefs(mfs)、GlusterFS、FastDFS 

二、NFS存储服务器架构中作用

1. 实现数据共享同一存储,保证数据一致性
2. 降低公司架构服务器成本 

三、NFS服务安装部署

 服务端部署:
第一个历程:软件安装部署
	#  yum install -y nfs-utils rpcbind
第二个历程:编写配置文件
	#  vim /etc/exports
	存储目录信息    主机地址或网段信息-进行安全访问控制(共享目录权限参数)
	/data     172.16.1.0/24(rw,sync)
第三个历程:创建存储目录,并进行授权
	#  mkdir -p /data
第四个历程:启动程序服务
	#  systemctl status rpcbind
	#  systemctl start rpcbind
	#  systemctl enable rpcbind
	#  systemctl start nfs
	#  systemctl enable nfs
	#  systemctl status nfs
第五个历程:客户端进行检查验证(客户端需要先安装yum install -y nfs-utils rpcbind)
	#  rpcinfo -p 172.16.1.31/10.0.0.31    --- 检查nfs服务信息是否注册
	#  showmount -e 172.16.1.31/10.0.0.31  --- 检查是否有共享存储目录信息 
客户端部署:
第一个历程:安装部署软件
	#  yum install -y nfs-utils
	#  systemctl status rpcbind
	#  systemctl start rpcbind
	#  systemctl enable rpcbind
	#  systemctl start nfs
	#  systemctl enable nfs
	#  systemctl status nfs
 
第二个历程:实现挂载存储目录
	#  mount -t nfs  172.16.1.31:/data  /mnt
    #  df -h

第三个历程:通过客户端,执行创建文件的时候发下失败了的解决方法
#  touch 123.txt
touch: cannot touch ‘123.txt’: Permission denied 
##通过修改服务端的权限##
#   cat /var/lib/nfs/etab 
/data 172.16.1.0/24(rw,sync,wdelay,hide,nocrossmnt,secure,root_squash,no_all_squash,no_subtree_check,secure_locks,acl,no_pnfs,anonuid=65534,anongid=65534,sec=sys,rw,secure,root_squash,no_all_squash)
anonuid=65534,anongid=65534 ##表示最终写入数据时,最终调用UID为65534的用户

####执行以下命令#####
#  chown -R nfsnobody.nfsnobody /data/


再次写入就成功了

四、NFS存储服务存储原理

服务端:3件事
客户端:3件事
 
服务端注册进程信息:
#  ps -ef|egrep "rpc|nfs"
rpc    1564   1  0 09:32 ?   00:00:00 rpcbind
rpc    1065   1  0 09:32 ?   00:00:00 rpc statd    <- 检查数据存储一致性
root   4736   2  0 21:31 ?   00:00:00 [rpciod/0]
root   5363   1  0 21:47 ?   00:00:00 rpc.rquotad<- 磁盘配额进(remotequote server)
	                     
 
带宽 100M  限速 1个人10M  2个人10M 
/ -- 分区大小10G   /tmp 8G  kirin1(6G)  kirin2(2G) root (2G)
root   5368  1  0 21:47 ?  00:00:00 rpc.mountd <- 权限管理验证等(NFS mount daemon) root   5375  2  0 21:47 ?  00:00:00 [nfsd4]
root   5376  2  0 21:47 ?  00:00:00 [nfsd4_callbacks]
root   5377  2  0 21:47 ?  00:00:00 [nfsd]  <- NFS主进程
root   5378  2  0 21:47 ?  00:00:00 [nfsd]  <- NFS主进程
root   5379  2  0 21:47 ?  00:00:00 [nfsd]  <- NFS主进程,管理登入,ID身份判别等。
root   5380  2  0 21:47 ?  00:00:00 [nfsd]
root   5381  2  0 21:47 ?  00:00:00 [nfsd]
root   5382  2  0 21:47 ?  00:00:00 [nfsd]
root   5383  2  0 21:47 ?  00:00:00 [nfsd]
root   5384  2  0 21:47 ?  00:00:00 [nfsd] <- NFS主进程
root   5415  1  0 21:47 ?  00:00:00 rpc.idmapd    <- name mapping daemon用户压缩/用户映射(记录)

五、NFS配置文件参数说明

rw     --- 设置共享目录权限为可读可写
ro     --- 设置共享目录权限为只读
           企业应用:开发人员想查看线上服务器数据   线下服务器权限
		   线下环境  线上环境不一致
sync   --- 同步存储数据  数据传输到服务器--磁盘 保证数据安全性   存储服务器async  --- 异步存储数据  数据传输到服务器--内存 保证数据传输效率
root_squash    --- root用户传输数据需要做映射转换   nfsnobody   
no_root_squash --- root用户传输数据不需要做映射转换 root        
all_squash     --- 普通用户传输数据需要做映射转换   nfsnobody  
no_all_squash  --- 普通用户传输数据不需要做映射转换 原来是什么用户,存储好的数据就是什么用户管理 

六、企业中:如何进行配置

1. root是否应该做映射
	   no_root_squash:存储数据可以被客户端root用户随意改动
       root_squash:   原有的其他用户文件不能查看,可以编辑  (推荐)

2. 其他用户是否应该做映射:
	   no_all_squash: 目录属主修改好,有效提高存储目录安全  (推荐)
       all_squash:    安全性较低
------------------------------------------------------------------------------------    
企业存储服务器部署方案:
服务端:
第一个历程:编写配置文件
#  vim /etc/exports
/data   172.16.1.0/24(rw,sync,root_squash,no_all_squash) 
第二个历程:修改好目录权限
#  chown -R www. /data/
第三个历程:重启服务
#   systemctl restart nfs

客户端:
第一个历程:进行挂载
#   mount -t nfs 172.16.1.31:/data /mnt

七、NFS服务程序常见的问题总结:

1)服务权限不正确:
	原因1:配置文件中权限参数书写不正确
	原因2:目录本身权限不正确   755  nfsnobody
	原因3:目录的权限具有继承关系
		  PS:尽量存储服务配置文件中不要出现父子关系
	 原因4:客户端挂载参数权限指定不正确
------------------------------------------------------------------------------------
2)错误信息:‘/data/w’: Stale file handle
	文件句柄错误:存储服务端有共享目录取消了,客户端并没进行卸载
	什么是卸载完整:cat /proc/mounts文件没有相关挂载信息了 
	解决:将所有挂载信息,进行卸载重新挂载
------------------------------------------------------------------------------------
3)存储服务无法进行启动:
	当服务没有启动的时候,无法使用reload进行启动
------------------------------------------------------------------------------------
4)clnt_create: RPC: Port mapper failure - Unable to receive: errno 113 (No route to host)
	原因:防火墙服务没有关闭 客户端 --- 访问 --- 服务端 111
------------------------------------------------------------------------------------
5)RPC: Program not registered
	 原因:rpcbind服务和nfs服务启动顺序不正确,nfs服务没有启动
	解决:两个服务全关闭,再按照顺序启动
------------------------------------------------------------------------------------
6)无法卸载挂载目录:/data/w: device is busy
	第一种方式:离开挂载目录进行卸载
	第二种方式:强制卸载
		    umount -lf 挂载点目录
	        -l lazy(懒惰)
			 -f force(强制)
-----------------------------------------------------------------------------------
7)nfs实现restart重启==放大招(大招冷却时间cd)
	在系统配置中/etc/sysconfig/nfs中指定了无敌时间的配置参数
	NFSD_V4_GRACE=90
	NFSD_V4_LEASE=90
	NLM_GRACE_PERI0D=90

八、补充:运维异常问题三种大招 被人攻击了 负载过高

1. 服务重启
2. 操作系统重启
3. 服务或系统重装
------------------------------------------------------------------------------------存储服务重要文件/命令总结
/etc/exports         存储服务端配置文件 
/usr/sbin/exportfs   负责平滑重启nfs服务
-----------------------------------------------------------------------------------实践操作:
[root@nfs01 r]# exportfs -rv
exporting 172.16.1.0/24:/data/w
exporting 172.16.2.0/24:/data/r

可以临时配置共享存储目录信息
exportfs -o rw,sync 172.16.1.0/24:/data
/usr/sbin/showmount  检查可用存储共享目录信息
/var/lib/nfs/etab    nfs服务端默认配置信息记录文件(日志文件)
/proc/mounts         显示客户端挂载信息文件(默认挂载参数)
posted @ 2022-06-05 12:37  kirin(麒麟)  阅读(1025)  评论(0编辑  收藏  举报
Δ