mysql nfs原理_NFS详解与实例

NFS(Network File System)即网络文件系统,是FreeBSD支持的文件系统中的一种,它允许网络中的计算机之间通过TCP/IP网络共享资源。在NFS的应用中,本地NFS的客户端应用可以透明地读写位于远端NFS服务器上的文件,就像访问本地文件一样。

NFS原理:NFS 支持的功能相当的多,而不同的功能都会使用不同的程序来启动, 每启动一个功能就会启用一些端口来传输数据,因此, NFS 的功能所对应的端口口才没有固定住, 而是随机取用一些未被使用的小于 1024 的端口来作为传输之用。但如此一来又造成客户端想要连上服务器时的困扰, 因为客户端得要知道服务器端的相关端口才能够联机吧!此时我们就得需要远程过程调用 (RPC) 的服务啦! RPC 最主要的功能就是在指定每个 NFS 功能所对应的 port number ,并且回报给客户端,让客户端可以连结到正确的埠口上去。 那 RPC 又是如何知道每个 NFS 的埠口呢?这是因为当服务器在启动NFS 时会随机取用数个埠口,并主动的向 RPC 注册,因此 RPC 可以知道每个端口对应的 NFS 功能,然后 RPC 又是固定使用 port 111 来监听客户端的需求并回报客户端正确的埠口, 所以当然可以让 NFS 的启动更为轻松愉快了!

简单点说:1.客户端会向服务器端的 RPC (port 111) 发出 NFS 档案存取功能的询问要求;

2.服务器端找到对应的已注册的 NFS daemon 埠口后,会回报给客户端;

3.客户端了解正确的埠口后,就可以直接与 NFS daemon 来联机

注:首次部署当发现多个nfs运行时,直接用yum remove nfs*全卸载,然后再安装

a.安装:

服务器端:yum install -y rpcbind

yum install -y nfs-utils

客户端:yum install -y nfs-utils

b.服务器端写配置文件

[root@Herry ~]# vim /etc/exports

/houzi 192.168.8.101(rw,sync,no_root_squash)   #/houzi是需要共享的目录

#192.168.8.101是客户端IP,也可以是一个网段

#括号里的都是权限,客户端对这个共享目录可读可写,同步到磁盘,且不限制客户端root)

c.在服务器端启动rpcbind和nfs-utils服务

/etc/init.d/rpcbind

/etc/init.d/nfs restart

d.客户端挂载共享目录

mount -t nfs -o nolock,nfsvers=3 192.168.8.103:/houzi /data    #192.168.8.103是服务端IP

#/data是客户端本地的目录

e.服务器端将共享目录权限设置成777

chmod 777 /houzi

f.客户端以root身份进入/data创建文件1.sh782c4acfa39b792d1cf33160132cbdcb.png

spacer.gif

客户端以普通用户Mysql进入/data创建文件9.sh

cbbe3a0d8acb098c4ec05ffeb0d820e4.png

spacer.gif

服务器端查看:

spacer.gifa4594fc708d245d3f6ed0e2abcbed9a9.png

no_root_squash 没有限制客户端的root,客户端以root身份创建的文件,在服务器端文件所属主组都是root;

客户端以UID为501的mysql身份去创建文件,服务器端则以UID为501的aop身份对应,如果服务器端没有对应的UID,则直接显示数字;

root_squash :服务器端设置成/houzi 192.168.8.101(rw,sync,root_squash,anonuid=502,anongid=502)

客户端以root权限去写文件时,服务器端就将该文件限制成服务器端502属主属组;

以普通用户UID为501的Mysql身份去写文件时,服务器端默认将自己的对应的501属主属组aop赋予这个文件。

客户端:12e4a7a3e070b6b43da7a90b2d476076.png

spacer.gif

服务器端:41c3f4561aca9d27eb0dff466f6797bf.png

spacer.gif

all_squash:客户端以root身份创建4.sh,以mysql身份创建5.sh,在服务器端都限制成UID为502的php-fpm

服务器端/etc/exports文件内容/houzi 192.168.8.101(rw,sync,all_squash,anonuid=502,anongid=502)

将客户端所有的用户创建的文件的属主属组都限制成服务器端的502

如图:

客户端5db168b019dc0c3c641e48442ff24694.png

spacer.gif

服务器端:13c0cf50301d789b730a0e3185eadf97.png

spacer.gif

注: 如果同时指定no_root_squash与all_squash 用户将被压缩为 nfsnobody,如果设置了anonuid、anongid将被压缩到所指定的用户与组,即no_root_squash不生效 ;

如果服务器端修改了/etc/exports文件,

a(或者直接exports -arv重新读取/etc/exports内容)则需要重启/etc/init.d/nfs restart;

b.然后再客户端重新挂载共享目录使生效

本文转自飞奔的小GUI博客51CTO博客,原文链接http://blog.51cto.com/9237101/1910493如需转载请自行联系原作者

ziwenzhou

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值