对共享存储装置的持久存储器的直接访问的制作方法
【技术领域】
[0001]本公开一般涉及用于访问存储器的技术,并且更具体地涉及对存储服务器上的持久存储器执行远程直接存储器访问。
【背景技术】
[0002]存储服务器是向远程客户端提供通常对磁盘存储装置的共享存储访问的计算机。为了管理来自远程客户端的输入/输出(I/O)操作,存储服务器可以使用基于消息的存储协议。例如,当远程客户端想要对共享磁盘进行读取和写入时,远程客户端通过网络向存储服务器发送消息。在存储服务器上运行的代理进程对请求做出响应。代理可以对消息进行处理、执行所请求的磁盘存储I/o操作、以及将确认消息返回到远程客户端。因而,存储协议是双边的,这是因为其涉及执行进程的连接的两边的中央处理单元(CPU),这两边彼此进行通信以协调I/o操作。
[0003]在一些情况下,双边存储协议可以使用远程直接存储器访问(RDMA)以在两个计算机之间传输数据。如这个术语RDMA在本申请中被使用的那样,RDMA是一种允许存储服务器的网络接口控制器(NIC) “直接地”向远程客户端的存储器或从远程客户端的存储器传输数据的技术,即向远程客户端的存储器或从存储器传输数据而不涉及远程客户端上的中央处理单元(CPU)。在示例方法中,远程客户端注册目标存储器缓冲区,并向存储服务器发送所注册的存储器缓冲区的描述。远程客户端然后将读取或写入请求发布给存储服务器。如果该请求是写入请求,那么存储服务器执行RDAM读取以将来自目标存储器缓冲区的数据加载到存储服务器的本地存储器中。存储服务器然后使得磁盘控制器将目标数据写入磁盘,一旦完成写入,就生成并向远程客户端发送写入确认消息。响应于读取请求,存储服务器使用磁盘控制器执行从磁盘的块级读取(block-level read),并将数据加载到其本地存储器中。存储服务器然后执行RDMA写入以将数据直接放置到远程计算机的应用存储器缓冲区中。在RDAM操作完成之后,远程客户端从RDMA网络注销目标存储器缓冲区,以防止进一步的RDMA访问。使用RDMA增加了数据吞吐量,降低了数据传输的延迟,并且减少了数据传输期间存储服务器和远程客户端的CPU上的负荷。虽然CPU承受来自存储器注册和消息处理的某些开销,但是这样的延迟通常比写入磁盘的延迟小得多,并且因此不会显著地影响性能。
[0004]在这个部分中描述的方法是可能寻求的方法,但不一定是先前已经被构想或寻求的方法。因此,除非另外指示,不应当仅仅凭借这个部分包括被描述的方法而假定这些被描述的方法中的任何一个能够作为现有技术。
【附图说明】
[0005]在附图的图中通过示例的方式而不是通过限制的方式说明了各个实施例,并且其中相同的附图标记表示相似的元件,并且其中:
[0006]图1是描绘根据实施例的用于提供对持久存储装置的直接访问的示例性系统的框图;
[0007]图2是描绘根据实施例的用于注册持久存储器的示例性过程的流程图;
[0008]图3是描绘根据实施例的用于实施单边存储协议的示例性过程的流程图;
[0009]图4是说明根据实施例的用于向持久存储器写入数据的示例性过程的梯形图;
[0010]图5是描绘可以在其上实施实施例的计算机系统的框图。
【具体实施方式】
[0011]本申请描述了用于对共享存储装置中的持久存储器进行直接访问的技术。在以下描述中,为了解释的目的,阐释了大量的特定细节以便提供对本发明的深入理解。但是显而易见的是,可以在没有这些特定细节的情况下实施本发明。在其它实例中,在框图中示出了公知的结构和设备,以避免不必要地使得本发明难以理解。
[0012]总体概述
[0013]根据本申请描述的实施例,存储服务器包括持久随机存取存储器(PRAM)。与当前市场上可用的动态随机存取存储器(DRAM)和静态随机存取存储器(SRAM)选项相比,PRAM可以提供较高的密度。此外,PRAM是非易失性的,存储数据不需要电力,而DRAM和SRAM需要电力来存储数据。
[0014]PRAM可以被用作DRAM的直接替换,以作为存储服务器中的主存储器,这相对于其它形式的非易失性存储装置具有若干优点。例如,访问PRAM的延迟可以显著地小于对块设备进行读取和写入的延迟。访问PRAM不需要寻找机制、向存储控制器传送消息、或诸如块擦除和块缓冲之类的块管理。由于对PRAM多么迅速的读取和写入都可能发生,因此即使很小的处理开销可能显著地影响性能。
[0015]在实施例中,一个或多个客户端的集合使用单边存储协议来访问存储服务器中的PRAM。单边存储协议在读取和写入操作期间不需要存储服务器进行的CPU处理。例如,客户端可以向客户端的网络适配器注册PRAM。客户端然后可以使用RDMA读取和写入,直接地向存储服务器的PRAM并且从存储服务器的PRAM传输数据,而不需要存储服务器的CPU进行任何消息处理。相应地,在PRAM访问期间单边协议可以显著地降低或消除CPU开销。此夕卜,I/O操作的可扩展性不受到任何存储装置侧代理处理的限制。
[0016]在另一实施例中,存储服务器上的PRAM对数据库的一部分或整个数据库进行缓存。远程客户端上的数据库服务器可以执行I/O操作以使用单边存储协议对持久存储装置读取和写入数据。通过使用单边协议,数据库管理系统(DBMS)可以高效地提交数据库事务,而不需要向诸如磁盘之类的块设备写入数据。
[0017]系统概述
[0018]图1是描绘根据实施例的用于提供对持久存储装置的直接访问的示例性系统的框图。系统100 —般包括客户端系统110、网络130和存储服务器140。系统100可以包括经由网络130通信地耦接到存储服务器140的多个其它客户端系统,为了简洁的目的没有示出这些其它客户端系统。
[0019]客户端系统110 —般包括进程112、内核114、CPU 116、存储器118和网络适配器120。存储服务器140 —般包括进程142、内核144、PRAM 148、CPU 146和网络适配器150。客户端系统110和存储服务器140中的每一个可以包括其它元件,为了简洁的目的没有示出这些其它元件。例如,依赖于特定的实施方式,客户端系统110和/或存储服务器140可以包括或者可以不包括磁盘存储装置。此外,这些系统中的每一个可以包括多个CPU。
[0020]进程112和142可以是分别在CPU 116和CPU 146上运行的任何应用进程。例如,进程112可以是DBMS的服务器进程。作为另一示例,进程142可以是执行PRAM 148的注册的应用的实例,如下面进一步详细描述的那样。在每个CPU上执行的进程的数量和类型可以随着实施方式的不同而变化。
[0021]内核114和144是分别在客户端系统110和存储服务器140上的管理应用进程与硬件资源之间的通信的软件进程。例如,内核114可以确定哪个应用进程被分配给CPU116、允许进程使用存储器118的哪些部分、以及应用进程如何与网络适配器120通信。在RDMA操作期间,进程112可以绕过内核114和144,而直接访问PRAM 148,如下面进一步详细描述的那样。
[0022]客户端系统110和存储服务器140经由网络130通信地耦接在一起。网络130可以包括一个或多个计算机网络,该一个或多个计算机网络提供允许客户端系统110与存储服务器140之间的数据通信的通信信道。例如,网络130可以通过现在通常称为“因特网”的世界范围的分组数据通信网络、存储区域网络(SAN)和/或局域网络(LAN)来提供数据通信服务。在另一示例中,网络130可以是针对RDMA协议优化的交换结构通信链路,例如无限带宽(InfiniBand)交换结构或任何其它RDMA互连。
[0023]网络适配器120和150分别将客户端系统110和存储服务器140连接到网络130。网络适配器120和150可以包括支持RDMA操作的任何类型的网络适配器,在本申请中这样的网络适配器被称为使能了 RDMA的网络接口控制器(RNIC)。示例性的RNIC包括但不限于无限带宽主机信道适配器(HCA)。网络适配器120和150实施可靠传输之上的RDMA协议(RDMAP)。因而,网络适配器120和150可以支持包括但不限于通过融合以太网的RDMA(RoCE)、因特网广域RDMA协议(iWarp)、和无限带宽协议的协议。
[0024]网络适配器120和150可以与RNIC接口(RI)相关联,其中RI是RNIC对消费者的呈现,其通过RNIC设备和RNIC设备驱动器的组合被实施。本申请中所使用的消费者可以是通过RI与RNIC通信的任何软件进程,例如应用进程和内核。可以将RI实施为硬件、固件和软件的组合。内核可以通过一个或多个应用程序接口(API)向应用进程暴露RI功能中的一些或全部。
[0025]由网络适配器120和150执行的处理可以由RNIC引擎来执行。RNIC引擎将对RDMA消息的处理从CPU 116和146卸载到网络适配器120和150上。RNIC引擎的实施方式可以随实施方式的不同而变化。例如,RNIC引擎可以被包括在网络适配器卡上的集成电路或某个其它硬件中。在另一实施例中,网络适配器可以包括具有用于处理RDMA消息并执行直接存储器访问的有限指令集的专用处理器。
[0026]持久随机存取存储器
[0027]PRAM 148是可以改变或读取单独的存储位而不需要擦除或读取整个存储单元(storage cell)块的非易失性RAM。因此,与诸如闪速存储器和硬盘之类的块设备相比,PRAM不限于以块的形式移动数据。此外,PRAM 148中的数据可以被重写,而不必先擦除它。PRAM 148的示例包括但不限于相变存储器和铁电R