NFS 网络文件系统介绍

Posted

tags:

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

NFS网络文件系统介绍

  • 什么是NFS系统?

NFSNetwork File System 的缩写,它的主要功能是通过网络让不同的机器系统之间可以彼此共享文件和目录。
NFS服务器可以允许NFS客户端,将远端NFS服务器端的共享目录,挂载到本地NFS客户端中。(注NFS客户端一般为应用服务器如:web

NFS服务器端共享的目录就好像NFS客户端自己的磁盘分区和目录一样。

一般客户端挂载到本地目录的名字可以随便,但为方便管理,建议和服务器端一样比较好。

NFS一般是用来存储共享视频、图片等静态数据(对于用户上传的文件都存放在NFS共享里,图片、视频),是当前互联网系统架构中最常用的数据存储服务之一,特别是中小公司应用频率很高。(注大公司或门户使用:MFS,GFS FASTFS,分布式系统)

  • NFS挂载结构图
                                技术分享
    1、客户端/data/shard 目录里面的内容最好为空,要不挂载之后会暂时查找不到
    2、客户端要想存放文件成功必须服务端有把共享文件的权限打开
    3、客户端本地持载的时候,也是有权限设置

  • NFS挂载原理详细介绍
        当我们在NFS服务器端设置好共享存储目录/data/shard的后,其它的有权限访问NFS服务器端的NFS客户端可以将这个服务器上/data/shard共享目录,挂载到NFS客户端本地系统上的某个挂载点(其实就是一个目录,这个目录可以自己随意指定),上图中两个NFS客户端本地的挂载点都是/data/shard
        当正确挂载完毕后,进入到指定nfs客户端的/data/shard目录,就可以看到NFS服务器端/data/shard共享出来的目录下的所有数据,几乎感觉不到区别,根据NFS服务端授予的NFS共享权限,只要在指定的NFS客户端操作挂载点/data/shard的目录,就可以将数据轻松的存取到NFS服务器端上的/data/shard目录中

    挂载NFS后,NFS客户端本地的挂载内容显示如下,使用命令:df h
    在客户端查看挂载详细信息的命令:cat /proc/mounts
    在服务器端看挂载默认的参数:使用命令:cat  /var/lib/nfs/etab

        NFS是通过网络来进行服务端和客户端之间的数据传输。两者之间要传输数据就要有想对应的网络端口来进行传输。NFS服务器到底使用什么网络端口来传输数据的,NFS服务器端其实是随机选择端口来进行数据传输。那NFS客户端又是如何知道NFS服务器端到底使用的是哪个端口呢?其实NFS服务器时通过远程过程调用(remote procedure call 简称RPC)协议/服务来实现的。也就是说RPC服务会统一管理NFS的端口,客户端和服务端通过RPC来先沟通NFS使用了哪些端口,之后再利用这些端口(小于1024)来进行数据的传输。

    (注:原来是RPC管理服务端的NFS端口分配,客户端要传数据,那客户端的RPC会先跟服务端的RPC去要服务器的端口,要到端口后再建立连接,然后传输数据)

    这个rpc服务的应用在门户级的网站无处不在,(百度)

  • rpcnfs
        rpc(注在centos5.x系统里面是portmap服务、centos6.x系统里面是rpcbind服务)就是用来统一管理NFS端口的服务,并且统一对外的端口是111NFS服务端需要先启动rpc,再启动NFS,这样NFS才能够到RPC去注册端口信息。客户端的RPC可以通过向服务端的RPC请求获取服务端的NFS端口信息。当获取到了NFS端口信息后,就会以实际端口进行数据的传输。(由于NFS端口为随机的。)

  • RPCNFS如何通讯》
        因为NFS有很多功能,不同的功能需要使用不同的端口。因此NFS无法固定端口。而RPC会记录NFS端口的信息,这样我们就能够通过RPC实现服务端和客户端的RPC来沟通端口信息。

    RPCNFS之间又是如何之间相互通讯的?
    首先当NFS启动后,就会随机的使用一些端口,然后NFS就会向RPC去注册这些端口。RPC就会记录下这些端口。并且RPC会开机111端口,等待客户端RPC的请求,如果客户端有请求,那服务端的RPC就会将记录的NFS端口信息告知客户端。

    提示:在启动NFS SERVER之前,首先要启动RPC服务(即portmaprpcbind服务,下同)否则NFS SERVER就无法向RPC服务区注册,另外,如果RPC服务重新启动,原来已经注册好的NFS端口数据就会全部丢失。因此此时RPC服务管理的NFS程序也要重新启动以重新向RPC注册。特别注意:一般修改NFS配置文档后,是不需要重启NFS的,直接在命令执行/etc/init.d/nfs reloadexportfs rv即可使修改的/etc/exports生效。

    (注:这里有个启动顺序的点,先给大家讲清楚。因为NFS要向RPC注册端口信息。所以RPC一定要先于NFS早启动。我给大家比喻一个左手叠右手的游戏,此时就是一定要确保NFS的手掌(左)在RPC手掌(右)的上面。正常顺序是要RPC先叠上去,然后NFS再叠上去。如果RPC重启了,就相当于手掌抽出来了,然后重新叠上去。这样RPC就在NFS上面了,所以不行。此时我们的NFS就需要再重新启动一次。这样NFS抽出来然后再叠上去之后,NFS就在RPC上面了。如果NFS修改了配置,就直接reload就好了)

  • 《客户端NFS和服务端NFS通讯过程》
    1、首先服务器端启动RPC服务,并开启111端口
    2、启动NFS服务,并向RPC注册端口信息
    3、客户端启动RPCportmap服务),向服务端的RPC(portmap)服务请求服务端的NFS端口
    4、服务端的RPC(portmap)服务反馈NFS端口信息给客户端。
    5、客户端通过获取的NFS端口来建立和服务端的NFS连接并进行数据的传输。

  • 客户端NFS和服务端NFS通讯过程流程图
    技术分享




 


本文出自 “12132662” 博客,请务必保留此出处http://12142662.blog.51cto.com/12132662/1869796

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

NFS介绍 NFS服务端安装配置 NFS配置选项

linux初学者-NFS网络文件系统篇

NFS共享文件系统的介绍与配置

NFS(网络文件系统)

Linux NFS介绍

NFS介绍