NFS网络文件系统原理及案例

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了NFS网络文件系统原理及案例相关的知识,希望对你有一定的参考价值。

从现在开始我决定把我所学的知识以博客的形式分享给大家,希望对和我一样的菜鸟,同时梦想成为一只老鸟的IT小伙伴有一定的帮助!而对于我而言,这本身也是一种学习呢!好了废话不多说,我们开始进入主题;
我们人在接触一个新事物或者是一个新技一个新技术的时候,我们往往想到的第一个问题就是“这是什么呀?”或者“这是干什么的呀?”
那么NFS网络文件系统到底是一个什么东西,它的作用又是什么,我们在这里围绕这两个问题进行讨论;

1、什么是NFS

NFS是Network File System的缩写中文名网络文件系统,它的主要功能就是通过网络让不同的机器系统之间可以彼此共享文件或目录,NFS客户端可以通过挂载(mount)的方式将NFS服务器共享的目录挂载到本地,在NFS客户端看来就像是访问自己本地的目录或分区一样;
下面是我在网上找的NFS挂载流程图; -- 如图,NFS客户端共享自身/home/sharefile这个目录,客户端1和客户端2将NFS服务器共享的目录/home/sharefile挂载到本机 ---在这里我们可以理解成Windows7里边的共享目录,然后通过网络映射的方式映射到本地
技术分享图片

2、NFS的用作

NFS的作用是用来存放数据的,一般来说他的客户端就是应用服务器如web,NFS在工作场景中一般用来存储静态文件(如图片,视频,附件等)是当前互联网最长见的数据存
那么在实际架构中如果没有NFS服务器到底行不行呢?我们在这里简单的举一个例子与大家分享,以此来突出NFS服务的作用;
技术分享图片
这是我用思科模拟器简单的画的一个图,方便大家理解;
如图:我们先假设这就是腾讯qq的服务器,当小明在客户端A通过qq空间发布了一条带图片的说说,这时候会通过路由器把这条说说交给负载均衡调度器,调度器通过自身的一个算法,分配一台服务器来响应这个请求,假设把这个请求分配到了服务器A,那么这时候这条说说的图片也就存在了WEB服务A里边,
这时候小明和小红正好是qq好友,小红这时候通过客户端B要去访小明发的说说,咦!很奇怪,访问不到,怎么回事呢?原来这次调度在分配请求的时候将小红的请求分配给了WEB服务B,所以访问不到,那这时候如果WEB服务器A和WEB服务器B将NFS服务器共享的目录都挂载到本地,那么这时候小明在上传图片的时候,不管调度器把请求分配到哪一台WEB服务器,这时候WEB服务器都会把这张图片上传到NFS服务器;所以这时候小红在去访问这条说说的时候就可以顺利的看到图片啦!!!!
在了解完什么是NFS服务和NFS的作用之后,我们总得知道NFS客户端与NFS服务端是怎么建立连接,进行通信的吧!在这里也做一个简单描述;
技术分享图片
为了节约点时间我就在word上简单的画了一个图,方便大家理解记忆;
在理解通信流程之前我们首先要知道,NFS的端口号是不固定的,每次连接都会随机的分配一个小于1024的端口
首先服务端在开启NFS服务的时候会将自己的端口和其他信息注册到RPC服务里边,然后客户端的RPC(默认端口号:111)服务会通过TCP/IP协议向客户端发起请求,说我要连接到NFS服务器,请给我端口号,这时候服务器收到请求后,服务端的RPC服务就会通过TCP/IP协议把已经注册好的NFS端口信息发送给客户端的RPC服务,客户端收到端口信息后直接与NFS进行连接;在这里我们可以吧RPC服务理解成一个中介,当客户端需什么商品的时候就会想RPC索取,NFS就像是厂家,把自己所有的商品信息都注册给RPC服务;
最后我们来看看NFS是如何实现的吧!这里通过案例的形式与大家分享;重点注意配置的细节!!!!
server端配置:
[[email protected] 桌面]# cat /etc/redhat-release------------------>查看系统版本
CentOS release 6.5 (Final)
[[email protected] 桌面]# uname -r---------------------->查看内核
2.6.32-431.el6.x86_64
[[email protected] 桌面]# uname -m ---------------查看是多少位的系统
x86_64

[[email protected] 桌面]# rpm -qa | egrep "rpcbind|nfs"------------>查看系统有没有安装rpcbind和nfs软件(如果没有 可以用 yum install rpcbind nfs -y进行安装)这里我们可以看到已经安装
nfs-utils-1.2.3-39.el6.x86_64
nfs4-acl-tools-0.3.3-6.el6.x86_64
nfs-utils-lib-1.1.5-6.el6.x86_64
rpcbind-0.2.0-11.el6.x86_64
[[email protected] 桌面]# /etc/init.d/rpcbind status-------->查看RPC是否已经运行
rpcbind (pid 1576) 正在运行...
[[email protected] 桌面]# /etc/init.d/nfs status--------查看NFS是否已经运行
rpc.svcgssd 已停
rpc.mountd 已停
nfsd 已停
rpc.rquotad 已停
在这里我们要注意rpc和NFS的一个启动顺序,必须要在确保RPC启动的情况下才可启动nfs,因为nfs在启动的时候要向RPC服务进行注册自己端口信息;
[[email protected] 桌面]# /etc/init.d/nfs start----------------启动NFS服务
启动 NFS 服务: [确定]
关掉 NFS 配额: [确定]
启动 NFS mountd: [确定]
启动 NFS 守护进程: [确定]
正在启动 RPC idmapd: [确定]
[[email protected] 桌面]# rpcinfo -p localhost--------------------->我们可以使用rpcinfo查看nfs注册的信息
program vers proto port service
100000 4 tcp 111 portmapper
100000 3 tcp 111 portmapper
100000 2 tcp 111 portmapper
100000 4 udp 111 portmapper
100000 3 udp 111 portmapper
100000 2 udp 111 portmapper
100024 1 udp 59901 status
100024 1 tcp 54732 status
100011 1 udp 875 rquotad
100011 2 udp 875 rquotad
100011 1 tcp 875 rquotad
100011 2 tcp 875 rquotad
[[email protected] 桌面]# vim /etc/exports----------->编辑配置文件,我们可以看到打开什么都没有;
格式:共享的目录 共享客户端的网段(参数)
/mnt/test 172.20.10.0/24(rw,sync)---->注意没有空格,括号内是英文的逗号
[[email protected] 桌面]# chown nfsnobody:nfsnobody /mnt/test/ -----> 把文件的属主改成nfsnobody,因为NFS系统默认使用这个用户进行上传文件
[[email protected] 桌面]# /etc/init.d/nfs reload---------->使用reload让配置文件生效,平滑重启
[[email protected] 桌面]# showmount -e 172.20.10.13-------->可以使用showmount 进行查看共享了哪些目录
Export list for 172.20.10.13:
/mnt/test 172.20.10.0/24
客户端配置;
[[email protected] 桌面]# rpm -qa|grep rpcbind---->查看RPC安装情况如没有也可用yum install rpcbind -y 安装
rpcbind-0.2.0-11.el6.x86_64
[[email protected] 桌面]# /etc/init.d/rpcbind status---查看运行状态(客户端只需要开启RPC服务,如果没有看起用/etc/init.d/rpcbind start开启服务)
rpcbind (pid 1646) 正在运行..
[[email protected] 桌面]# mount -t nfs 172.20.10.13:/mnt/test /test --->用mount将服务器共享的目录挂载到本地挂载完成之后可以用df -h进行查看挂载情况
这时候我们可以在客户端的、/test目录里边创建一个文件touch aa 然后到服务端里的/mnt/test用ls -l 查看发现同样也会存在一个文件aa这时候我们的nfs文件系统就配置完成了
更多关于NFS的一些配置参数可以使用man nfs 寻求在线帮助;

以上是关于NFS网络文件系统原理及案例的主要内容,如果未能解决你的问题,请参考以下文章

nfs原理详解及配置

5)NFS存储实时复制原理

NFS - Network FileSystem网络文件系统的实现原理

NFS(网络文件系统)的创建及挂载使用

NFS网络文件系统原理与搭建

Linux运维之NFS网络文件系统功能介绍及应用场景