searchusermenu
  • 发布文章
  • 消息中心
点赞
收藏
评论
分享
原创

浅谈网络文件系统原理

2023-05-29 07:06:55
63
0

什么是网络文件系统?

网络文件系统(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性能比较高。

                                                 表1  部分NFSv3协议命令

命令 ID API 说明
LOOKUP 3 - 查找文件
READ 6 read 读取数据
WRITE 7 write 写入数据
CREATE 8 create/open 创建一个常规文件
MKDIR 9 mkdir 创建一个目录
REMOVE 12 remove/unlink 删除一个常规文件
RMDIR 13 rmdir 删除一个目录

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

                                               表2  部分SMB2.0协议命令

命令 ID 说明
CREATE 0x005 创建一个文件
CLOSE 0x006 删除一个文件
FLUSH 0x007 刷新缓存
READ 0x008 读取数据
WRITE 0x009 写入数据
QUERY_DIRECTORY 0x00e 查询目录
QUERY_INFO 0x0010 查询文件和命名管道对象

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

网络文件系统的优势:

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

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

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

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

 

 

 

 

 

0条评论
0 / 1000
谢****云
2文章数
0粉丝数
谢****云
2 文章 | 0 粉丝
谢****云
2文章数
0粉丝数
谢****云
2 文章 | 0 粉丝
原创

浅谈网络文件系统原理

2023-05-29 07:06:55
63
0

什么是网络文件系统?

网络文件系统(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性能比较高。

                                                 表1  部分NFSv3协议命令

命令 ID API 说明
LOOKUP 3 - 查找文件
READ 6 read 读取数据
WRITE 7 write 写入数据
CREATE 8 create/open 创建一个常规文件
MKDIR 9 mkdir 创建一个目录
REMOVE 12 remove/unlink 删除一个常规文件
RMDIR 13 rmdir 删除一个目录

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

                                               表2  部分SMB2.0协议命令

命令 ID 说明
CREATE 0x005 创建一个文件
CLOSE 0x006 删除一个文件
FLUSH 0x007 刷新缓存
READ 0x008 读取数据
WRITE 0x009 写入数据
QUERY_DIRECTORY 0x00e 查询目录
QUERY_INFO 0x0010 查询文件和命名管道对象

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

网络文件系统的优势:

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

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

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

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

 

 

 

 

 

文章来自个人专栏
分布式存储技术
1 文章 | 1 订阅
0条评论
0 / 1000
请输入你的评论
0
0