CN107493329A - 一种分布式内存文件系统的远程文件访问方法 - Google Patents
一种分布式内存文件系统的远程文件访问方法 Download PDFInfo
- Publication number
- CN107493329A CN107493329A CN201710698126.4A CN201710698126A CN107493329A CN 107493329 A CN107493329 A CN 107493329A CN 201710698126 A CN201710698126 A CN 201710698126A CN 107493329 A CN107493329 A CN 107493329A
- Authority
- CN
- China
- Prior art keywords
- file
- data
- long
- virtual address
- distance inner
- 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
Links
Classifications
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L67/00—Network arrangements or protocols for supporting network services or applications
- H04L67/01—Protocols
- H04L67/133—Protocols for remote procedure calls [RPC]
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/10—File systems; File servers
- G06F16/17—Details of further file system functions
- G06F16/172—Caching, prefetching or hoarding of files
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/10—File systems; File servers
- G06F16/18—File system types
- G06F16/182—Distributed file systems
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L67/00—Network arrangements or protocols for supporting network services or applications
- H04L67/01—Protocols
- H04L67/02—Protocols based on web technology, e.g. hypertext transfer protocol [HTTP]
- H04L67/025—Protocols based on web technology, e.g. hypertext transfer protocol [HTTP] for remote control or remote monitoring of applications
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L67/00—Network arrangements or protocols for supporting network services or applications
- H04L67/50—Network services
- H04L67/60—Scheduling or organising the servicing of application requests, e.g. requests for application data transmissions using the analysis and optimisation of the required network resources
-
- Y—GENERAL TAGGING OF NEW TECHNOLOGICAL DEVELOPMENTS; GENERAL TAGGING OF CROSS-SECTIONAL TECHNOLOGIES SPANNING OVER SEVERAL SECTIONS OF THE IPC; TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
- Y02—TECHNOLOGIES OR APPLICATIONS FOR MITIGATION OR ADAPTATION AGAINST CLIMATE CHANGE
- Y02D—CLIMATE CHANGE MITIGATION TECHNOLOGIES IN INFORMATION AND COMMUNICATION TECHNOLOGIES [ICT], I.E. INFORMATION AND COMMUNICATION TECHNOLOGIES AIMING AT THE REDUCTION OF THEIR OWN ENERGY USE
- Y02D30/00—Reducing energy consumption in communication networks
- Y02D30/50—Reducing energy consumption in communication networks in wire-line communication networks, e.g. low power modes or reduced link rate
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Computer Networks & Wireless Communication (AREA)
- Signal Processing (AREA)
- Data Mining & Analysis (AREA)
- Databases & Information Systems (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Computer And Data Communications (AREA)
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
Abstract
本发明公开了一种分布式内存文件系统的远程文件访问方法,步骤包括客户端计算机向服务端计算机发送打开远程内存文件的请求;服务端给相应内存文件分配连续的虚拟地址空间VA,并建立文件数据页到VA的映射;服务端把文件虚拟地址空间的起始地址发给客户端;客户端根据用户的远程文件读写请求计算出服务端内存文件数据的虚拟地址;客户端通过网络设备直接访问服务端虚拟地址所对应的物理内存,读写远程内存文件。本发明在读写远程内存文件时,服务端仅向客户端发送一次文件虚拟地址空间的起始地址,随后客户端读写同一文件都不需要服务端发送地址。这使得远程内存文件读写性能大幅度提升,且极少占用服务端计算资源,极少受服务端负载的影响。
Description
技术领域
本发明涉及计算机软件技术领域,特别是一种分布式系统或远程系统架构中利用可以直接访问远程计算机系统内存的网络技术(例如,RDMA)高效访问分布式内存文件系统中远程内存文件数据的方法。
背景技术
RDMA(Remote Direct Memory Access)技术的全称是远程直接内存存取。RDMA技术包含专用的高速光纤、RDMA网卡、交换机和网络协议。安装RDMA网卡的多台计算机可以通过交换机和高速光纤连接起来,构建成为一个数据网络。在这个网络中的计算机,都可以通过RDMA技术直接访问其他计算机的内存。要使用RDMA技术进行任意两台计算机之间的内存数据远程访问,必须首先要在联网的客户端计算机和服务端计算机上建立适当的RDMA配置,然后由需要数据的计算机发起对存放数据的计算机的通信连接,并通过网络获得存放数据的虚拟地址,开始远程访问数据。假设客户端计算机需要访问服务端计算机内存中的数据,那么客户端计算机必须获得被访问数据在服务端计算机中的相关虚拟地址,并将需要访问的地址发送至服务端计算机,随后就可以利用服务端计算机上的RDMA网卡完成虚拟地址到内存物理地址的转换,直接读写服务端计算机的内存数据,这个远程数据访问过程不需要唤起服务端计算机的操作系统,不占用服务端计算机的CPU资源,因此数据传输的效率较高。
内存文件系统是一类以计算机内存为存储设备的系统软件。利用内存文件系统,用户可以将数据直接存放在计算机内存,而非磁盘等外围存储中。内存与磁盘上数据的访问方式不同。计算机通过虚拟内存把计算机所有存储层次的数据组织到一个虚拟地址空间;计算机指令通过虚拟地址访问数据;计算机通过内存管理单元硬件把虚拟地址转换成为物理地址,从而快速找到物理内存中存放的数据;内存数据一般以内存页面为单位进行存储和管理计算机物理内存中的数据,可以按字节寻址。由于磁盘等块设备中数据存储和管理的方法和内存有很大的区别,计算机访问磁盘文件系统的数据必须要经过I/O调度层、通用块层和块设备驱动层等多个系统软件层次的转换和缓存,因此磁盘文件系统的数据访问性能比内存文件系统的性能低,并且系统资源开销大。内存文件系统可以通过虚拟地址访问内存中的文件数据,并直接把数据拷贝到用户进程的缓存中,不经过磁盘文件系统所需要的多个软件层次的转换和缓存,因而可以极大地提升文件数据的读写性能。近年来,新型非易失性存储器技术的发展已经为内存文件系统的发展提供了必要条件,内存文件系统的数据不仅可以在内存长期保存,而且可以高速读写,因此内存文件系统将成为实现高速数据存储和数据访问重要系统软件。
目前的内存文件系统都是在单台计算机中实现的本地文件系统。如何在网络环境中高效地访问远程计算机上内存文件系统的远程文件数据是一个有待解决的问题。
分布式内存文件系统是构建于多台联网的计算机内存中的文件系统,其中一台或者多台计算机作为文件服务器(file server),挂载内存文件系统,网络中每一台计算机都可以向任意一台文件服务器发起数据请求。从逻辑上讲,发起远程内存文件访问请求的计算机是客户端(client),存放内存文件数据的计算机是服务端(server)。客户端计算机通过网络对服务端计算机内存中的文件数据进行远程访问。客户端计算机不一定需要挂载内存文件系统,可以只运行一个需要访问远程内存文件系统并进行远程内存文件数据读写的进程。如果客户端计算机也挂载内存文件系统,则该客户端计算机也可以用作网络中其它计算机的文件服务器。在下文的描述中,发起远程内存文件访问及读写请求的计算机是客户端计算机,而响应远程内存文件访问及读写请求的计算机是服务端计算机。
利用RDMA技术,计算机可以通过下面两种常规方式访问分布式内存文件系统中的远程内存文件数据,但是数据访问的效率都不高:
方式一:
1客户端计算机通过远程过程调用(Remote Procedure Call,简称RPC,可以通过多种协议实现,比如Infiniband或者Ethernet)把对某个远程内存文件的访问请求发送到服务端计算机;
2服务端计算机的操作系统被唤起(占用服务端计算机的CPU),使用其内存文件系统的软件流程查找文件数据;
3服务端计算机根据被访问数据量的大小在内存中创建一个缓冲区,把相应的文件数据读入到该缓冲区中;
4服务端计算机用RPC把该缓冲区的虚拟地址发送给客户端计算机;
5客户端计算机收到缓冲区的虚拟地址后,用RDMA技术直接读写缓冲区的文件数据。
6客户端计算机完成文件数据读写操作后,用RPC发送数据读写完成信号给服务端计算机;
7服务端计算机收到客户端的数据读写完成信号,释放步骤3中申请的缓冲区,用RPC发送本次读写操作结束的信号给客户端计算机;
8客户端计算机收到服务端计算机发送的结束信号,回到步骤1执行下一次远程内存文件数据读写访问请求,直至完成客户端用户对该远程内存文件的所有数据读写访问请求。
方式一的缺点有:1)每一次数据读写访问都需要执行4次RPC操作,RPC是比较耗时的操作;2)每一次数据读写访问都需要唤起服务端计算机的操作系统,占用服务端计算机的计算资源;3)每一次数据读写访问都需要由服务端计算机建立缓冲区,并把数据拷贝到缓冲区。由于上述原因,方法一所产生的额外资源开销大,性能低。
方式二:
1客户端计算机收到用户程序对某个远程内存文件的数据访问请求,假设需要对该文件中数据量大小为k个内存页面的文件数据进行顺序读写访问;
2客户端计算机通过RPC向服务端计算机发送当前待访问的一个文件数据页面的数据读写访问请求;
3服务端计算机的操作系统被唤起(占用服务端计算机的CPU),使用其内存文件系统的软件流程,搜索内存文件的元数据组织结构,查找需要访问的相应数据页面的起始虚拟地址;
4找到需要访问的文件数据页面的起始虚拟地址后,服务端计算机用RPC将该地址发送回客户端计算机;
5客户端计算机收到文件数据页面的起始虚拟地址后,用RDMA技术直接读写相应的文件数据;
6客户端计算机完成文件数据读写操作后,用RPC发送数据读写完成信号给服务端计算机;
7服务端计算机收到数据读写完成信号,准备好接受下一个文件数据页的读写请求的数据结构,用RPC发送本次数据读写操作结束的信号给客户端计算机;
8客户端计算机收到服务端计算机发送的结束信号,查看是否已经完成所有k个页面的文件数据访问,如果已经全部完成,则结束远程内存文件访问,否则准备发起对下一个待访问文件数据页面的访问,回到步骤2,访问下一个页面。
方式二与方式一的不同之处在于,方式二只需要服务端计算机的文件系统找到所请求的数据的起始虚拟地址,将该虚拟地址传回客户端计算机即可。然而,如果用户请求访问多个页面,受既有文件系统的文件组织方法的限制,方式二必须把对多个页面文件数据的访问分解为多次对一个页面的文件数据的访问,每次访问请求只访问一个页面的数据。由于每访问一个页面的数据都需要执行4次RPC操作并唤起服务端计算机的操作系统,方式二同样会导致系统资源开销大,对大数据量的远程内存文件访问性能很低的问题。
发明内容
有鉴于此,本发明的目的是提供一种利用可以直接访问远程计算机系统内存的网络技术高效访问分布式内存文件系统的远程内存文件的方法。该方法根据计算机内存数据访问本身的特点,以及内存文件系统的架构,针对分布式内存文件系统设计出一套合理的远程内存文件数据访问的方法和流程,从而可以充分利用RDMA或者类似的其他可以直接访问远程计算机系统内存的网络技术,实现高效的远程内存文件数据访问。
本发明的目的是通过以下技术方案来实现的:
本发明提供的分布式内存文件系统的远程文件访问方法,包括以下步骤:
S1客户端计算机收到用户打开远程内存文件的请求,获取远程内存文件所在服务端计算机的连续虚拟地址空间VA的起始地址B-VA;
S2客户端计算机等待用户对服务端计算机上的远程内存文件数据的读写访问请求,如果没有收到,则停留在步骤S2;
S3客户端计算机收到用户对远程内存文件的数据读写访问请求,收到文件数据在文件中的位置偏移量OFFSET和所需访问的数据量;
S4客户端计算机根据远程内存文件的连续虚拟地址空间的起始地址B-VA和偏移量OFFSET计算出被访问的远程内存文件数据在服务端计算机中的虚拟地址D-VA;
S5通过可直接访问远程计算机内存的网络设备,客户端计算机直接访问服务端计算机虚拟地址D-VA所对应的物理内存,进行远程内存文件数据读写;
S6如果收到用户关闭远程内存文件的请求,则结束远程文件访问,否则返回步骤S2循环执行直至完成用户对远程内存文件数据的所有读写访问;
进一步,所述远程文件的虚拟地址空间的起始地址是按照以下步骤来形成的:
S11客户端计算机根据用户打开远程内存文件A的请求向服务端计算机发送打开文件的请求;
S12服务端计算机给需要打开的内存文件A分配足够大的连续的虚拟地址空间VA;
S13服务端计算机建立内存文件A的数据页到所分配虚拟地址空间VA的映射;
S14服务端计算机将内存文件A的虚拟地址空间的起始地址B-VA发送给客户端计算机;
S15客户端计算机将收到的起始地址B-VA保存在本地的内核或用户进程的数据结构中。
进一步,所述虚拟地址空间VA是在服务端计算机系统的内核或用户进程中分配的内存文件的虚拟地址空间。。
进一步,所述远程内存文件的数据页到服务端虚拟地址空间的映射所采用的数据结构是以服务端计算机操作系统中内核页表或进程页表的形式进行构建,且该数据结构的页表级数按照文件数据量的实际大小构建。
进一步,所述虚拟地址空间VA是与远程内存文件的数据量大小相匹配的一段足够大的空闲且连续的虚拟地址空间。
进一步,所述访问请求包括对远程文件数据的读写访问请求。
进一步,所述步骤S4中,客户端计算机利用远程内存文件的虚拟地址空间的起始地址B-VA和数据位置偏移量OFFSET计算出被访问的远程内存文件数据在服务端计算机中的虚拟地址D-VA时,远程内存文件虚拟地址空间的起始地址B-VA保存在客户端的内核或用户进程的数据结构中,并相应地由内核或用户进程计算出远程内存文件数据的虚拟地址D-VA。
由于采用了上述技术方案,本发明具有如下的优点:
本发明提出了全新的分布式内存文件系统的远程文件数据访问方法:将远程内存文件数据组织在连续的虚拟地址空间中;客户端计算机读写远程内存文件数据时,只需要服务端计算机提供一次远程内存文件虚拟地址空间的起始地址,随后客户端对同一远程内存文件的数据读写,无论是顺序或随机读写,都不需要向服务端计算机请求文件数据的地址。本发明的这一特点使得客户端与服务端在数据访问过程中,除了数据传输本身的通信外,通信的次数达到最小化,使得分布式内存文件系统的远程文件读写性能得到大幅度提升。对于文件内任意位置偏移量的数据请求,都不需要服务端计算机的处理器和操作系统通过搜索文件系统元数据的方式查找所请求的文件数据地址,使得远程内存文件数据的读写极少占用服务端计算机的资源。
所以本发明所提出的远程内存文件访问方法的数据读写性能稳定,不受服务端计算机的负载高低所影响,同时,远程内存文件数据的读写性能不会对客户端数量的增加过于敏感。本发明利用RDMA直接将远程文件数据读取到客户端用户进程的缓存,不需要在服务端计算机中做数据拷贝或其他额外的数据传输。
本发明的其他优点、目标和特征在某种程度上将在随后的说明书中进行阐述,并且在某种程度上,基于对下文的考察研究,对本领域技术人员而言将是显而易见的,或者可以从本发明的实践中得到教导。本发明的目标和其他优点可以通过下面的说明书来实现和获得。
附图说明
本发明的附图说明如下。
图1为分布式文件系统组织结构示意图。
图2为分布式内存文件系统的远程文件访问方法实施例的流程图。
具体实施方式
下面结合附图和实施例对本发明作进一步说明。
实施例1
如图1所示,图1以两台计算机和一个RDMA交换机的系统为示例,在该系统中,每台计算机都装备有RDMA专用网卡(硬件)和用作存储设备的内存(硬件)。文件服务器需要挂载管理内存设备的内存文件系统(软件),客户端可根据需要选择是否挂载内存文件系统。计算机通过RDMA交换机和专有的RDMA网线连接成高速的RDMA网络。
计算机之间可以用普通的远程通信协议如套接字、远程过程调用等成熟技术传输信息,在知道服务端计算机内存地址的情况下,也可以用RDMA技术直接访问对方设置好的RDMA区域的内存。
在本实施例中,用户进程所在的计算机为“客户端计算机”,用户请求访问的非客户端计算机为“服务端计算机”。内存文件系统用映射表组织存放文件数据的物理内存页。映射表的格式和操作系统的页表的格式相同,例如都是用8个字节作为一个条目。但是映射表的级别不一定和操作系统的页表级别相同。例如Linux系统的页表是4级,但是映射表可以是单级、两级或三级。在本实施例中,“第一”“第二”“第三”等是为了方便描述,并不一定是表示不一样的限定。
本实施例提供的一种分布式内存文件系统利用可以直接访问远程计算机系统内存的网络技术(例如,RDMA)高效访问远程文件的方法,具体包括以下步骤:
S1客户端计算机根据用户的远程文件访问请求向服务端计算机发送打开远程文件的请求;
S2服务端计算机给需要打开的文件分配一段足够大的空闲且连续的虚拟地址空间;所述连续虚拟地址空间VA可以从服务端计算机系统中的内核或用户进程的虚拟地址空间分配,且该虚拟地址空间VA相对于文件数据量而言足够大;使得所述虚拟地址空间为与远程文件数据量相匹配;也可以是远程文件的虚拟地址空间保留一定的余量,使得访问请求的远程文件能够完全被存储于分配的虚拟地址空间中。
S3服务端计算机建立文件数据页到S2所分配连续虚拟地址空间的映射;文件数据页到连续虚拟地址空间VA的映射所使用的数据结构使用服务端计算机操作系统中内核页表或进程页表的组织形式,且该数据结构的页表级数可以按照文件的实际大小构建;
S4服务端计算机将文件虚拟地址空间的起始地址发送给客户端计算机;
S5客户端计算机收到用户对服务端计算机上远程文件数据的读写访问请求,例如,顺序读写或随机读写;
S6客户端计算机根据文件虚拟地址空间的起始地址和数据在文件内的位置偏移量计算出用户所请求数据在服务端计算机中的虚拟地址;
S7客户端计算机通过可直接访问远程计算机内存的网络设备访问服务端计算机虚拟地址所对应的物理内存,进行内存文件数据读写访问(S5-S7可以循环执行直至完成用户对远程文件数据的读写访问);
S8结束远程文件访问。
在步骤S5-S7中,客户端计算机读写远程文件数据时,只需要服务端计算机提供一次远程内存文件虚拟地址空间的起始地址,随后客户端对同一远程文件的数据读写(S5-S7的循环),无论是对所访问文件内任意位置偏移量所指数据的顺序或随机读写,客户端计算机都不需要发起与服务端计算机的通信,不需要请求服务端计算机发送文件数据相对应的地址;而且,在客户端对所访问文件的任意数据的读写过程中,都不需要服务端计算机的处理器和操作系统通过搜索文件系统元数据的方式查找所请求的文件数据地址,使得远程内存文件数据的读写极少占用服务端计算机的资源。这一特征使得客户端与服务端在远程内存文件数据访问的过程中,除了数据传输本身所必须的通信以外,其他的通信次数达到最小化。这使得分布式内存文件系统的远程文件读写性能得到大幅度提升。而且,由于远程内存文件数据读写不受服务端计算机的负载高低所影响,因此,本法明所提出的远程内存文件数据读写方法的性能稳定。
实施例2
如图2所示,本实施例提供一种分布式内存文件系统利用可以直接访问远程计算机系统内存的网络技术高效访问远程文件的方法,包括两个阶段:第一阶段服务端计算机建立远程内存文件的连续虚拟地址空间,客户端计算机获得该连续虚拟地址空间的起始地址;第二阶段是利用这个连续的虚拟地址空间和RDMA访问远程内存文件。以下分别介绍这两个阶段,
第一阶段:
S1客户端计算机通过RPC发送打开服务端计算机中文件的请求;
S2服务端计算机收到打开文件的请求后,给需要打开的文件分配一段足够大的连续虚拟地址空间VA;
S3服务端计算机解析虚拟地址空间VA对应的页表并将文件的映射表插入虚拟地址空间VA对应的页表项,建立文件数据到连续的虚拟地址空间VA的映射;
S4服务端计算机用RPC将虚拟地址空间VA的起始虚拟地址B-VA发送给客户端计算机;
第一阶段执行完成后,客户端计算机可以通过所获得的文件的虚拟地址空间起始地址访问文件中的任意数据,而不再需要执行RPC远程调用,也不需要唤起服务端计算机的操作系统来执行数据查找、数据拷贝等任务,具体步骤在下面的第二阶段中描述。
第二阶段:
S5客户端计算机收到用户访问服务端计算机上文件数据的请求,假设所请求的数据在文件内的位置偏移量为Offset;
S6客户端计算机用文件的起始虚拟地址B-VA加上偏移量Offset,得到用户所请求的数据在服务端计算机中的虚拟地址D-VA;
S7客户端计算机发送RDMA请求,直接访问服务端计算机的虚拟地址D-VA所对应的物理内存地址,并访问从该地址开始存储的文件数据;S5-S7可以循环执行直至完成用户对远程文件数据的读写访问;
S8完成访问请求。
可以看到,在第二阶段中,在客户端计算机读写远程文件数据时,只需要服务端计算机提供一次远程文件虚拟地址空间的起始地址,随后的远程文件数据读写(S5-S7的循环),无论是顺序或随机读写,服务端计算机都不需要向客户端计算机发送文件数据的任何地址。本发明的这一特点使得分布式内存文件系统的远程文件读写性能得到大幅度提升,并且极少占用服务端计算机的计算资源,使得远程内存文件数据的读写性能极少受到服务端计算机资源占用情况的影响。
在访问数据的过程中,需要用到的系统组件有:客户端计算机的内存缓冲区、客户端计算机的RDMA网卡、服务端计算机的RDMA网卡、服务端计算机的内存文件系统。用户访问远程内存文件的具体操作包括打开文件、读文件、写文件等,具体操作步骤如下:
打开文件并建立映射
S11:客户端计算机接收到用户打开文件的第一请求。
S12:客户端计算机通过远程通信协议向服务端计算机发送打开文件的第二请求。
S13:服务端计算机收到打开文件的第二请求。
S14:服务端计算机的内存文件系统从内核或进程的虚拟地址空间中分配一块空闲且连续的虚拟地址空间。
S15:利用系统中的控制寄存器,访问内核或进程的页表,找到所分配的虚拟地址空间在内核或进程页表中相应的页表项,并将文件的映射表写入这些页表项,即完成了该文件在虚拟地址空间中的映射。
S16:服务端计算机的内存文件系统用远程通信协议把虚拟地址空间的第一起始虚拟地址发送给客户端计算机。
S17:客户端计算机收到并保存第一起始虚拟地址。
在S17中,第一起始虚拟地址可以保存在客户端的内存文件系统中(对应客户端计算机挂载内存文件系统的情况),也可以保存在客户端用户空间的临时结构中(对应客户端计算机没有挂载内存文件系统的情况)。对于客户端计算机上这两种不同的数据保存方式,分别有不同的数据读写流程,以下分别描述。
首先是将第一起始虚拟地址保存在客户端内存文件系统中的数据访问方法,包括以下所述步骤S21-s38。
读数据
S21:客户端计算机的内存文件系统收到用户读取远程内存文件数据的请求。
S22:客户端计算机的内存文件系统解析此请求,得到用户所请求的数据在文件内的位置偏移量、数据量和用户存放数据的缓冲区地址。
S23:客户端计算机的内存文件系统用S17中保存的起始虚拟地址加上S22中的位置偏移量,计算出用户所请求的数据在服务端计算机中的起始虚拟地址;
S24:客户端计算机的内存文件系统将S23中计算得到的起始虚拟地址和S22中的数据量发送给服务端计算机的RDMA网卡。
S25:服务端计算机的RDMA网卡从该起始虚拟地址开始读取所要求的数据量并传回客户端计算机的RDMA网卡。
S26:客户端计算机的RDMA网卡收到服务端计算机传回的文件数据并将其直接写入S22中的用户缓冲区。
在上述步骤中,S21—S26可以重复执行,直到所有读操作执行完毕。在读取数据过程中,只需要服务端计算机在S16提供一次远程内存文件虚拟地址空间的起始地址,对于后续的顺序读或者随机读操作,服务端计算机都不需要向客户端计算机发送文件数据的任何地址。
写数据
S31:客户端计算机的内存文件系统收到用户写远程内存文件的请求。
S32:客户端计算机的内存文件系统解析此请求,得到用户所请求的数据在文件内的位置偏移量、数据量和用户存放数据的缓冲区地址。
S33:客户端计算机的内存文件系统用S17中保存的起始虚拟地址加上S32中的位置偏移量,计算出用户所请求的数据在服务端计算机中的起始虚拟地址;
S34:如果写操作不需要分配新的存储空间(即就地更新),则执行步骤S37;
S35:如果写操作需要分配存储空间(即追加),客户端计算机就通过远程通信协议向服务端计算机发送请求分配空间并更新内存文件映射表的请求。
S36:服务端计算机的内存文件系统收到S35中的请求,分配所需的物理内存页并完成新的存储空间的映射。
S37:客户端计算机的内存文件系统发送RDMA请求,通过客户端计算机的RDMA网卡把S33中算出的起始虚拟地址和S32的用户缓冲区中数据量大小的数据发送到服务端计算机的RDMA网卡。
S38:服务端计算机的RDMA网卡从所收到的起始虚拟地址开始写入收到的数据。
在上述步骤中,S31—S38可以重复执行,直到所有的写操作执行完毕。在写入数据过程中,只需要服务端计算机提供一次远程内存文件虚拟地址空间的起始地址,对于后续的顺序写或者随机写操作,服务端计算机都不需要向客户端计算机发送文件数据的任何地址。
下面是将文件的起始虚拟地址保存在客户端用户空间的临时结构中的数据访问方法,包括以下步骤S41-S57。
读数据
S41:客户端计算机的用户请求读取服务端已打开的文件,用户提供所请求的数据在文件内的位置偏移量、所读的数据量及用户存放数据的缓冲区。
S42:客户端计算机的用户进程用S17中保存的起始虚拟地址加上S41中的位置偏移量,计算出用户所请求的远程内存文件数据在服务端计算机中的起始虚拟地址;
S43:客户端计算机的用户进程将S23所计算得到的起始虚拟地址和S22中的数据量发送给服务端计算机的RDMA网卡。
S44:服务端计算机的RDMA网卡从该起始虚拟地址开始读取所要求的数据量并传回客户端计算机的RDMA网卡。
S45:客户端计算机的RDMA网卡收到服务端计算机传回的文件数据并将其直接写入S41中的用户缓冲区。
写数据
S51:客户端计算机的用户请求写服务端已打开的文件,用户提供数据在文件内的位置偏移量、所写的数据量及用户存放数据的缓冲区。
S52:客户端计算机的用户进程用S17中保存的起始虚拟地址加上S51中的位置偏移量,计算出用户所请求的数据在服务端计算机中的起始虚拟地址;
S53:如果写操作不需要分配新的存储空间(即就地更新),则执行步骤S56;
S54:如果写操作需要分配存储空间(即追加),客户端计算机的用户进程就通过远程通信协议向服务端计算机发送请求分配空间并更新文件映射表的请求。
S55:服务端计算机的内存文件系统收到S54中的请求,分配所需的物理内存页并完成新的存储空间的映射。
S56:客户端计算机的用户进程发送RDMA请求,通过客户端计算机的RDMA网卡把S52中算出的起始虚拟地址和S51的用户缓冲区中数据量大小的数据发送到服务端计算机的RDMA网卡。
S57:服务端计算机的RDMA网卡从所收到的起始虚拟地址开始写入收到的数据。
关闭远程文件并取消映射
S61:客户端计算机接收到用户请求关闭服务端计算机内存文件的第三请求;
S62:客户端计算机通过远程通信协议向服务端计算机发送关闭内存文件的第四请求。
S63:服务端计算机收到第四请求,清除S5中插入的文件在第一虚拟地址空间的页表中相应的第一页表项。
最后说明的是,以上实施例仅用以说明本发明的技术方案而非限制,尽管参照较佳实施例对本发明进行了详细说明,本领域的普通技术人员应当理解,可以对本发明的技术方案进行修改或者等同替换,而不脱离本技术方案的宗旨和范围,其均应涵盖在本发明的保护范围当中。
Claims (7)
1.一种分布式内存文件系统的远程文件访问方法,其特征在于:包括以下步骤:
S1客户端计算机收到用户打开远程内存文件的请求,获取远程内存文件所在服务端计算机的连续虚拟地址空间VA的起始地址B-VA;
S2客户端计算机等待用户对服务端计算机上的远程内存文件数据的读写访问请求,如果没有收到,则停留在步骤S2;
S3客户端计算机收到用户对远程内存文件的数据读写访问请求,收到文件数据在文件中的位置偏移量OFFSET和所需访问的数据量;
S4客户端计算机根据远程内存文件的连续虚拟地址空间的起始地址B-VA和偏移量OFFSET计算出被访问的远程内存文件数据在服务端计算机中的虚拟地址D-VA;
S5通过可直接访问远程计算机内存的网络设备,客户端计算机直接访问服务端计算机虚拟地址D-VA所对应的物理内存,进行远程内存文件数据读写;
S6如果收到用户关闭远程内存文件的请求,则结束远程文件访问,否则返回步骤S2循环执行直至完成用户对远程内存文件数据的所有读写访问。
2.根据权利要求1所述的分布式内存文件系统的远程文件访问方法,其特征在于:所述远程内存文件的虚拟地址空间的起始地址是按照以下步骤来形成的:
S11客户端计算机根据用户打开远程内存文件A的请求向服务端计算机发送打开文件的请求;
S12服务端计算机给需要打开的内存文件A分配足够大的连续的虚拟地址空间VA;
S13服务端计算机建立内存文件A的数据页到所分配虚拟地址空间VA的映射;
S14服务端计算机将内存文件A的虚拟地址空间的起始地址B-VA发送给客户端计算机;
S15客户端计算机将收到的起始地址B-VA保存在本地的内核或用户进程的数据结构中。
3.根据权利要求1所述的分布式内存文件系统的远程文件访问方法,其特征在于:所述虚拟地址空间VA是在服务端计算机系统的内核或用户进程中分配的内存文件的虚拟地址空间。
4.根据权利要求1所述的分布式内存文件系统的远程文件访问方法,其特征在于:所述虚拟地址空间VA是与远程内存文件数据量大小相匹配的一段足够大的空闲且连续的虚拟地址空间。
5.根据权利要求1所述的分布式内存文件系统的远程文件访问方法,其特征在于:所述远程内存文件的数据页到服务端虚拟地址空间的映射所采用的数据结构是以服务端计算机操作系统中内核页表或进程页表的形式进行构建,且该数据结构的页表级数按照文件数据量的实际大小构建。
6.根据权利要求1所述的分布式内存文件系统的远程文件访问方法,其特征在于:所述访问请求包括对远程文件数据的读写访问请求。
7.根据权利要求1所述的分布式内存文件系统的远程文件访问方法,其特征在于:所述步骤S4中,客户端计算机利用远程内存文件的虚拟地址空间的起始地址B-VA和数据位置偏移量OFFSET计算出被访问的远程内存文件数据在服务端计算机中的虚拟地址D-VA时,远程内存文件虚拟地址空间的起始地址B-VA保存在客户端的内核或用户进程的数据结构中,并相应地由内核或用户进程计算出远程内存文件数据的虚拟地址D-VA。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201710698126.4A CN107493329A (zh) | 2017-08-15 | 2017-08-15 | 一种分布式内存文件系统的远程文件访问方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201710698126.4A CN107493329A (zh) | 2017-08-15 | 2017-08-15 | 一种分布式内存文件系统的远程文件访问方法 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN107493329A true CN107493329A (zh) | 2017-12-19 |
Family
ID=60646241
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201710698126.4A Pending CN107493329A (zh) | 2017-08-15 | 2017-08-15 | 一种分布式内存文件系统的远程文件访问方法 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN107493329A (zh) |
Cited By (9)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN108984122A (zh) * | 2018-07-05 | 2018-12-11 | 柏建民 | 映射式远程存储操作技术 |
CN109271264A (zh) * | 2018-08-30 | 2019-01-25 | 郑州云海信息技术有限公司 | 一种通信连接建立方法及装置 |
CN110109889A (zh) * | 2019-05-09 | 2019-08-09 | 重庆大学 | 一种分布式内存文件管理系统 |
CN110177118A (zh) * | 2019-06-13 | 2019-08-27 | 上海海事大学 | 一种基于rdma的rpc通信方法 |
CN110704338A (zh) * | 2019-10-18 | 2020-01-17 | 北京中科寒武纪科技有限公司 | 地址转换装置、人工智能芯片及电子设备 |
CN110730168A (zh) * | 2019-09-29 | 2020-01-24 | 佛山市兴颂机器人科技有限公司 | 一种通信控制方法、装置及服务端设备 |
CN112364268A (zh) * | 2020-11-13 | 2021-02-12 | 微医云(杭州)控股有限公司 | 资源获取方法、装置、电子设备及存储介质 |
CN113448897A (zh) * | 2021-07-12 | 2021-09-28 | 上海交通大学 | 适用于纯用户态远端直接内存访问的数组结构及优化方法 |
CN113608686A (zh) * | 2021-06-30 | 2021-11-05 | 苏州浪潮智能科技有限公司 | 一种远程内存直接访问方法及相关装置 |
Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20120331243A1 (en) * | 2011-06-24 | 2012-12-27 | International Business Machines Corporation | Remote Direct Memory Access ('RDMA') In A Parallel Computer |
CN103929415A (zh) * | 2014-03-21 | 2014-07-16 | 华为技术有限公司 | Rdma下数据读写的方法、装置和网络系统 |
US20150089009A1 (en) * | 2013-09-23 | 2015-03-26 | Red Hat Israel, Ltd. | Remote direct memory access with copy-on-write support |
CN105378687A (zh) * | 2014-03-07 | 2016-03-02 | 华为技术有限公司 | 访问文件的方法和相关设备 |
CN105677879A (zh) * | 2016-01-12 | 2016-06-15 | 诸葛晴凤 | 内存关系数据库的数据组织及访问方法 |
-
2017
- 2017-08-15 CN CN201710698126.4A patent/CN107493329A/zh active Pending
Patent Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20120331243A1 (en) * | 2011-06-24 | 2012-12-27 | International Business Machines Corporation | Remote Direct Memory Access ('RDMA') In A Parallel Computer |
US20150089009A1 (en) * | 2013-09-23 | 2015-03-26 | Red Hat Israel, Ltd. | Remote direct memory access with copy-on-write support |
CN105378687A (zh) * | 2014-03-07 | 2016-03-02 | 华为技术有限公司 | 访问文件的方法和相关设备 |
CN103929415A (zh) * | 2014-03-21 | 2014-07-16 | 华为技术有限公司 | Rdma下数据读写的方法、装置和网络系统 |
CN105677879A (zh) * | 2016-01-12 | 2016-06-15 | 诸葛晴凤 | 内存关系数据库的数据组织及访问方法 |
Cited By (14)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN108984122A (zh) * | 2018-07-05 | 2018-12-11 | 柏建民 | 映射式远程存储操作技术 |
CN109271264A (zh) * | 2018-08-30 | 2019-01-25 | 郑州云海信息技术有限公司 | 一种通信连接建立方法及装置 |
CN110109889A (zh) * | 2019-05-09 | 2019-08-09 | 重庆大学 | 一种分布式内存文件管理系统 |
CN110177118B (zh) * | 2019-06-13 | 2022-03-29 | 上海海事大学 | 一种基于rdma的rpc通信方法 |
CN110177118A (zh) * | 2019-06-13 | 2019-08-27 | 上海海事大学 | 一种基于rdma的rpc通信方法 |
CN110730168B (zh) * | 2019-09-29 | 2022-06-14 | 佛山市兴颂机器人科技有限公司 | 一种通信控制方法、装置及服务端设备 |
CN110730168A (zh) * | 2019-09-29 | 2020-01-24 | 佛山市兴颂机器人科技有限公司 | 一种通信控制方法、装置及服务端设备 |
CN110704338B (zh) * | 2019-10-18 | 2021-01-26 | 安徽寒武纪信息科技有限公司 | 地址转换装置、人工智能芯片及电子设备 |
CN110704338A (zh) * | 2019-10-18 | 2020-01-17 | 北京中科寒武纪科技有限公司 | 地址转换装置、人工智能芯片及电子设备 |
CN112364268A (zh) * | 2020-11-13 | 2021-02-12 | 微医云(杭州)控股有限公司 | 资源获取方法、装置、电子设备及存储介质 |
CN113608686A (zh) * | 2021-06-30 | 2021-11-05 | 苏州浪潮智能科技有限公司 | 一种远程内存直接访问方法及相关装置 |
CN113608686B (zh) * | 2021-06-30 | 2023-05-26 | 苏州浪潮智能科技有限公司 | 一种远程内存直接访问方法及相关装置 |
CN113448897A (zh) * | 2021-07-12 | 2021-09-28 | 上海交通大学 | 适用于纯用户态远端直接内存访问的数组结构及优化方法 |
CN113448897B (zh) * | 2021-07-12 | 2022-09-06 | 上海交通大学 | 适用于纯用户态远端直接内存访问的优化方法 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN107493329A (zh) | 一种分布式内存文件系统的远程文件访问方法 | |
US11349940B2 (en) | Server side data cache system | |
CN104915151B (zh) | 多虚拟机系统中一种主动共享的内存超量分配方法 | |
CN108737325A (zh) | 一种多租户数据隔离方法、装置及系统 | |
CN104252501B (zh) | 一种执行数据库操作命令的计算设备和方法 | |
CN103425538B (zh) | 进程通讯方法及系统 | |
CN103607312B (zh) | 用于服务器系统的数据请求处理方法及系统 | |
CN103902467B (zh) | 压缩内存访问控制方法、装置及系统 | |
CN109491928A (zh) | 缓存控制方法、装置、终端及存储介质 | |
CN105518631B (zh) | 内存管理方法、装置和系统、以及片上网络 | |
CN108183947A (zh) | 分布式缓存方法及系统 | |
CN101150485A (zh) | 一种零拷贝缓冲区队列网络数据发送的管理方法 | |
CN109656889B (zh) | 基于区块链的文件系统实现方法、装置、设备和存储介质 | |
CN105550246B (zh) | Android平台下加载网络图片的系统及方法 | |
CN108664523A (zh) | 一种虚拟磁盘文件格式转换方法和装置 | |
CN107924289A (zh) | 计算机系统和访问控制方法 | |
CN107368583A (zh) | 一种多集群信息查询的方法及系统 | |
CN106020731B (zh) | 存储设备、存储设备阵列和网络适配器 | |
CN109656886B (zh) | 基于键值对的文件系统实现方法、装置、设备和存储介质 | |
CN109901909A (zh) | 用于虚拟化系统的方法及虚拟化系统 | |
CN110275840A (zh) | 在存储器接口上的分布式过程执行和文件系统 | |
CN107958018A (zh) | 缓存中的数据更新方法、装置及计算机可读介质 | |
CN108536617A (zh) | 缓存管理方法、介质、系统和电子设备 | |
CN110119304A (zh) | 一种中断处理方法、装置及服务器 | |
CN109918352A (zh) | 存储器系统和存储数据的方法 |
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 |
Application publication date: 20171219 |
|
RJ01 | Rejection of invention patent application after publication |