4.存储NFS

NFS是一种基于TCP/IP 传输的网络文件系统协议。一般适用于内网
通过使用NFS协议,客户机可以像访问本地目录一样访问远程服务器中的共享资源

NAS存储: 它的实现依赖RPC (Remote Process Call,远端过程调用),通过RPC机制完成远程到本地的映射过程。

NFS服务: 提供目录共享的功能

当没有共享存储的时候
用户A上传图片到web服务器,通过负载均衡,将图片上传到了web1服务器
这时候用户A想让用户B去查看自己上传的图片
用户B通过负载均衡的时候,访问被分配到了web2服务器上了,但是web服务器上并没有用户A上传的图片,所以用户B访问不到
在这里插入图片描述

有了共享存储的时候
有了共享存储后,给每台web服务器都挂载上,存储里面的内容从任何一台web服务器都能看到
挂载在某个目录,这个目录其实就是这个存储的入口
用户A上传文件到web1服务器挂载的存储
用户B通过负载均衡访问web2服务器挂载的存储后,就可以访问到用户A上传的图片资源了

在这里插入图片描述

操作NFS其实就像操作本地的一个目录一样
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

服务端

服务端192.168.51.180
服务端192.168.51.187

1.安装
#yum install nfs-utils -y

2.配置
#cat /etc/exports

/data 192.168.51.1/24(rw,async)

3.根据配置进行初始化操作
#mkdir -p /data

4.启动
#systemctl start nfs
#systemctl enable nfs

客户端

1.客户端挂载
#yum install nfs-utils -y
#showmount -e 192.168.51.180 查看某主机提供的nfs服务

Export list for 192.168.51.180:
/data 192.168.51.1/24

挂载
#mount -t nfs 192.168.51.180:/data /tmp
这里挂载时候指定文件系统的类型为nfs类型,挂载到本地的/tmp目录,所以/tmp就成了nfs存储的入口

查看
#df -h
文件系统 容量 已用 可用 已用% 挂载点
192.168.51.180:/data 17G 4.4G 13G 26% /tmp
根下的/date目录和根用的不是一个盘符,所以通过NFS共享出去的也只是/date的容量,不包含根的容量

2.客户端执行创建操作,测试是否能读能写:
#touch /tmp/test.txt
touch: 无法创建"/tmp/test.txt": 只读(权限不够)

nfs客户端只读(权限不足)

解决:
先查看nfs是以哪个用户的身份运行的
#cat /var/lib/nfs/etab

/data			192.168.51.1/24(rw,async,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)

这里发现了这个用户的id,查询对应的用户名即可
cat /etc/passwd|grep 65534
在这里插入图片描述
用户名是nfsnobody

然后再查看一下我们共享的目录的权限
ll -d /data
在这里插入图片描述
发现运行nfs的nfsnobody对共享的目录/data压根没有权限,怪不得客户端没权限操作
所以我们给/data的权限到用户nfsnobody就行了
在这里插入图片描述
然后重启一下nfs服务
systemctl restart nfs

然后在客户端就可以进行写入的操作了

nfs配置文件参数

nfs配置文件中挂载有一些参数,需要我们了解:

nfs共享参数	参数作用
rw	---读写权限
ro		---只读权限
root_squash	---当NFS客户端以root管理员访问时,映射为NFS服务器的匿名用户(65534)(不常用)
no_root_squash	---当NFS客户端以root管理员访问时,映射为NFS服务器的root管理员(不常用)
no_all_squash	---无论NFS客户端使用什么账户访问,都不进行压缩
sync ---同时将数据写入到内存与硬盘中,保证不丢失数据.
async	---优先将数据保存到内存,然后再写入硬盘;这样效率更高,但可能会丢失数据


all_squash	---无论NFS客户端使用什么账户访问,均映射为NFS服务器的匿名用户(65534)(常用)
anonuid	---配置all_squash使用,指定NFS的用户UID,必须存在系统	(666)
anongid	---配置all_squash使用,指定NFS的用户UID,必须存在系统	(666)

例:

1.ro	NFS限制只读。
[root@nfs ~]# cat /etc/exports
/data 172.16.1.0/24(ro,async,all_squash)
[root@nfs ~]# systemctl restart nfs

验证
[root@backup ~]# mount -t nfs 172.16.1.31:/data /opt
[root@backup ~]# touch /opt/123.txt
touch: cannot touch '/opt/123.txt': Read-only file system

2.all_squash进行用户身份压缩,压缩为匿名用户65534,如果想调整匿名用户为666,需要使用anonuid、anongid、两个参数配置。

我希望调整匿名用户为 www  uid 为 666

[root@nfs ~]# cat /etc/exports
/data 172.16.1.0/24(rw,async,all_squash,anonuid=666,anongid=666)
[root@nfs ~]# systemctl restart nfs

[root@nfs ~]# groupadd -g666 www
[root@nfs ~]# useradd -u666 -g666 www
[root@nfs ~]# id www
uid=666(www) gid=666(www) 组=666(www)

[root@nfs ~]# chown -R www.www /data/


客户端进行挂载操作:
[root@backup ~]# mount -t nfs 172.16.1.31:/data /opt

[root@backup ~]# touch /opt/111
[root@backup ~]# ll /opt/
-rw-r--r-- 1 666 666 0 May 17 16:45 111
-rw-r--r-- 1 666 666 0 May 17 16:16 test.txt

建议:客户端也创建与服务端相同的用户、相同的uid和gid
[root@backup ~]# groupadd -g666 www
[root@backup ~]# useradd -u666 -g666 www
[root@backup ~]# ll /opt/
-rw-r--r-- 1 www www 0 May 17 16:45 111
-rw-r--r-- 1 www www 0 May 17 16:16 test.txt

如何实现永久挂载 ( 客户端上操作 )

需要将挂载的信息,写入到/etc/fstab文件中,以确保下次启动能正常的挂载。

#cat /etc/fstab
#…增加如下行

192.168.51.180:/data	/opt			nfs	defaults	0 0

如何检查写的对与不对? 如果不对,一重启就会出现挂载不上的情况。
#mount -a #如果没有报错,那么下次开机一定会自动挂载。(前提NFS服务端要确保是存活的。)

如何卸载

#umount /tmp		#卸载
#umount -lf /tmp	#强制卸载
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值