实战:NFS安装部署

接早上了解过了NFS的一些基本原理,咋们就看看一些实战; 尝试自己部署一下实验;然后实验成功了是我们最大的鼓励来着; 实战过程中,我们也面临了很多报错;所以每个实战的报错我都会列举出来; 来吧,大伙一下看看这个NFS的部署实战;

1、必备的操作如下

  • 关闭防火墙和安装好nfs服务相关组件
  • 服务器端:192.168.75.71
  • 客户端:192.168.75.72
#服务器端和客户端均进行如下操作:
	#关闭防火墙和selinux
systemctl stop firewalld
systemctl disable firewalld
	#永久关闭selinux
sed -i 's#=enforcing#=disabled#g' /etc/selinux/config 
	#安装nfs组件
yum -y install nfs-utils

2、配置服务器端

  • 编辑/etc/exports文件
    • 限定规则
#配置自己的nfs规则
[root@Linux1 ~]# vim /etc/exports
/data/liangjiawei       192.168.75.0/24(rw,sync)
# 格式:
	#/data/liangjiawei 要共享的目录,需要存在(不存在就可以创建)
	#192.168.75.0/24 谁能挂载使用,可以是网段,也可以指定具体ip
	# (rw,sync) 挂载的一些参数,rw表示挂载为可读可写,sync表示同步

#创建对应的目录
[root@Linux1 ~]# mkdir -p /data/liangjiawei
	#然后查看一下这些的目录的权限
		#这个实际上就是这个nfs挂在出来的权限;
[root@Linux1 ~]# ls -ld /data/ /data/liangjiawei/
drwxr-xr-x 3 root root 25 10月  3 16:06 /data/
drwxr-xr-x 2 root root  6 10月  3 16:06 /data/liangjiawei/

#重新读取一下配置文件-导出(广播)编辑的文件,并重启rpc和nfs服务
	#并且重启一下nfs服务
[root@Linux1 ~]# systemctl restart rpcbind nfs
[root@Linux1 ~]# exportfs -r

3、客户端验证配置

  • 使用showmount命令,查看网络上的共享文件
  • 创建目录,用于客户端的挂载
  • 然后直接挂载使用-->然后验证一下权限问题
#客户端直接查看一下网络中的共享文件
[root@Linux2 ~]# showmount -e 192.168.75.71
Export list for 192.168.75.71:
/data/liangjiawei 192.168.75.0/24

#创建建自己想要挂在的目录
[root@Linux2 ~]# mkdir /nfs
	#直接挂载使用
[root@Linux2 ~]# mount -t nfs  192.168.75.71:/data/liangjiawei /nfs/
[root@Linux2 ~]# df -h  | grep nfs
192.168.75.71:/data/liangjiawei   17G  1.6G   16G   10% /nfs
	#可以测试一下
[root@Linux2 nfs]# ls
	#这里明显发现,没法创建文件-->
[root@Linux2 nfs]# touch liangjiawei.txt
touch: 无法创建"liangjiawei.txt": 权限不够
	#解释如下:
#挂载完成之后,进入目录,可能会发现无法对目录中的文件进行修改,这主要是因为客户端访问服务器时,身份被压缩成nobody,相对服务器文件系统来说,就是其他用户。
#所以要想编辑,需要在服务端对文件授权或者更改exports文件,设置no_root_squash(不压缩客户端root身份)。

4、解读一下exportfs文件

#在服务器端配置:
[root@Linux1 ~]# exportfs  -v
/data/liangjiawei	192.168.75.0/24(sync,wdelay,hide,no_subtree_check,sec=sys,rw,secure,root_squash,no_all_squash)

#解释如下:
rw:可读可写
ro:仅可读
sync:是指数据同步写入内存和磁盘
root_squash:如果客户端用root身份访问,则被压缩成nobody,权限也将受到限制。
no_root_squash:也就是不压缩,客户端使用root身份登录,全有所有权限,很危险。
all_squash:不管访问者是什么身份,包括root,全部压缩至匿名用户。
no_all_squash:保留访问用户的身份uid以及gid,一般只能查看,不能修改,权限问题,但是可以强制保存。

回到刚才那个实验,

  • 没法创建文件;
    • 可以直接升级目录权限
    • 也可以从nfs的权限重新定义
#第一个:可以提权;
	#这个不建议,因为权限过大;
[root@Linux1 ~]# chmod 777 -R /data/
[root@Linux1 ~]# ls -ld /data/ /data/liangjiawei/
drwxrwxrwx 3 root root 25 10月  3 16:06 /data/
drwxrwxrwx 2 root root  6 10月  3 16:06 /data/liangjiawei/
	#测试可以发现可以创建了
[root@Linux2 nfs]# touch liangjiawei.txt
[root@Linux2 nfs]# ll liangjiawei.txt 
-rw-r--r-- 1 nfsnobody nfsnobody 0 10月  3 16:26 liangjiawei.txt

#第二个:提高nfs的权限重新定义
[root@Linux1 ~]# vim /etc/exports
	#添加这个no_root_squash
/data/liangjiawei       192.168.75.0/24(rw,sync,no_root_squash)
	#重新挂在
[root@Linux2 ~]# vim /etc/fstab 
	#添加如下这一行:
192.168.75.71:/data/liangjiawei /mnt/   nfs     defaults        0       0
		#使用这个命令,必须在fstab文件中定义好
[root@Linux2 ~]# mount -t nfs -o soft,timeo=1  192.168.75.71:/data/liangjiawei
	#soft: 软挂载,遇到报错会终止挂载,并返回信息,默认是硬挂载,一直尝试挂载。
	#timeo: 超时时间,如果不设置,一直链接,可以设置小点

5、卸载问题解决

#如果在使用中是没法卸载的
umount.nfs4: /mnt/jfedu: device is busy
umount -l /mnt/jfedu 强行解除挂载
	#或者使用
fuser -m /mnt/data 将会显示使用这个模块的pid
fuser -mk /mnt/data 将会直接kill那个pid

分享环节:

hi,亲爱的朋友们:

  • 感谢你们耐心完这个笔记,如果笔记中出现的一些软件包、资源找不到的可以直接留言&私聊,我看见了就回复;
  • 资源免费共享;有需要滴滴,(仅仅是我有的)

我的坚持初衷:💕立志要成为一名架构师

  • 不断地去坚持学,其中的各种各样的难度,不言而喻~!
  • 坚持不是一件容易的事情,但它却是成功的关键。做起来吧~!

如果你也想要坚持:那么组团吧,咋们一块互相监督;一天一点分享也是进步;最怕就是孤军奋战!加油吧,追梦人~!