CN110109889A - 一种分布式内存文件管理系统 - Google Patents

一种分布式内存文件管理系统 Download PDF

Info

Publication number
CN110109889A
CN110109889A CN201910384983.6A CN201910384983A CN110109889A CN 110109889 A CN110109889 A CN 110109889A CN 201910384983 A CN201910384983 A CN 201910384983A CN 110109889 A CN110109889 A CN 110109889A
Authority
CN
China
Prior art keywords
file
file data
storage server
client
metadata
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Pending
Application number
CN201910384983.6A
Other languages
English (en)
Inventor
陈咸彰
沙行勉
刘成龙
曾孝平
诸葛晴凤
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Chongqing University
Original Assignee
Chongqing University
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Chongqing University filed Critical Chongqing University
Priority to CN201910384983.6A priority Critical patent/CN110109889A/zh
Publication of CN110109889A publication Critical patent/CN110109889A/zh
Pending legal-status Critical Current

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/10File systems; File servers
    • G06F16/13File access structures, e.g. distributed indices
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/10File systems; File servers
    • G06F16/17Details of further file system functions
    • G06F16/172Caching, prefetching or hoarding of files
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/10File systems; File servers
    • G06F16/18File system types
    • G06F16/182Distributed file systems

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Data Mining & Analysis (AREA)
  • Databases & Information Systems (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Information Retrieval, Db Structures And Fs Structures Therefor (AREA)

Abstract

本发明公开一种分布式内存文件管理系统,设置有元数据存储服务器和文件数据存储服务器,所述元数据存储服务器用于管理系统的元数据信息和所述文件数据存储服务器的相关信息,所述文件数据存储服务器用于存放文件数据块,客户端通过元数据存储服务器获取文件数据块的物理地址,然后再通过RDMA单侧读写直接访问文件数据块在文件数据存储服务器中的物理内存。其效果是:避免了在文件数据存储服务器的本地文件系统查询文件数据块索引的开销,同时可以利用索引预取和空间预分配将元数据保存在客户端缓存中,降低客户端请求元数据存储节点查询索引的通信频率,进一步提升数据访问性能。

Description

一种分布式内存文件管理系统
技术领域
本发明涉及计算机内存管理技术,更具体地说,是一种分布式内存文件管理系统。
背景技术
近年来,新兴的非易失性存储器(Non-Volatile Memory,简称NVM)具有可按字节寻址、掉电数据不丢失、读写性能接近DRAM等特点,同时远程直接数据存取(Remote DirectMemory Access,简称RDMA)技术为实现高效的远程数据访问提供了机会。现有的分布式内存文件系统正试图将NVM和RDMA技术整合到文件系统中来提高数据访问性能。
然而这些分布式内存文件系统严格分隔了文件系统和网络层,只是通过RDMA库取代通讯模块,或者使用NVM取代主内存和本地存储介质,而并没有重构内部文件系统机制。这种分层且繁重的软件设计使得分布式内存文件系统过于沉重,无法充分利用新兴高速硬件的优势。
现有的这些分布式内存文件系统在每个存储节点上是以文件的方式组织起来的。即使存储介质是NVM,数据的访问也需要经过I/O软件层,特别是在大数据处理框架中,比如MapReduce是将一个大文件分割成多个文件块,并将文件块分散到分布式文件系统中,现有的分布式文件系统是将文件块作为独立文件存储在存储节点的本地文件系统上。因此,访问大数据文件内的任何数据都需要搜索两次才能找到数据的位置。这些分布式内存文件系统中的极高速RDMA网络和NVM存储器仍由本地文件系统和数据缓冲区隔离。
发明内容
针对现有技术中存在的问题,本发明提出一种分布式内存文件管理系统,以提升数据访问性能。
为了实现上述目的,本发明所采用的具体技术方案如下:
一种分布式内存文件管理系统,其关键在于:设置有元数据存储服务器和文件数据存储服务器,所述元数据存储服务器用于管理系统的元数据信息和所述文件数据存储服务器的相关信息,所述文件数据存储服务器用于存放文件数据块,客户端通过元数据存储服务器获取文件数据块的物理地址,然后再通过RDMA单侧读写直接访问文件数据块在文件数据存储服务器中的物理内存。
可选地,所述客户端设置有元数据缓存模块,系统利用索引预取和空间预分配将元数据保存在所述元数据缓存模块中。
可选地,一个完整文件的数据内容被分割成多个“文件数据块”,每个文件数据块都分别被复制到多台文件数据存储服务器中。
可选地,所述文件数据块为一段连续的NVM存储空间,且可通过RDMA读/写操作直接访问。
可选地,系统利用元数据存储服务器管理文件数据存储服务器的空闲NVM存储空间,客户端直接从元数据存储服务器中分配空闲文件数据块。
可选地,对于每一台文件数据存储服务器,其NVM存储空间都已注册给本地文件系统和元数据存储服务器;
在本地文件系统中,该段NVM存储空间被注册为RDMA可访问空间,用于支持远程直接数据存取,并且对本机呈屏蔽状态;
在元数据存储服务器中,该段NVM存储空间被注册用于自由存储空间管理。
可选地,所述元数据存储服务器中设置文件元数据索引结构,每一个索引条目对应一个文件数据块,记录相应文件数据块的文件数据存储服务器编号、文件数据块大小和起始物理地址。
本发明的显著效果是:
通过设置元数据存储服务器和文件数据存储服务器,针对客户端对远程存储节点的数据访问请求,客户端利用元数据存储服务器记录的物理地址,通过RDMA单侧读写直接访问文件数据块在文件数据存储服务器中的物理内存,避免在文件数据存储服务器的本地文件系统查询文件数据块索引的开销,同时利用索引预取和空间预分配将元数据保存在客户端缓存中,降低客户端请求元数据存储节点查询索引的通信频率,进一步提升数据访问性能。
附图说明
下面将结合附图及实施例对本发明作进一步说明,附图中:
图1为本发明的系统架构图;
图2为本发明具体实施例中的文件索引结构图;
图3为本发明具体实施例中的客户端自治数据I/O机制示意图;
图4为本发明具体实施例中的文件读取操作流程图;
图5为本发明具体实施例中的文件写入操作流程图。
具体实施方式
为了使本发明要解决的技术问题、技术方案和优点更加清楚,下面将结合附图及具体实施例进行详细描述,应当理解,此处所描述的具体实施例仅仅用以解释本发明,并不用于限定本发明。
如图1所示,本本实施例提供一种分布式内存文件管理系统,可定义为星云分布式内存文件系统,简称Nebula,它是一种高性能且扩展灵活的分布式内存文件系统,其设计依赖配备了NVM存储器的服务器集群和RDMA网络。类似于HDFS,Nebula同样有两种服务器:元数据存储服务器和文件数据存储服务器,元数据存储服务器NameNode用于数据管理,在Nebula中称为Master,文件数据存储服务器DataNodes用于存放文件数据,在Nebula中称为Slave。一个完整文件的数据内容被分割成多个“文件数据块”,每个文件数据块都分别被复制到多台Slave服务器中。与HDFS不同之处在于,Nebula中的文件数据块是一段连续的NVM存储空间,可以使用RDMA读/写操作直接访问,而不像HDFS中DataNodes的完整文件,只能通过本机文件系统的I/O例程访问。因此,Nebula可以通过避免本地文件系统缓慢的I/O例程和使用高速的RDMA硬件实现更高的数据访问性能。
为了支持这种文件访问模式,Master服务器有两个责任。首先,管理Nebula的命名空间也就是目录和数据文件的层次结构,通过Inode表示。在Nebula中,一个Inode不仅保存了文件的属性,而且还通过索引来维护系统中文件数据块的位置。
其次,Master服务器管理Slave服务器的空闲NVM存储空间。在传统的分布式内存文件系统中,DateNodes的可用空间由DateNodes的本地文件系统管理。在写入数据时,客户端请求NameNode指定一组DataNodes来写数据,然后客户端连接指定的DataNode,调用DataNode的操作系统来分配空闲空间并写入数据。与之相反,Nebula的客户端直接从Master服务器分配空闲文件数据块而不需要中断Slave服务器的操作系统。
对于每台Slave服务器,其NVM存储空间都已注册给本地文件系统和Master服务器。在本地文件系统中,该段空间被注册为RDMA可访问空间,用于支持远程直接数据存取,并且对本机呈屏蔽状态,本地文件系统并不知道自己挂载了这段NVM存储器,只有客户端能够读写这段空间,进而实现了对本地文件系统的隔离,避免Slave服务器对这段空间进行读写更改。在Master服务器中,这段NVM存储空间被注册用于自由存储空间管理。当一台Slave服务器被添加到系统中时,它的NVM存储空间在Master服务器中注册,然后,Slave服务器便从文件管理中释放,并且可以完全专注于数据存储任务。
如图2所示,客户端读写文件数据时,通过Master服务器查询文件元数据索引,根据索引信息直接对Slave服务器的NVM存储空间进行RDMA数据访问。在Nebula分布式内存文件系统中,文件数据块以单个块为单位存储在Slave服务器中。因此,客户端只要拥有相应的NVM数据块地址,就可以通过RDMA读写操作直接访问Slave服务器上的任何文件数据块。通过避免Slave服务器的本地文件系统根据索引查询文件数据块具体地址的软件开销,和避免数据缓冲区与NVM存储空间之间的数据复制,可以大大地提高Nebula的整体性能。
与传统的分布式内存文件系统中NameNode将文件数据块到独立文件的映射存储在DataNode上不同,在Nebula分布式内存文件系统中,Master服务器的每一个文件Inode都维护一份索引信息,用于保存文件数据块到Slave服务器上启用RDMA的NVM数据块的映射。索引的一个条目对应一个文件数据块,记录相应文件数据块的Slave_id、文件数据块大小和起始物理地址。基于这样的设计,Nebula的每个文件索引直接存储Slave服务器中的文件数据块的物理地址。客户端发起读写请求后,会根据Master服务器的文件Inode中记录的实际文件数据块物理地址,直接进行RDMA数据访问。实际上,文件数据块有多个索引条目副本,为了简单起见,本文仅在图2中为每个文件数据块显示一个索引条目。
文件数据块的大小可以根据实际写入数据的大小动态地进行调整,在文件索引条目中,文件数据块大小表示相应的远端Slave服务器中实际存储的文件数据块的大小。除了文件数据块物理地址之外,RDMA数据访问还需要客户端和相应的Slave服务器先建立RDMA连接。为了建立这样的连接,Nebula通过Slave服务器的唯一标识Slave_id在Slave信息表中查询对应的IP地址和端口号。当客户端需要访问某台Slave服务器的文件数据块时,会通过Slave_id对应的IP地址和端口号与其建立RDMA连接,然后再进行RDMA数据访问。为了节约构建连接的成本,客户端会维护其先前构建的连接,直到不再需要相应Slave服务器的文件数据块为止。总之,一旦客户端通过Master服务器获得相应的文件数据块物理地址,客户端就可以通过单侧RDMA读写操作直接访问Slave服务器上的任何文件数据块。
如图3所示,为进一步优化数据访问性能,Nebula采取客户端自治数据I/O机制,客户端自治数据I/O优化的主要思想是尽可能在客户端缓存元数据,每当客户端连接Master服务器时,Master服务器都会将其它更多的元数据信息附加回客户端。Nebula分布式内存文件系统采取两种技术缓存元数据:索引预取和空间预分配。
1)索引预取
通常情况下客户端访问文件数据块需要与Master服务器进行通信以查询文件数据块的索引信息,查询操作会导致通信开销,并需要在Master服务器中搜索文件索引。因此,本文建议在Nebula中预取文件索引。
Nebula在客户端使用元数据缓存来保存文件索引,每当客户端打开文件或者通过Master服务器查询新的文件数据块索引时,后续三个文件数据块的Slave_id、物理地址和大小将都被发回并缓存到客户端。
应用程序可以通过创建新文件并向其写入数据或者打开文件并追加或修改新数据来向Nebula添加新数据。除非Slave服务器失效,否则缓存的文件索引总是对将来的基于RDMA的数据访问有效。在这种情况下,客户端通过其它Slave服务器中的备份仍可以进行数据访问。
2)空间预分配
在Nebula中,Slave服务器的NVM存储空间全部由Master服务器进行管理。因此对于写密集型应用程序,系统性能可能会降低。为了减轻Master服务器的负担并减少通信开销,Nebula为具有写入权限的客户端预分配文件数据块。
当客户端打开具有写入权限的文件时,Master服务器运行内存管理线程为客户端预先分配NVM存储空间。该线程通过查询Slave信息表确定剩余存储空间最多的Slave服务器并从该台服务器分配文件数据块,这些预分配的文件数据块信息被发送回客户端并存储在元数据缓存中。与可写入文件的打开操作类似,如果客户端通过Master服务器请求新空间用来写入数据,Master服务器同样会为客户端预先分配NVM存储空间。通过预先分配文件数据块,客户端可以通过单侧RDMA写操作在客户端自主地写入新的文件数据。
从Master服务器的角度来看,预分配的NVM存储空间被视为已用空间。如果客户端断开连接,它会将未使用的预分配空间返回给Master服务器。如果某台Slave服务器的剩余NVM存储空间少于20%,Master服务器会询问客户端预分配文件数据块的使用情况,该台Slave服务器尚未被客户端使用的预分配NVM存储空间将被回收。
通过图3还可以看出,常规读写操作与客户端自治数据I/O优化后的读写操作的区别:
针对读取操作而言:
图3(a)展示了Nebula的常规读取操作流程(即没有预取文件索引的操作)。具体来说,一次常规的Nebula读取操作由四个步骤组成:首先,客户端通过RPC向Master服务器发送读取请求,请求参数包括文件路径、偏移量和读取数据大小。其次,Master服务器分配一个线程来处理请求,线程解析参数并查找所需文件数据块的相关信息,包括Slave_id和物理地址。然后,线程将文件数据块相关信息通过RPC发送回客户端。最后,客户端通过RDMA读操作直接读取相应Slave服务器上的文件数据块。总之,一次常规的读取操作由两次RPC操作、一次Master服务器的CPU占用和一次RDMA读取操作组成,Slave服务器的操作系统不涉及整个读取操作。
为了进一步提高读取性能,Nebula使用索引预取技术来减少Master服务器的两次RPC操作和CPU占用。利用索引预取功能,客户端可以在本地元数据缓存中保存文件数据块的相关信息。在进行预取索引后,读取操作可由客户端通过RDMA单侧读取操作自主完成。图3(b)展示了客户端自治读取操作的详细流程,读取操作只需两步完成:首先,客户端在本地元数据缓存中找出请求数据的文件数据块相关信息。然后,客户端通过RDMA读取操作直接读取相应Slave服务器上的文件数据块。在这种情况下,Master服务器和相应的Slave服务器的操作系统全部从读取操作中解放出来。
具体的读取操作流程如图4所示,Nebula分布式内存文件系统的读文件流程从客户端发起读取操作请求开始,操作请求包括请求类型和请求数据。在Nebula读操作中,相关的请求类型包括打开文件请求和读取文件请求。打开文件请求对应的请求参数为文件路径,读取操作请求对应的请求参数为文件唯一标识号Ino、偏移量和读取数据大小。
因为Nebula实现了客户端自治数据I/O机制,会将元数据索引预取并保存在本地元数据缓存中,所以客户端读取文件之前,会先判断本地元数据缓存是否包含本次读取操作相关的索引信息,如果包含则不需要再与Master服务器进行任何连接和通讯,便可以直接对Slave服务器的文件数据块发起RDMA单侧读取请求。如果本地元数据缓存不包含此次读取操作的相关索引信息,客户端需要与Master服务器建立连接,并向Master服务器发送打开文件请求。Master服务器接收到请求参数后,将请求参数进行分割,根据请求参数中分割出来的文件路径,在本地文件系统中查询该文件是否存在。如果该文件存在,Master服务器根据文件路径与文件唯一标识号Ino之间的映射关系,查询得到文件Ino并返还给客户端。如果该文件不存在,Master服务器通过调用创建文件的内部函数,新建一个命名为该文件路径的文件,并将新创建的文件对应的Ino返还给客户端。
客户端接下来会向Master服务器发送读取文件请求,请求参数包括打开文件时Master服务器返还的文件唯一标识号Ino,再加上此次读取操作的偏移量和读取数据大小。Master服务器接收到读取文件请求后,根据文件唯一标识号Ino可以在本地元数据信息管理中锁定具体的文件元数据Inode信息,Inode信息包括文件的大小和所有者等状态信息,同时也包括了文件数据块的索引信息和前缀和数组信息,进而可以在确定的Inode中查找文件数据块。具体操作为,Master服务器根据文件Ino确定Inode后,根据偏移量和读取数据大小,计算出此次读取文件的起始地址和结束地址,根据起始地址和结束地址,分别在前缀和数组中进行查找,找到此次读取操作对应的第一个文件数据块和最后一个文件数据块。前缀和数组的查找过程是根据起始地址和结束地址,应用二分查找法分别找到相应的前缀和数组中的元素,进而确定索引对应的文件数据块。Master服务器将查找得到的第一个到最后一个文件数据块的索引信息全部返回给客户端,客户端根据每个文件数据块的索引信息直接对Slave服务器的文件数据块进行RDMA单侧读取访问。如果是启用了索引预取的情况,还需要在前面返回的所有文件数据块的基础上,多返回后面的三个文件数据块给客户端,客户端会将这三个文件数据块的索引信息缓存,再次对该文件继续读取时便可以在本地元数据缓存中进行索引查询,避免了客户端与Master服务器多次查询索引的通信时间。
客户端得到Master服务器返回的所有文件数据块信息后,就得到了此次读取操作需要的所有索引信息,包括每个文件数据块的Slave_id、物理地址和大小等信息,客户端通过这些索引信息对Slave服务器进行RDMA单侧读取访问。客户端先确认是否已经与相应的Slave服务器建立了RDMA连接,如果没有则先建立RDMA连接。由于RDMA数据访问操作需要通信双方提供经过DMA映射的内存地址,因此需要将客户端的用户态内存缓冲区注册,方便存放从Slave服务器读取过来的数据内容。然后客户端根据文件数据块索引信息,构建RDMA读取请求,并将构建好的请求放入请求队列。请求队列中请求的发送并不需要用户操作,RDMA网卡驱动会自主地将请求队列中的请求依次发送出去,并将发送完成的请求放入到完成队列中。用户通过轮询或者回调函数的方式在完成队列中查询读取请求是否发送成功,RDMA读取请求发送成功代表一次文件数据块的读取操作成功完成。
所有RDMA读取请求全部发送成功则本次读文件流程结束,即使某个文件数据块读取失败,由于Nebula在写入数据时,每写入一个新的文件数据块都会选择另外三个不同的Slave服务器写入三个备份并都保存在元数据索引中,因此只需要读取其他Slave服务器中的备份文件数据块即可。
针对写入操作而言:
如果客户端拥有足够的预分配空闲文件数据块,它会直接将数据写入文件数据块。当预分配的空闲文件数据块全部被使用或者文件关闭时,客户端将通知Master服务器更新相关的元数据信息。这样,在Master服务器上的索引更新后,新发送读请求的读者也可以看到更新后的数据。
图3(c)展示了Nebula常规的写入操作流程(即没有预先获取文件索引和预先分配空间的操作)。具体来说,Nebula的常规写入操作有五个步骤:首先,客户端通过RPC向Master服务器发送写请求,请求参数包括文件路径、偏移量、请求的数据内容和请求数据大小。其次,Master服务器分配一个线程来解决写请求,线程解析请求参数并分配写请求所需的适当文件数据块。然后,线程通过RPC将新分配的文件数据块的相关信息发送给客户端。接下来,客户端使用文件数据块的物理地址通过RDMA写操作将新数据写入到Slave服务器的NVM存储空间中。最后,一旦新数据被成功写入到Slave服务器的NVM存储空间,客户端通过RPC更新Master服务器中的文件元数据信息。总之,一次常规的写入操作由三次RPC操作,两次Master服务器的CPU占用以及一次RDMA写操作组成,Slave服务器的操作系统不涉及整个写入操作。
为了进一步提高写入性能,Nebula结合了空间预分配和索引预取技术,以减少RPC操作和Master服务器的CPU占用率。通过预先分配NVM存储空间,客户端可以使用RDMA写操作将新数据自主地写入到文件中。图3(d)展示了客户端自治写入操作的详细流程。客户端自治写入操作只需三步完成:首先,客户端在本地元数据缓存中找出请求数据的文件数据块相关信息。然后,客户端通过RDMA写入操作将新数据直接写入到Slave服务器的文件数据块中。最后,更新Master服务器中的文件元数据信息。
具体的写入操作流程如图5所示,Nebula分布式内存文件系统中写文件操作流程从客户端发起写入操作请求开始,操作请求包括请求类型和请求数据。在Nebula写操作流程中,相关的请求类型有打开文件请求和写入文件请求。打开文件请求对应的请求参数为文件路径,写入操作请求对应的请求参数为文件唯一标识号Ino、偏移量和读取数据大小。
因为Nebula实现了客户端自治数据I/O机制,会预先分配文件数据块并将元数据索引保存在本地元数据缓存中,所以客户端写入文件之前,会先判断本地元数据缓存是否包含本次写入操作相关的索引信息,如果包含则直接与Slave服务器建立RDMA连接并发起RDMA单侧写入请求。如果预分配的文件数据块不满足本次写入操作需求,客户端需要与Master服务器建立连接,并向Master服务器发送打开文件请求,请求参数为文件路径。Master服务器根据请求参数中的文件路径,在本地文件系统中查询该文件是否存在。如果该文件存在,Master服务器根据文件路径与文件唯一标识号Ino之间的映射关系,查询得到文件Ino并返还给客户端。如果该文件不存在,Master服务器通过调用创建文件的内部函数,新建一个命名为该文件路径的文件,并将新创建的文件对应的Ino返还给客户端。客户端接收到Master服务器返还的文件唯一标识号Ino后,对请求参数重新封装,将Ino、偏移量和写入数据大小发送给Master服务器并发起写入文件请求。Master接收到写入文件请求后,将偏移量和写入数据大小的总和与文件大小作比较,判断此次写入操作属于Append、Partial-append和Inplace中的哪种类型,前两种写入类型都需要分配新的文件数据块。需要分配新的文件数据块时,Master服务器查询本地Slave空间存储列表,选取三个剩余NVM存储空间最多的Slave服务器提供文件数据块,新分配的文件数据块信息记录在该文件元数据Inode索引中。
根据偏移量和写入数据大小,计算出本次写入文件的起始地址和结束地址,应用二分查找法在前缀和数组中分别查找起始地址和结束地址对应的元素,进而找到对应的文件数据块,得到本次写入操作对应的第一个和最后一个文件数据块。Master服务器将这些文件数据块的索引信息全部返还给客户端。如果是启用了空间预分配的情况,还需要预先分配文件数据块,并将预分配的文件数据块信息一起发送给客户端,并缓存在客户端的元数据缓存中。
客户端得到Master服务器返回的所有文件数据块信息后,就得到了此次写入操作需要的所有索引信息,包括每个文件数据块的Slave_id、物理地址和大小等信息,客户端通过这些索引信息对Slave服务器进行RDMA单侧写入访问。客户端先确认是否已经与相应的Slave服务器建立了RDMA连接,如果没有则先建立RDMA连接。由于RDMA数据访问操作需要通信双方提供经过DMA映射的内存地址,因此需要将客户端的用户态内存缓冲区注册,方便将缓冲区中的数据发送出去。然后客户端根据文件数据块索引信息,构建RDMA写入请求,并将构建好的RDMA写请求放入请求队列。请求队列中请求的发送并不需要用户参与,RDMA网卡驱动会自主地将请求队列中的请求依次发送出去,并将发送完成的请求放入完成队列。用户只需要通过轮询或者回调函数的方式,查询完成队列中的请求是否成功。每在完成队列中查询到一个操作请求,代表成功完成了一次RDMA数据写入操作。
如果RDMA写入请求全部发送成功,代表本次文件写文件流程结束。考虑到数据安全因素,客户端每次请求文件数据块时,Master服务器都会提供三个不同Slave服务器的文件数据块,这样可以防止某个文件数据块写入操作失败破坏数据的一致性。
综上所述,本实施例提供的一种分布式内存文件管理系统,有效提升了分布式内存文件系统的数据访问性能,最高带宽达到网卡硬件所能提供的最大理论带宽的95%以上。
最后应当说明的是,上面结合附图对本发明的实施例进行了描述,但是本发明并不局限于上述的具体实施方式,上述的具体实施方式仅仅是示意性的,而不是限制性的,本领域的普通技术人员在本发明的启示下,在不脱离本发明宗旨和权利要求所保护的范围情况下,还可做出很多形式,这些均属于本发明的保护之内。

Claims (7)

1.一种分布式内存文件管理系统,其特征在于:设置有元数据存储服务器和文件数据存储服务器,所述元数据存储服务器用于管理系统的元数据信息和所述文件数据存储服务器的相关信息,所述文件数据存储服务器用于存放文件数据块,客户端通过元数据存储服务器获取文件数据块的物理地址,然后再通过RDMA单侧读写直接访问文件数据块在文件数据存储服务器中的物理内存。
2.根据权利要求1所述的分布式内存文件管理系统,其特征在于:所述客户端设置有元数据缓存模块,系统利用索引预取和空间预分配将元数据保存在所述元数据缓存模块中。
3.根据权利要求1或2所述的分布式内存文件管理系统,其特征在于:一个完整文件的数据内容被分割成多个“文件数据块”,每个文件数据块都分别被复制到多台文件数据存储服务器中。
4.根据权利要求3所述的分布式内存文件管理系统,其特征在于:所述文件数据块为一段连续的NVM存储空间,且可通过RDMA读/写操作直接访问。
5.根据权利要求3所述的分布式内存文件管理系统,其特征在于:利用元数据存储服务器管理文件数据存储服务器的空闲NVM存储空间,客户端直接从元数据存储服务器中分配空闲文件数据块。
6.根据权利要求5所述的分布式内存文件管理系统,其特征在于:对于每一台文件数据存储服务器,其NVM存储空间都已注册给本地文件系统和元数据存储服务器;
在本地文件系统中,该段NVM存储空间被注册为RDMA可访问空间,用于支持远程直接数据存取,并且对本机呈屏蔽状态;
在元数据存储服务器中,该段NVM存储空间被注册用于自由存储空间管理。
7.根据权利要求3所述的分布式内存文件管理系统,其特征在于:所述元数据存储服务器中设置文件元数据索引结构,每一个索引条目对应一个文件数据块,记录相应文件数据块的文件数据存储服务器编号、文件数据块大小和起始物理地址。
CN201910384983.6A 2019-05-09 2019-05-09 一种分布式内存文件管理系统 Pending CN110109889A (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN201910384983.6A CN110109889A (zh) 2019-05-09 2019-05-09 一种分布式内存文件管理系统

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN201910384983.6A CN110109889A (zh) 2019-05-09 2019-05-09 一种分布式内存文件管理系统

Publications (1)

Publication Number Publication Date
CN110109889A true CN110109889A (zh) 2019-08-09

Family

ID=67489058

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201910384983.6A Pending CN110109889A (zh) 2019-05-09 2019-05-09 一种分布式内存文件管理系统

Country Status (1)

Country Link
CN (1) CN110109889A (zh)

Cited By (15)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN110727612A (zh) * 2019-09-09 2020-01-24 无锡江南计算技术研究所 一种基于精确预取的计算缓存装置
CN111309764A (zh) * 2019-12-18 2020-06-19 上海金融期货信息技术有限公司 一种高效低冗余客户端数据缓存装置
CN111367876A (zh) * 2020-03-04 2020-07-03 中国科学院成都生物研究所 一种基于内存元数据的分布式文件管理方法
CN111796772A (zh) * 2020-07-07 2020-10-20 西北工业大学 缓存的管理方法、缓存节点及分布式存储系统
CN112347506A (zh) * 2020-10-29 2021-02-09 珠海高凌信息科技股份有限公司 具有拟态防御特性的网络存储系统及方法
WO2021097802A1 (zh) * 2019-11-22 2021-05-27 华为技术有限公司 处理非缓存写数据请求的方法、缓存器和节点
CN112948025A (zh) * 2021-05-13 2021-06-11 阿里云计算有限公司 数据加载方法、装置及存储介质、计算设备、计算系统
CN113032351A (zh) * 2021-03-31 2021-06-25 建信金融科技有限责任公司 网络文件系统的回收方法及装置
CN113051102A (zh) * 2019-12-26 2021-06-29 中国移动通信集团云南有限公司 文件备份方法、装置、系统、存储介质和计算机设备
CN113094374A (zh) * 2021-04-27 2021-07-09 广州炒米信息科技有限公司 分布式存储和检索方法、装置及计算机设备
CN113220693A (zh) * 2021-06-02 2021-08-06 北京字节跳动网络技术有限公司 计算存储分离系统及其数据访问方法、介质和电子设备
CN114866537A (zh) * 2022-05-31 2022-08-05 山东省计算中心(国家超级计算济南中心) 一种跨主机跨网络的文件传输方法及系统
US11782637B2 (en) 2021-01-05 2023-10-10 Red Hat, Inc. Prefetching metadata in a storage system
CN117076391A (zh) * 2023-10-12 2023-11-17 长江勘测规划设计研究有限责任公司 一种水利元数据管理系统
CN117149708A (zh) * 2023-08-31 2023-12-01 中电云计算技术有限公司 一种文件访问方法、装置、设备及存储介质

Citations (8)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN104580437A (zh) * 2014-12-30 2015-04-29 创新科存储技术(深圳)有限公司 一种云存储客户端及其高效数据访问方法
CN105393239A (zh) * 2013-09-05 2016-03-09 谷歌公司 隔离分布式存储系统的客户端
CN105426321A (zh) * 2015-11-13 2016-03-23 上海交通大学 采用远程位置信息的rdma友好缓存方法
CN105765554A (zh) * 2013-12-05 2016-07-13 谷歌公司 在分布式存储系统上分发数据
CN106164899A (zh) * 2014-01-31 2016-11-23 谷歌公司 从分布式存储系统的高效数据读取
CN107493329A (zh) * 2017-08-15 2017-12-19 诸葛晴凤 一种分布式内存文件系统的远程文件访问方法
CN107888657A (zh) * 2017-10-11 2018-04-06 上海交通大学 低延迟分布式存储系统
US10042869B1 (en) * 2013-05-24 2018-08-07 Datadirect Networks, Inc. Method for data transfer between compute clusters and file system

Patent Citations (8)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US10042869B1 (en) * 2013-05-24 2018-08-07 Datadirect Networks, Inc. Method for data transfer between compute clusters and file system
CN105393239A (zh) * 2013-09-05 2016-03-09 谷歌公司 隔离分布式存储系统的客户端
CN105765554A (zh) * 2013-12-05 2016-07-13 谷歌公司 在分布式存储系统上分发数据
CN106164899A (zh) * 2014-01-31 2016-11-23 谷歌公司 从分布式存储系统的高效数据读取
CN104580437A (zh) * 2014-12-30 2015-04-29 创新科存储技术(深圳)有限公司 一种云存储客户端及其高效数据访问方法
CN105426321A (zh) * 2015-11-13 2016-03-23 上海交通大学 采用远程位置信息的rdma友好缓存方法
CN107493329A (zh) * 2017-08-15 2017-12-19 诸葛晴凤 一种分布式内存文件系统的远程文件访问方法
CN107888657A (zh) * 2017-10-11 2018-04-06 上海交通大学 低延迟分布式存储系统

Non-Patent Citations (1)

* Cited by examiner, † Cited by third party
Title
董勇等: "基于天河2高速互连网络实现混合层次文件系统H~2FS高速通信", 《计算机学报》 *

Cited By (27)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN110727612A (zh) * 2019-09-09 2020-01-24 无锡江南计算技术研究所 一种基于精确预取的计算缓存装置
US11789866B2 (en) 2019-11-22 2023-10-17 Huawei Technologies Co., Ltd. Method for processing non-cache data write request, cache, and node
CN114731282A (zh) * 2019-11-22 2022-07-08 华为技术有限公司 处理非缓存写数据请求的方法、缓存器和节点
WO2021097802A1 (zh) * 2019-11-22 2021-05-27 华为技术有限公司 处理非缓存写数据请求的方法、缓存器和节点
CN111309764A (zh) * 2019-12-18 2020-06-19 上海金融期货信息技术有限公司 一种高效低冗余客户端数据缓存装置
CN111309764B (zh) * 2019-12-18 2023-04-25 上海金融期货信息技术有限公司 一种高效低冗余客户端数据缓存装置
CN113051102B (zh) * 2019-12-26 2024-03-19 中国移动通信集团云南有限公司 文件备份方法、装置、系统、存储介质和计算机设备
CN113051102A (zh) * 2019-12-26 2021-06-29 中国移动通信集团云南有限公司 文件备份方法、装置、系统、存储介质和计算机设备
CN111367876B (zh) * 2020-03-04 2023-09-19 中国科学院成都生物研究所 一种基于内存元数据的分布式文件管理方法
CN111367876A (zh) * 2020-03-04 2020-07-03 中国科学院成都生物研究所 一种基于内存元数据的分布式文件管理方法
CN111796772B (zh) * 2020-07-07 2024-05-07 西北工业大学 缓存的管理方法、缓存节点及分布式存储系统
CN111796772A (zh) * 2020-07-07 2020-10-20 西北工业大学 缓存的管理方法、缓存节点及分布式存储系统
CN112347506A (zh) * 2020-10-29 2021-02-09 珠海高凌信息科技股份有限公司 具有拟态防御特性的网络存储系统及方法
US11782637B2 (en) 2021-01-05 2023-10-10 Red Hat, Inc. Prefetching metadata in a storage system
CN113032351A (zh) * 2021-03-31 2021-06-25 建信金融科技有限责任公司 网络文件系统的回收方法及装置
CN113032351B (zh) * 2021-03-31 2023-01-13 中国建设银行股份有限公司 网络文件系统的回收方法及装置
CN113094374A (zh) * 2021-04-27 2021-07-09 广州炒米信息科技有限公司 分布式存储和检索方法、装置及计算机设备
CN112948025A (zh) * 2021-05-13 2021-06-11 阿里云计算有限公司 数据加载方法、装置及存储介质、计算设备、计算系统
WO2022252862A1 (zh) * 2021-06-02 2022-12-08 北京字节跳动网络技术有限公司 计算存储分离系统及其数据访问方法、介质和电子设备
CN113220693B (zh) * 2021-06-02 2023-10-20 北京火山引擎科技有限公司 计算存储分离系统及其数据访问方法、介质和电子设备
CN113220693A (zh) * 2021-06-02 2021-08-06 北京字节跳动网络技术有限公司 计算存储分离系统及其数据访问方法、介质和电子设备
CN114866537B (zh) * 2022-05-31 2023-08-04 山东省计算中心(国家超级计算济南中心) 一种跨主机跨网络的文件传输方法及系统
CN114866537A (zh) * 2022-05-31 2022-08-05 山东省计算中心(国家超级计算济南中心) 一种跨主机跨网络的文件传输方法及系统
CN117149708A (zh) * 2023-08-31 2023-12-01 中电云计算技术有限公司 一种文件访问方法、装置、设备及存储介质
CN117149708B (zh) * 2023-08-31 2024-06-04 中电云计算技术有限公司 一种文件访问方法、装置、设备及存储介质
CN117076391A (zh) * 2023-10-12 2023-11-17 长江勘测规划设计研究有限责任公司 一种水利元数据管理系统
CN117076391B (zh) * 2023-10-12 2024-03-22 长江勘测规划设计研究有限责任公司 一种水利元数据管理系统

Similar Documents

Publication Publication Date Title
CN110109889A (zh) 一种分布式内存文件管理系统
US5835908A (en) Processing multiple database transactions in the same process to reduce process overhead and redundant retrieval from database servers
US7797275B2 (en) System and method of time-based cache coherency maintenance in user file manager of object-based storage system
US8868831B2 (en) Caching data between a database server and a storage system
JP4306152B2 (ja) クラスタ化したアプリケーションサーバおよびデータベース構造を持つWebシステム
US11392544B2 (en) System and method for leveraging key-value storage to efficiently store data and metadata in a distributed file system
US7765189B2 (en) Data migration apparatus, method, and program for data stored in a distributed manner
KR101672901B1 (ko) 분산 파일 시스템에서 소형 파일에 대한 접근성 향상을 위한 캐시 관리 시스템
US11561930B2 (en) Independent evictions from datastore accelerator fleet nodes
CN103530387A (zh) 一种hdfs针对小文件的改进方法
US20070011137A1 (en) Method and system for creating snapshots by condition
CN109144413A (zh) 一种元数据管理方法及装置
US20130290636A1 (en) Managing memory
CN111159176A (zh) 一种海量流数据的存储和读取的方法和系统
JP6034512B2 (ja) 計算機システム及びデータ管理方法
US9178931B2 (en) Method and system for accessing data by a client from a server
CN108920095A (zh) 一种基于crush的数据存储优化方法和装置
US11068184B2 (en) Method, device, and computer program product for managing a storage system
JPH04313126A (ja) 分散ファイルシステムのファイル入出力方式
JP4224279B2 (ja) ファイル管理プログラム
CN111796767B (zh) 一种分布式文件系统及数据管理方法
US11341163B1 (en) Multi-level replication filtering for a distributed database
US20210132801A1 (en) Optimized access to high-speed storage device
JP2023137488A (ja) ストレージシステム及びデータキャッシュ方法
US20050177571A1 (en) Systems, methods, and computer-readable mediums for accessing local and remote files

Legal Events

Date Code Title Description
PB01 Publication
PB01 Publication
SE01 Entry into force of request for substantive examination
SE01 Entry into force of request for substantive examination
RJ01 Rejection of invention patent application after publication
RJ01 Rejection of invention patent application after publication

Application publication date: 20190809