博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
NFS详解与实例
阅读量:6213 次
发布时间:2019-06-21

本文共 2108 字,大约阅读时间需要 7 分钟。

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.sh

spacer.gif

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

spacer.gif

服务器端查看:spacer.gif

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赋予这个文件。

客户端:

spacer.gif

服务器端:

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

如图:

客户端spacer.gif

服务器端:

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
你可能感兴趣的文章
Redis安全
查看>>
17秋 软件工程 团队第五次作业 Alpha Scrum9
查看>>
DIV和SPAN的区别
查看>>
Jodd
查看>>
处理 Windows 虚拟机的计划内维护通知
查看>>
redis资料收集
查看>>
CNN中的局部连接(Sparse Connectivity)和权值共享
查看>>
UNIX域套接字编程和socketpair 函数
查看>>
[LeetCode] Set Intersection Size At Least Two 设置交集大小至少为2
查看>>
Maven update project...后jdk变成1.5,update project后jdk版本改变
查看>>
Android 关于BottomDialogSheet 与Layout擦出爱的火花?
查看>>
【docker】启动docker连接数据库 出现FATAL: password authentucation failed for user "homestatead"问题...
查看>>
python二维数组初始化
查看>>
eclipse 如何修改maven插件本地仓库jar包默认存储位置
查看>>
Zookeeper浏览器工具和Eclipse插件
查看>>
【WPF】UI虚拟化之------自定义VirtualizingWrapPanel
查看>>
银行卡的三个磁道【转】
查看>>
Linux中添加、修改和删除用户和用户组
查看>>
解决eclipse maven 项目重新下载包这个问题
查看>>
appium定位h5
查看>>