专利名称:将rdma语义映射到高速存储的制作方法
将RDMA语义映射到高速存储背景计算机已变得高度集成于工作、家庭、移动设备以及许多其他地方中。计算机可快速且有效地处理大量信息。被设计成在计算机系统上运行的软件应用允许用户执行包括商业应用、学校作业、娱乐等等在内的各种各样的功能。软件应用通常被设计成执行特定的任务,诸如用于草拟文档的文字处理器应用或者用于发送、接收和组织电子邮件的电子邮件程序。在一些情况下,计算机系统使用不同类型的软件应用彼此通信。然而,这样的应用间通信通常需要处理器处理每个所发送的输出和每个所接收的输入。尤其是当几千或几百万输入和输出在不同软件应用之间被发送时,该增加的工作量可能向处理器施加过多的开销。
为了避免这样的处理器参与同时仍然允许应用之间(或者应用与远程数据存储之间)的通信,可以实现远程直接存储器访问(RDMA)。RDMA允许来自应用的读取和写入请求直接从应用流向网络存储设备或存储服务器。读取或写入请求可以被满足并且在两个计算机之间传输,而不需要两个系统任一的处理器的参与。简要概述在此所述的实施例所针对的是,扩展远程直接存储器访问(RDMA)语义以允许本地存储系统中的实现、以及提供用于初始化本地数据存储的管理界面。在一个实施例中,计算机系统将RDMA语义扩展为使用RDMA提供本地存储访问,其中扩展RDMA语义包括下列动作将RDMA动词接口的RDMA动词映射到本地数据存储;以及修改RDMA排序语义以允许无序处理和/或无序完成。计算机系统还使用经扩展的RDMA语义来访问本地数据存储的各个部分。在另一实施例中,计算机系统将管理界面实例化,所述管理界面被配置为初始化本地持久数据存储。计算机系统接收指示在初始化本地持久数据存储时要应用的各个设定的输入,其中所述设定至少之一标识出本地持久数据存储将被如何分区。计算机系统将本地持久数据存储分区成分区,所述分区每个都可以使用管理界面来访问。计算机系统还使用管理界面将经分区的本地持久数据存储初始化为本地RDMA端点。提供本发明内容以便以简化形式介绍将在以下详细描述中进一步描述的一些概念。本概述并非旨在标识所要求保护的主题的关键特征或必要特征,也不旨在用于帮助确定所要求保护的主题的范围。另外的特征和优点将在以下的描述中阐述,并且部分可从该描述中显而易见,或者可以从此处的教示实践中习得。本发明的特征和优点可以通过在所附权利要求中特别指出的手段和组合来实现并获取。本发明的特征将从以下描述和所附权利要求书中变得完全显而易见,或者可通过如下所述对本发明的实践而获知。附图
简述为了进一步阐明本发明的各实施例的以上和其他优点和特征,将参考附图来呈现本发明的各实施例的更具体的描述。可以理解,这些附图只描绘本发明的典型实施例,因此将不被认为是对其范围的限制。本发明将通过使用附图用附加特征和细节来描述和解释,附图中图I示出了用于操作本发明的实施例的计算机体系结构,所述实施例包括将远程直接存储器访问(RDMA)语义扩展为允许本地存储系统中的实现。图2示出了用于将远程直接存储器访问(RDMA)语义扩展为允许本地存储系统中的实现的示例性方法的流程图。图3示出了用于提供用于初始化本地数据存储的管理界面的示例性方法的流程图。图4示出了用户使用管理界面与数据存储交互的实施例。
具体实施例 在此所述的实施例所针对的是,将远程直接存储器访问(RDMA)语义扩展为允许本地存储系统中的实现、以及提供用于初始化本地数据存储的管理界面。在一个实施例中,计算机系统将RDMA语义扩展为使用RDMA提供本地存储访问,其中扩展RDMA语义包括下列动作将RDMA动词接口的RDMA动词映射到本地数据存储;以及修改RDMA排序语义以允许无序处理和/或无序完成。计算机系统还使用经扩展的RDMA语义来访问本地数据存储的各个部分。在另一实施例中,计算机系统将管理界面实例化,所述管理界面被配置为初始化本地持久数据存储。计算机系统接收指示在初始化本地持久数据存储时要应用的各个设定的输入,其中所述设定至少之一标识出本地持久数据存储将被如何分区。计算机系统将本地持久数据存储分区成分区,所述分区每个都可以使用管理界面来访问。计算机系统还使用管理界面将经分区的本地持久数据存储初始化为本地RDMA端点。以下讨论现涉及可以执行的多种方法以及方法动作。应当注意,虽然这些方法动作可能是按一定次序讨论的,或者是在流程图中被描绘为是按照特定顺序进行的,然而并非必然需要特定的次序,除非特别声明,或者是在一个动作被执行之前因为该动作依赖于另一动作的完成而需要的情况。本发明的各实施例可包括或利用专用或通用计算机,该专用或通用计算机包括诸如例如一个或多个处理器和系统存储器等计算机硬件,如以下更详细讨论的。本发明范围内的各实施例还包括用于承载或存储计算机可执行指令和/或数据结构的物理和其他计算机可读介质。这样的计算机可读介质可以是可由通用或专用计算机系统访问的任何可用介质。存储计算机可执行指令的计算机可读介质是计算机存储介质。承载计算机可执行指令的计算机可读介质是传输介质。由此,作为示例而非限制,本发明的各实施例可包括至少两种显著不同的计算机可读介质计算机存储介质和传输介质。计算机存储介质包括RAM、ROM、EEPROM、CD-ROM或其他光盘存储、磁盘存储或其他磁存储设备、或可用于存储计算机可执行指令或数据结构形式的所需程序代码装置且可由通用或专用计算机访问的任何其他介质。“网络”被定义为允许在计算机系统和/或模块和/或其他电子设备之间传输电子数据的一个或多个数据链路。当信息通过网络或另一个通信连接(硬连线、无线、或者硬连线或无线的组合)传输或提供给计算机时,该计算机将该连接适当地视为传输介质。传输介质可包括可用于携带计算机可执行指令或数据结构形式的所需程序代码装置且可由通用或专用计算机访问的网络和/或数据链路。上述的组合也应被包括在计算机可读介质的范围内。此外,在到达各种计算机系统组件之后,计算机可执行指令或数据结构形式的程序代码装置可从传输介质自动传输到计算机存储介质(或反之亦然)。例如,通过网络或数据链路接收到的计算机可执行指令或数据结构可被缓存在网络接口模块(例如,“NIC”)内的RAM中,然后最终被传输到计算机系统RAM和/或计算机系统处的较不易失性的计算机存储介质。因而,应当理解,计算机存储介质可被包括在还利用(或甚至主要利用)传输介质的计算机系统组件中。计算机可执行指令包括,例如使通用计算机、专用计算机、或专用处理设备执行某一功能或某组功能的指令和数据。计算机可执行指令可以是例如二进制代码、诸如汇编语言之类的中间格式指令、或甚至源代码。尽管用结构特征和/或方法动作专用的语言描述了本主题,但可以理解,所附权利要求书中定义的主题不必限于上述特征或动作。相反,上 述特征和动作是作为实现权利要求的示例形式而公开的。本领域的技术人员将理解,本发明可以在具有许多类型的计算机系统配置的网络计算环境中实践,这些计算机系统配置包括个人计算机、台式计算机、膝上型计算机、消息处理器、手持式设备、多处理器系统、基于微处理器的或可编程消费电子设备、网络PC、小型计算机、大型计算机、移动电话、PDA、寻呼机、路由器、交换机等等。本发明也可在其中通过网络链接(或者通过硬连线数据链路、无线数据链路,或者通过硬连线和无线数据链路的组合)的本地和远程计算机系统两者都执行任务的分布式系统环境中实施。在分布式系统环境中,程序模块可以位于本地和远程存储器存储设备二者中。图I示出了可在其中采用本发明的原理的计算机体系结构100。计算机体系结构100包括管理界面110。管理界面110可以是允许用户与本地数据存储140交互或以其他方式使用本地数据存储140的任何类型的软件界面。本地数据存储140(或者在此简称“数据存储”)可以是任何类型的数据存储系统,包括磁或光驱动器、驱动器的集合、数据库、存储域网络或其他存储系统。用户105可能期望与数据存储交互。这样的交互可以包括存储或修改所存储的数据。用户可以向管理界面110发送数据请求106,管理界面110然后使用其一个或多个内部模块来处理该请求。例如,界面110可以使用远程直接存储器访问(RDMA)语义扩展模块来将RDMA语义116扩展为使得这些语义可以用于访问数据存储140上的数据。RDMA语义可以包括允许一个设备或程序使用RDMA与另一设备或程序交谈的命令、查询、动词或其他语义。在一些情况下,映射模块120可以用于将RDMA动词接口的各个RDMA动词映射到本地数据存储。语义修改模块125可以用于修改各个RDMA排序语义以允许无序处理和无序完成任一或二者。这样的映射和修改(RDMA扩展)可以允许用户或软件应用使用经扩展的RDMA语义来访问本地数据存储140。这些概念将在以下参考图2的方法200更详细地解释。考虑到以上描述的系统和体系结构,参考图2和图3的流程图将更好地理解根据所公开的主题实现的方法。为了解释简明起见,这些方法被示出和描述为一系列框。然而,应该理解和了解,所要求保护的主题不受框的次序的限制,因为一些框可按不同的次序进行和/或与此处所描绘和描述的其他框同时进行。此外,并非全部所示的框都是实现下面所述的方法所必需的。图2示出了用于将远程直接存储器访问(RDMA)语义扩展为允许本地存储系统中的实现的方法200的流程图。现在将频繁参考环境100的组件和数据来描述方法200。方法200包括将一个或多个RDMA语义扩展为使用RDMA提供本地存储访问的动作(动作210)。例如,RDMA语义扩展模块115可以将RDMA语义116扩展为使用RDMA来提供对本地数据存储140的访问。RDMA语义可以通过如下方式来扩展添加允许RDMA与本地存储结合使用的附加命令或其他属性。在一些情况下,经扩展的RDMA语义可以包括在每个操作都已完成时进行报告的至少一个语义。因此,例如当读取或写入操作已完成时,语义报告该读取或写入已完成。可以单独地或结合前述语义使用许多其他这样的语义。如上所述,本地数据存储140可以包括各种类型的数据存储解决方案。在一些情况下,本地数据存储140是基于存储器阵列的目标设备。在其他情况下,本地数据存储是某种类型的基于闪存的存储。本地数据存储可以被配置为在可配置的时间段内高速缓存数据 的各个部分。在一些情况下,经扩展的RDMA语义被配置为提供对本地数据存储的远程访问。因此,用户105可以使用被模块115扩展的经扩展的RDMA语义116远程地访问本地数据存储140。在一些情况下,如上所述,经扩展的RDMA语义可以包括RDMA网络应用编程接口(API)语义(或RDMA动词),其用于通过网络的RDMA数据访问。RDMA网络API可以被扩展和用于访问存储在本地数据存储中的数据、以及存储在远程数据存储中的数据。因此,同一经扩展的RDMA网络API可以用于从本地和远程数据存储中访问本地和远程数据二者。换言之,存储在远程数据存储中的远程数据可以使用用于访问存储在本地数据存储中的本地数据的相同的经扩展RDMA语义来访问。通过这种方式,可以使用单个经扩展的RDMA API来访问本地和远程数据存储二者。方法200包括将RDMA动词接口的一个或多个RDMA动词映射到本地数据存储的动作(动作220)。例如,映射模块120可以将RDMA动词接口的一个或多个RDMA动词映射到本地数据存储140。RDMA动词可以以允许用户或软件应用(例如分别为105或107)使用RDMA动词访问数据存储上的数据的方式被映射到本地数据存储。该映射还可以包括对本地数据存储进行命名使得本地数据存储被RDMA识别成端点。因此,当本地数据存储被识别成端点时,用户或各个其他软件应用可以访问该数据存储并将其用作典型的RDMA端点。方法包括200 :修改一个或多个RDMA排序语义以允许无序处理和无序完成中的至少之一(动作230)。例如,语义修改模块125可以修改RDMA语义116以允许无序处理和/或无序完成。无序处理允许管理界面110在请求被接收时(例如用户数据请求106和应用数据请求108)将所述请求发送给本地数据存储140,然后本地数据存储可以无序地响应所述请求。由于所述请求不必按顺序地响应,因此提供了响应数据请求时的更大灵活性。无序完成还提供了每个操作可无序地完成(以及信号完成)方面的更大灵活性。在一些情况下,用户或软件程序可能想要(或需要)保证读取、写入或其他操作已完成。在一些情况下,当使用RDMA时,未决的请求可能需要被转储清除以便执行操作(例如读取操作)。这样的操作可以称为壁垒(barrier)操作。因此,壁垒操作保证给定的数据传输已经通过转储清除未决数据传输并且保证操作被完成而发生。因此,壁垒操作可以用于快速地完成项目而不是取消该项目。
在一些实施例中,RDMA的现有阻隔(fencing)能力被维持,同时允许无序处理和无序完成。例如,发送队列可以被无序地处理,同时仍然维持对阻隔操作(壁垒操作的完成部分)的支持。阻隔操作验证一个或多个在先事件已经发生,而壁垒操作保证给定数据传输已经发生。因此,用户可以将依赖于在其完成以前的所有操作的某物插入到发送队列中,并且阻隔操作保证其之前的操作已经完成。附加地或可替代地,壁垒操作可以被处理以转储清除未决的数据传输并且保证至少一个数据操作的完成。此外,由RDMA提供的网络担保可以被选择性地放宽到用户指示的程度以供与本地数据存储一起使用。通过放宽这些担保,不一定需要这些担保的本地存储实现可以以更有效的方式实现。放宽这些担保还允许数据传输并行执行和并行完成。因此,可以实现到存储在数据存储140中的数据的更快速访问。方法200包括使用经扩展的RDMA语义来访问本地数据存储的一个或多个部分的动作(动作240)。例如,管理界面110可以使用经扩展的RDMA语义来访问本地数据存储140。因此,一旦RDMA语义扩展已经实现,用户105和/或应用107就可以使用RDMA来访 问本地数据存储140。在一些情况下,经扩展的RDMA语义可以在包括文件系统和/或数据库的存储管理层中实现。在一些实施例中,软件应用107可以使用经扩展的RDMA语义来建立应用与本地数据存储140之间的链接。软件应用然后可以使用所建立的链接来访问存储在本地数据存储中的应用数据的至少一部分。在链接建立以后,可以在软件应用与本地数据存储之间传输数据,而不需要任何处理器参与。因此,所建立的链接允许来自和去往应用107和本地数据存储140的数据传输。该数据传输可以在没有来自中央处理器的任何参与的情况下在运行应用的计算机系统处进行。因此,数据可以直接从应用存储器传输给数据存储(并且反之亦然),而无需处理器参与。图3示出了用于提供用于初始化本地数据存储的管理界面的方法300的流程图。现在将频繁参考图I的环境100和图4的环境400的组件和数据来描述方法300。方法300包括将管理界面实例化的动作,所述管理界面被配置为初始化本地持久数据存储(动作310)。例如,计算机系统将管理界面410实例化,所述管理界面被配置为初始化本地持久数据存储440。管理界面可以是允许访问数据存储440的任何类型的软件应用。在一些情况下,管理界面可以是由数据存储提供者以外的某人提供的第三方管理界面。方法300包括接收指示在初始化本地持久数据存储时要应用的一个或多个设定的输入的动作,其中所述设定至少之一标识出本地持久数据存储将被如何分区(动作320)。例如,管理界面410可以从用户405接收包括数据存储初始化设定130/430的用户输入406。这些设定将在初始化数据存储440时被应用。例如,分区设定431可以指示数据存储440将被分区成多少个分区、每个分区将为多大、将为每个分区如何配置存储器偏移量442、以及其他设定。在一些实施例中,用户405可以控制数据存储初始化设定430中的任何或全部设定。管理界面410还可以允许用户为每个分区配置用户访问设定432。因此,用户可以限制对某些(安全的)分区的访问,同时许可对其他分区的完全访问。方法300包括将本地持久数据存储分区成一个或多个分区的动作,所述分区每个都可以使用管理界面来访问(动作330)。例如,管理界面410可以将本地持久数据存储440分区成可使用界面410来访问的分区(或发起对其的分区)。访问能力设定432可以结合分区来应用,使得根据访问能力设定来限制对新近创建的分区的访问。方法300包括使用管理界面将经分区的本地持久数据存储初始化为本地RDMA端点的动作(动作340)。例如,管理界面410可以将经分区的本地持久数据存储440初始化为本地RDMA端点。当数据存储已经被初始化为RDMA端点时,用户可以通过管理界面经由RDMA来访问数据存储中的数据。这样的RDMA端点访问允许应用将数据从应用存储器直接传输给数据存储上的一个或多个分区,而无需涉及处理器。此外,如上所述,由于至少在一些实施例中,传统的RDMA网络担保可以在RDMA与本地存储一起使用时被放宽,因此数据传输和其他操作可以并行地执行和完成。因此,提供了将RDMA语义扩展为允许使用经扩展的RDMA语义进行本地存储系统中的数据访问和数据存储的方法、系统和计算机程序产品。此外,可以提供允许用户或软件应用初始化本地数据存储的管理界面。可以以用户设置初始化设定时所依据的定制方法来初始化数据存储。本发明可具体化为其它具体形式而不背离其精神或本质特征。所描述的实施例在 所有方面都应被认为仅是说明性而非限制性的。因此,本发明的范围由所附权利要求书而非前述描述指示。落入权利要求书的等效方案的含义和范围内的所有改变被权利要求书的范围所涵盖。
权利要求
1.ー种在包括处理器和存储器的计算机系统处的用于将远程直接存储器访问(RDMA)语义扩展为允许本地存储系统中的实现的计算机实现的方法,该方法包括 将ー个或多个RDMA语义扩展为使用RDMA提供本地存储访问的动作,其中扩展RDMA语义包括下列动作 将RDMA动词接ロ的ー个或多个RDMA动词映射到本地数据存储的动作;以及 修改ー个或多个RDMA排序语义以允许无序处理和无序完成中的至少之ー的动过;以及 使用经扩展的RDMA语义来访问所述本地数据存储的ー个或多个部分的动作。
2.如权利要求I所述的方法,其特征在干,映射包括对本地数据存储进行命名使得所述本地数据存储被RDMA识别成端点。
3.如权利要求I所述的方法,其特征在干,RDMA的现有阻隔能力被維持,同时允许无序处理和无序完成。
4.如权利要求I所述的方法,其特征在干,经扩展的RDMA语义被实现在包括文件系统和数据库至少之ー的存储管理层中。
5.如权利要求I所述的方法,其特征在干,经扩展的RDMA语义包括在每个操作都已完成时进行报告的至少ー个语义。
6.如权利要求I所述的方法,其特征在于,还包括软件应用使用经扩展的RDMA语义来建立所述应用与所述本地数据存储之间的链接的动作。
7.如权利要求6所述的方法,其特征在干,所述软件应用使用所建立的链接来访问存储在所述本地数据存储中的应用数据的至少一部分。
8.如权利要求6所述的方法,其特征在于,在链接被建立以后,在所述软件应用与所述本地数据存储之间传输数据,而不需要任何处理器參与。
9.如权利要求I所述的方法,其特征在于,还包括处理ー个或多个壁垒操作以转储清除未决的数据传输并且保证至少一个数据操作的完成的动作。
10.如权利要求I所述的方法,其特征在于,所述本地数据存储包括基于存储器阵列的目标设备。
11.如权利要求I所述的方法,其特征在于,所述本地数据存储包括基于闪存的存储。
12.如权利要求I所述的方法,其特征在于,数据的ー个或多个部分被高速缓存在本地数据存储中。
13.如权利要求I所述的方法,其特征在干,经扩展的RDMA语义被配置为提供对所述本地数据存储的远程访问。
14.如权利要求I所述的方法,其特征在于,由RDMA提供的一个或多个网络担保被选择性地放宽到用户指示的程度以供与所述本地数据存储一起使用。
15.一种用于实现ー种用于提供用于初始化本地数据存储的管理界面的方法的计算机程序产品,所述计算机程序产品包括其上存储有计算机可执行指令的一个或多个计算机可读存储介质,所述指令在被计算系统的ー个或多个处理器执行时致使所述计算系统执行该方法,该方法包括 将管理界面实例化的动作,所述管理界面被配置为初始化本地持久数据存储; 接收指示在初始化所述本地持久数据存储时要应用的ー个或多个设定的输入的动作,其中所述设定至少之ー标识出本地持久数据存储将被如何分区; 将所述本地持久数据存储分区成ー个或多个分区的动作,所述分区每个都能够使用所述管理界面来访问;以及 使用所述管理界面将经分区的本地持久数据存储初始化为本地RDMA端点。
16.如权利要求15所述的计算机程序产品,其特征在于,所述管理界面包括第三方管理界面。
17.如权利要求15所述的计算机程序产品,其特征在于,所述管理界面允许用户配置所述本地持久数据存储将被分区成的分区的数目。
18.如权利要求15所述的计算机程序产品,其特征在于,所述管理界面允许用户为每个分区配置用户访问设定。
19.如权利要求15所述的计算机程序产品,其特征在于,所述管理界面允许用户为每个分区配置存储器偏移量。
20.一种计算机系统,包括 一个或多个处理器; 系统存储器; 本地数据存储; 其上存储有计算机可执行指令的一个或多个计算机可读存储介质,所述计算机可执行指令在由所述ー个或多个处理器执行时致使所述计算系统执行一种将远程直接存储器访问(RDMA)语义扩展为允许本地存储系统中的实现的方法,该方法包括 将ー个或多个RDMA语义扩展为使用RDMA提供本地存储访问的动作,其中扩展所述RDMA语义包括下列动作 将RDMA网络API语义接ロ的ー个或多个RDMA网络API语义映射到所述本地数据存储的动作;以及 修改ー个或多个RDMA排序语义以允许无序处理和无序完成中的至少之ー的动作;使用经扩展的RDMA网络API语义来从远程计算系统访问所述本地数据存储的ー个或多个部分的动作;以及 使用同一经扩展的RDMA网络API语义来从本地计算系统访问所述本地数据存储的一个或多个部分的动作。
全文摘要
在此所述的实施例所针对的是,扩展远程直接存储器访问(RDMA)语义以允许本地存储系统中的实现、以及提供用于初始化本地数据存储的管理界面。计算机系统将RDMA语义扩展为使用RDMA提供本地存储访问,其中扩展RDMA语义包括下列动作将RDMA动词接口的RDMA动词映射到本地数据存储;以及修改RDMA排序语义以允许无序处理和/或无序完成。计算机系统还使用经扩展的RDMA语义来访问本地数据存储的各个部分。
文档编号G06F13/16GK102844747SQ201180016570
公开日2012年12月26日 申请日期2011年3月25日 优先权日2010年4月2日
发明者J·T·平克顿, T·M·塔尔佩伊 申请人:微软公司