实战:NFS安装部署
接早上了解过了NFS的一些基本原理,咋们就看看一些实战;
尝试自己部署一下实验;然后实验成功了是我们最大的鼓励来着;
实战过程中,我们也面临了很多报错;所以每个实战的报错我都会列举出来;
来吧,大伙一下看看这个NFS的部署实战;
1、必备的操作如下
- 关闭防火墙和安装好nfs服务相关组件
- 服务器端:192.168.75.71
- 客户端:192.168.75.72
shell
#服务器端和客户端均进行如下操作:
#关闭防火墙和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文件
- 限定规则
shell
#配置自己的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命令,查看网络上的共享文件
- 创建目录,用于客户端的挂载
- 然后直接挂载使用-->然后验证一下权限问题
shell
#客户端直接查看一下网络中的共享文件
[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文件
shell
#在服务器端配置:
[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的权限重新定义
shell
#第一个:可以提权;
#这个不建议,因为权限过大;
[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、卸载问题解决
shell
#如果在使用中是没法卸载的
umount.nfs4: /mnt/jfedu: device is busy
umount -l /mnt/jfedu 强行解除挂载
#或者使用
fuser -m /mnt/data 将会显示使用这个模块的pid
fuser -mk /mnt/data 将会直接kill那个pid
分享环节:
hi,亲爱的朋友们:
- 感谢你们耐心完这个笔记,如果笔记中出现的一些软件包、资源找不到的可以直接留言&私聊,我看见了就回复;
- 资源免费共享;有需要滴滴,(仅仅是我有的)
我的坚持初衷:💕立志要成为一名架构师
- 不断地去坚持学,其中的各种各样的难度,不言而喻~!
- 坚持不是一件容易的事情,但它却是成功的关键。做起来吧~!
如果你也想要坚持:那么组团吧,咋们一块互相监督;一天一点分享也是进步;最怕就是孤军奋战!加油吧,追梦人~!