写点什么

浅谈网络文件系统原理

  • 2024-11-19
    北京
  • 本文字数:1354 字

    阅读完需:约 4 分钟

本文分享自天翼云开发者社区《浅谈网络文件系统原理》,作者:谢****云


什么是网络文件系统?

网络文件系统(Network File System, NFS)实现了一种软件协议,能将远端的文件系统映射到本地,使用者访问网络上的文件就像在使用自己的计算机一样。远端是专属存储系统,通常称为 NAS 存储。比较出名的网络文件系统的实现包括 Sun 公司的 NFS,微软的 CIFS(Common Internet File System)等,网络文件系统的访问示意图如下:


图 1 网络文件系统挂载示意图


网络文件系统协议实现了将远端的目录树映射到本机,成为本机目录树种的一颗子树。一个实现合格的网络文件系统,实现了文件操作接口的 POSIX(Portable Operating System Interface X)语义,从而使用户操作操作网络文件系统像操作本地文件系统一样,用户不会感知到操作的文件或文件夹实际存储在远端。


网络文件系统的实现也分为,客户端和服务端两部分。其中,客户端实现与本地文件系统的实现类似,其主要差异是访问数据的时候,并不是访问本地磁盘设备,而是遵从一定的协议,通过网络访问 F 服务端。服务端负责处理客户端的访问请求,将对应的数据和元数据保存在磁盘上。


网络文件系统的关键技术:

(1)远程过程调用,RPC 协议

网络文件系统客户端与服务端之间的交互是通过一定的网络协议如 NFS 协议实现的。网络协议是通过函数调用的方式定义,主要内容包括 ID、参数和返回值等。为降低协议封装、解析的复杂性,通常会在文件提业务层与 TCP/IP 层之间封装一层交互实现,称之为 RPC 协议。RPC(Remote Procedure Call)是一种远程调用协议,它基于 Socket,位于 OSI 模型中会话层,客户端可以调用远程服务器上的程序或方法,并获取返回结果。

具体的,在客户端调用 RPC 函数时,会调用 RPC 库的接口将该函数转化为网络消息转发到服务端,服务端的 RPC 库对网络包进行解析,调用服务端注册的函数集中的函数来实现功能,然后再将执行的结果返回给客户端。


图 2 RPC 协议架构示意图


(2)文件系统协议

网络文件系统本质上是一个基于 C/S(客户端/服务端)架构的应用,其文件系统功能是通过客户端与服务端的交互来实现的。对于网络文件系统来说,其核心是之一是服务端与客户端的交互语言,文件系统协议。

网络文件系统的协议定义类似于函数调用,包含 ID,参数和返回值。

NFS 协议,是 SUN 公司设计的网络文件系统协议,默认是*unix 系统之间提供服务。包含 3 个版本,即 1984 年的 NFSv2、1995 年的 NFSv3 和 2000 年的 NFSv4。它所有的读写都是由内核负责,因此其 IO 性能比较高。



SMB 是 Server Message Block 是微软公司设计的网络系统协议,默认在 Windows 系统之间提供服务。包括 SMB1.0,SMB2.0,SMB3.0 版本。



由此可见,无论哪种协议,都有一组与文件系统语义对应的协议命令。客户端对文件系统的操作,都会通过网络文件协议封装转发到服务端,实现对文件的操作。


网络文件系统的优势:

如上,对网络文件系统的访问需要通过网络,其时延比本地文件系统大,但网络文件系统也有其优势,适合在一些场景中应用:

1.适合做数据共享:网络文件系统可以挂载在多个客户端,从而实现在多个客户端之间的数据共享。

2.存储空间大:网络文件系统服务端往往使用具有大存储空间的存储设备实现,具备海量的存储空间,远远大于本地文件系统。

3.可靠性高:网络文件系统服务端作为专用的存储系统,以一定的技术手段,如多副本等方式实现了数据的高可靠。

用户头像

还未添加个人签名 2022-02-22 加入

天翼云是中国电信倾力打造的云服务品牌,致力于成为领先的云计算服务提供商。提供云主机、CDN、云电脑、大数据及AI等全线产品和场景化解决方案。

评论

发布
暂无评论
浅谈网络文件系统原理_网络安全_天翼云开发者社区_InfoQ写作社区