NVMe-oF以太网SSD中的低延迟直接访问块存储的制作方法

文档序号:15829195发布日期:2018-11-03 00:18阅读:150来源:国知局
本申请要求于2017年4月25日提交的标题为“amethodforlowlatencydirectaccessblockstorageinnvme-ofethernetssd”的美国临时申请第62/489,991号的优先权和权益,其全部内容以引用方式并入本文中。本公开总体涉及用于固态驱动器的数据访问方法和系统。
背景技术
固态驱动器(ssd)正在取代了传统的硬盘驱动器(hdd),迅速成为现代it基础设施的主要存储元件。ssd提供非常低的延迟、高数据读取/写入吞吐量以及可靠的用户数据存储。光纤高速非易失性存储器(nvme-of)是一项新兴技术,其允许数百甚至数千个高速非易失性存储器(nvme)ssd通过以太网连接。nvme-of协议实现了远程直接连接存储(rdas)实施。这允许大量的ssd连接到远程主机。nvme-of协议使用远程直接存储器访问(rdma)协议来提供用于携带nvme命令、数据和响应的可靠传输服务。互联网广域rdma协议(iwarp)、融合以太网rdma(roce)v1和rocev2是提供rdma服务的一些传输协议。图1描绘了常规nvme-of以太网ssd存储中使用的系统架构的示例。如图1中所示,在服务器上运行的应用程序通常通过系统软件栈来访问存储。典型的存储系统软件栈包括许多层,诸如应用程序、操作系统(os)/文件系统(fs)、nvme-of驱动器、块存储层(图1中未示出)以及rdma传输层(图1中未示出)。系统软件的这些众多层可能会为应用程序的数据访问增加大量延迟。由于存储介质技术(例如,z-nand)和联网技术(例如,100gbps以太网)的进步,由于介质和网络造成的延迟贡献显著下降。因此,系统软件延迟正在成为整体数据访问延迟的重要组成部分。在
背景技术
部分中公开的上述信息被提供用于增强对本发明的背景的理解,并且因此它可以包含不构成现有技术的信息。技术实现要素:本公开涉及对通过以太网连接的高速非易失性存储器(nvme)固态驱动器(ssd)设备中的至少一个非易失性闪存进行低延迟直接数据访问的各种方法。在一个实施例中,该方法包括从主机的低延迟直接访问(ll-dax)块存储软件层向闪存传输远程直接存储器访问(rdma)写请求。rdma写请求包括数据、存储地址、数据传送操作的长度和操作码。该方法还包括在主机处接收指示数据已被保存到闪存的确认。该方法还包括从ll-dax块存储软件层向闪存传输rdma读请求。rdma读请求包括存储地址、数据传送的长度和操作码。该方法还包括在主机处从闪存接收对应于rdma读请求的数据分组。rdma首部字段中可以携带rdma写请求和rdma读请求的存储地址、数据传送的长度以及操作码。该方法还可以包括使用光纤高速非易失性存储器(nvme-of)协议将rdma写请求和rdma读请求从主机传输到闪存。传输rdma写请求和传输rdma读请求可以包括使用一系列rdma队列对(qp)进行传输。该方法还可以包括当两个或更多个rdmaqp具有主机命令时,使用ll-dax主机接口(hif)逻辑执行仲裁。仲裁选择主机命令中的一个用于执行。该系列rdmaqp中的第一rdmaqp可以专用于第一命令,并且该系列rdmaqp中的第二rdmaqp可以专用于与第一命令不同的第二命令。第一命令可以是写命令,并且第二命令可以是读命令。该方法还可以包括从主机处的ll-dax块存储软件层向闪存传输识别命令。闪存响应于识别命令,将关于闪存的信息传输到主机。该信息可能包括闪存的所支持的功能、能力和特性。识别命令可以与rdma读请求一起传输。该方法还可以包括从主机的ll-dax块存储软件层向闪存传输删除命令。删除命令包括块地址范围的起始块地址和结束块地址。删除命令可以与rdma写请求一起传输。rdma读请求和rdma写请求可以使用诸如rocev1、rocev2或iwarp的rdma传输协议进行传输。ll-dax块存储软件层可以包括超时值,并且ll-daxqp可以包括被配置成防止在传输rdma写请求期间超时的接收缓冲区。闪存的ll-dax存储容量可以与nvme-of命名空间共享。本公开还涉及用于对非易失性闪存进行低延迟直接数据访问的系统的各种实施例。在一个实施例中,该系统包括通过以太网连接的包括闪存的至少一个光纤高速非易失性存储器(nvme-of)固态驱动器(ssd)设备,以及包括处理器和低延迟直接访问(ll-dax)块存储软件层的主机设备。ll-dax块存储软件层包括存储在其中的指令,该指令在由处理器执行时使处理器向闪存传输远程直接存储器存取(rdma)写请求,该rdma写请求包括数据、存储地址、数据传送操作的长度和操作码,接收指示数据已被保存到闪存的确认,向闪存传输rdma读请求,该rdma读请求包括存储地址、数据传送的长度和操作码,以及从闪存接收对应于rdma读请求的数据分组。主机设备可以包括指令,该指令在由处理器执行时使处理器使用光纤高速非易失性存储器(nvme-of)协议将rdma写请求或rdma读请求传输到非易失性闪存。nvme-of协议模式和ll-dax模式可以排它地或同时运行。nvmessd设备可以包括被配置成在两个或更多个rdma队列对(qp)中的主机命令之间进行仲裁的ll-dax主机接口(hif)逻辑。两个或更多rdmardmaqp中的第一rdmaqp可以专用于第一命令,并且两个或更多rdmardmaqp中的第二rdmaqp可以专用于与第一命令不同的第二命令。ll-dax块存储软件层可以包括超时值,并且至少一个nvmessd设备可以包括被配置成防止在rdma写请求的传输期间超时的接收缓冲区。存储在ll-dax块存储软件层中的指令在由处理器执行时还可以使处理器向闪存传输识别命令或者向闪存传输删除命令。提供本
发明内容是为了介绍将在以下具体实施方式中进一步描述的本公开的实施例的特征和概念的选择。本
发明内容不旨在确定所要求保护的主题的关键或基本特征,也不旨在用于限制所要求保护的主题的范围。所描述的特征中的一个或多个可以与一个或多个其它描述的特征组合以提供可使用的设备。附图说明当结合以下附图考虑时,通过参考以下具体实施方式,本公开的实施例的这些和其它特征和优点将更加显而易见。在附图中,图中使用相同的附图标记来指代相同的特征和组件。这些图不一定按规定比例绘制。图1是描绘光纤高速非易失性存储器(nvme-of)以太网ssd存储中使用的常规系统架构的示意图;图2是描绘根据本公开的一个实施例的nvme-of以太网ssd存储中使用的系统架构的示意图;图3是描绘ll-dax写命令的格式的图;图4是描绘ll-dax读命令和ll-dax识别命令的格式的图;图5是描绘ll-dax删除命令的格式的图;以及图6是根据本公开的一个实施例的essd中的ll-dax操作的流程图。具体实施方式本公开涉及在光纤高速非易失性存储器(nvme-of)以太网ssd存储中进行低延迟数据访问的各种系统和方法。本公开的各种系统和方法利用ll-dax协议、启用ll-dax的essd和ll-dax块存储软件。用于低延迟访问数据存储的各种系统和方法被配置成实现高性能和具成本效益的解决方案。本公开的各种系统和方法被配置成绕过常规数据访问方法中使用的一些存储软件栈层,以提供低延迟并降低现有存储软件栈的复杂性和成本。此外,本公开的各种系统和方法不需要任何额外的中间存储硬件基础设施(即,本公开的各种系统和方法不会对存储基础设施施加任何新的硬件要求,并且因此这些系统和方法不影响任何已安装的硬件基础设施)。在下文中,将参照附图更详细地描述示例实施例,其中相同的附图标记始终指代相同的元件。然而,本公开可以以各种不同的形式来具体实施,并且不应该被解释为仅限于在本文示出的实施例。更确切地说,提供这些实施例作为示例,以使得本公开将是全面和完整的,并且将向本领域技术人员充分传达本公开的方面和特征。因此,可能不会描述并非是本领域普通技术人员完全理解本公开的方面和特征所必需的过程、元件和技术。除非另有说明,否则在整个附图和书面描述中,相同的附图标记表示相同的元件,并且因此可以不重复对其的描述。在附图中,为了清楚起见,元件、层和区域的相对尺寸可能被夸大和/或简化。为了便于解释,可以在本文中使用诸如“在…下方”,“在…下面”,“下”,“在…之下”,“在…上面”,“上”等的关系,以描述一个元件或特征与另一个元件或特征的如附图所示的关系。应该理解的是,除了附图中描绘的方位之外,空间相对术语旨在涵盖使用或操作中的设备的不同方位。例如,如果附图中的设备翻转,则被描述为在其它元件或特征“下面”或“下方”或“之下”的元件将被定向为在其它元件或特征“上面”。因此,示例术语“在…下面”和“在…之下”可以涵盖上面和下面两种方位。设备可以以其它方式定向(例如,旋转90度或以其它方位),并且相应地解释本文使用的空间相对描述符。将理解的是,虽然本文可以使用术语“第一”、“第二”、“第三”等来描述各种元件、组件、区域、层和/或部分,但是这些元件、组件、区域、层和/或部分不应受这些术语的限制。这些术语用于区分一个元件、组件、区域、层或部分与另一元件、组件、区域、层或部分。因此,在不脱离本发明的精神和范围的情况下,下面描述的第一元件、组件、区域、层或部分可以被称为第二元件、组件、区域、层或部分。将理解的是,当元件或层被称为“在另一元件或层上”、“连接到”或“耦合到”另一元件或层时,它可以直接在另一元件或层上,连接到或耦合到另一元件或层,或者可以存在一个或多个中间元件或层。此外,还将理解的是,当元件或层被称为在两个元件或层“之间”时,它可以是两个元件或层之间的唯一元件或层,或者也可能存在一个或多个中间元件或层。本文使用的术语是为了描述特定实施例的目的,而不旨在限制本发明。如本文所使用,除非上下文另外明确地指出,否则单数形式“一”和“一个”也旨在包括复数形式。将进一步理解的是,当在本说明书中使用时,术语“包括”和“包含”指定存在所陈述的特征、整体、步骤、操作、元件和/或组件,但不排除存在或添加一个或多个其它特征、整体、步骤、操作、元件、组件和/或其群组。如本文所使用,术语“和/或”包括一个或多个相关所列项目的任何和所有组合。诸如“至少一个”之类的表述当在元件列表之前时,修饰整个元件列表并且不修饰列表的单个元件。如本文所使用,术语“基本上”、“大约”和类似术语被用作近似术语而不是程度术语,并且旨在解释将由本领域的普通技术人员认识到的测量值或计算值中的固有变动。此外,当描述本发明的实施例时,使用“可以”是指“本发明的一个或多个实施例”。如本文所使用,术语“使用”和“所使用”可以分别被认为与术语“利用”和“所利用”同义。而且,术语“示例性”旨在指代示例或说明。除非另外定义,否则本文使用的所有术语(包括技术和科学术语)具有与本发明所属领域的普通技术人员通常理解的相同的含义。将进一步理解的是,诸如在通用字典中定义的那些术语应该被解释为具有与其在相关技术和/或本说明书的上下文中的含义相一致的含义,并且不应该被解释为理想化或过于正式的意义,除非在本文明确地如此定义。ll-daxessd协议现在参考图2,根据本公开的一个实施例的ll-dax存储和数据访问系统包括主机设备100和ll-daxessd101(即,通过以太网连接的一系列nvmessd设备)。ll-daxessd101是标准的nvme-ofessd,具有额外的ll-dax特征支持。主机设备100包括应用程序102、ll-dax块存储软件103和rdma传输层104。在所示实施例中,ll-daxessd101包括rdma目标层105、连接到rdma目标层105的ll-dax接收缓冲区106、连接到ll-dax接收缓冲区106的ll-dax主机接口(i/f)107、连接到ll-dax主机接口(i/f)107的闪存转换层(ftl)108,以及连接到ftl108的ll-dax存储109。如下面更详细描述,主机设备100中的ll-dax块存储软件103利用ll-dax协议向ll-daxessd101中的rdma目标105发送主机命令(例如,rdma读命令和rdma写命令)以获得对存储在ll-dax存储109中的数据的低延迟直接访问(例如,ll-dax块存储软件103向应用程序102或主机100处的其它系统软件层提供存储服务并利用rdma读请求和rdma写请求将数据传送到ll-daxessd中的ll-dax存储或从中传送数据)。以此方式,本公开的系统被配置成绕过主机设备100的文件系统层110、操作系统(os)层111、块存储层112和nvme-of层113,并获得对存储在ll-daxessd101的ll-dax存储109中的数据的低延迟直接访问。另外,在一个或多个实施例中,ll-daxessd101还可以作为符合标准的nvme-of以太网ssd进行操作。ll-dax数据访问模式是一项可选特征。因此,应用程序可以根据需要使用标准块存储模式或ll-dax模式。另外,在一个或多个实施例中,ll-daxessd101可以同时支持两种访问模式(即,ll-dax和nvme-of)。ll-dax协议使用包括远程直接存储器访问(rdma)读请求和rdma写请求以执行数据传送的rdma传输(即,ll-dax写命令和ll-dax读命令被用于数据访问)。利用rdma读请求从essd101检索或提取数据。利用rdma写请求将数据从主机100传送到essd101。如下面的表1中所示,每个rdma读请求和rdma写请求包括与ll-dax存储有关的操作码(opc)字段、地址(addr)字段和长度(len)字段。表1下面的表2示出了根据本公开的一个实施例的用于rdma写请求和/或rdma读请求的操作码(opc)字段的命令集(即,一组编码),其包括强制(m)命令集和可选(o)命令集。图3是描绘ll-dax写命令的格式的图,并且图4是描述ll-dax读命令的格式的图。opc值(8位)m/o编码0mll-dax主机写1mll-dax主机读2mll-dax识别3oll-dax删除4-255narsvd表2现有rdma首部字段中携带了上述的ll-dax命令字段(即,操作码(opc)、地址(addr)和长度(len))。也就是说,通常用于远程缓冲区细节的现有rdma首部字段被重新利用以携带ll-dax命令字段(即,操作码(opc)、地址(addr)和长度(len))。存在多个rdma传输协议,诸如互联网广域rdma协议(iwarp)、融合以太网rdma(roce)v1和rocev2,因此重新用于ll-dax用途的实际字段名称可能根据rdma传输协议而变化。下面的表3示出了用于rocev1请求和rocev2请求的一个可能的映射。ll-dax字段名称读/写opcreth.r-key[7:0]addrreth.va[63:0]lenreth.dmalen[31:0]表3下面的表4示出了用于iwarp请求的一个可能的映射。ll-dax字段名称读写opcrdmap.srcstag[7:0]ddp.sinkstag[7:0]addrrdmap.srcto[63:0]ddp.sinktaggedoffset[63:0]lenrdmap.rdmardsz[31:0]表4ll-dax协议还利用ll-dax识别命令从essd101获取4kb数据结构。响应于接收到ll-dax识别命令,essd101报告关于ll-dax存储109的信息,诸如其所支持的特征、能力和特性。ll-dax识别命令的格式与ll-dax读命令的格式相同,如图4中所示。下面的表5标识响应于ll-dax识别命令而报告的关于ll-dax存储109的信息,包括为rdma读命令和写命令访问所保留的ll-dax存储容量(例如,1tb)、essd101上存在的接收缓冲区大小、essd101支持的最大rdma写大小以及块大小。在一个或多个实施例中,ll-dax存储109可以是用于ll-dax应用程序和用户的essd101内的专用存储容量。在一个或多个实施例中,ll-dax和非ll-dax应用程序可以通过文件系统或其它系统栈层在essd101内共享相同的存储容量(例如,ll-dax应用程序和非ll-dax应用程序可以互相交换数据)。在ll-dax应用程序与传统的非ll-dax应用程序之间共享存储空间也可以在ssd控制器级实现。例如,在一个或多个实施例中,ll-dax存储109可以与nvme-of命名空间共享。在ll-dax存储109与nvme-of命名空间共享的一个或多个实施例中,在主机软件的较高级处执行访问协调。表5ll-dax协议可选地利用ll-dax删除命令。ll-dax删除命令携带一个或多个删除地址范围条目。每个删除范围条目都是16字节的数据结构,其中包含删除范围条目的起始块地址和结束块地址。图5是描绘ll-dax删除命令的格式的图。下面的表6描述了删除范围条目的格式。表6为ll-dax协议设置的命令是可扩展的,并且可以向ll-dax协议添加附加的命令,诸如例如控制和状态寄存器(csr)访问以及健康日志。根据本公开的一个实施例的一种在通过以太网连接的nvmessd设备中对闪存进行低延迟数据访问的方法包括从主机100处的ll-dax块存储软件层103向闪存传输rdma写请求的任务,该rdma写请求包括数据、存储地址、数据传送操作的长度和操作码。rdma写请求在识别的存储地址处将数据保存到闪存。该方法还包括从ll-dax块存储软件层向闪存传输rdma读请求的任务,该rdma读请求包括存储地址、数据传送的长度和操作码。rdma读请求检索位于闪存的指定存储地址的数据。rdma首部字段中携带了rdma写请求和rdma读请求的存储地址、数据传送的长度以及操作码。该方法还可以包括从主机处的ll-dax块存储软件层向闪存传输ll-dax识别命令的任务,以获得关于闪存的信息,诸如其支持的特征、能力和特性。ll-dax识别与rdma读请求一起传输。该方法还可以包括从主机处的ll-dax块存储软件层向闪存传输删除命令的任务,以删除在一个或多个指定地址范围上的保存在闪存上的数据。删除命令与rdma写请求一起传输。ll-daxessd操作再次参考图2,ll-dax是标准nvme-of以太网ssd中的可选特征,因为essd支持嵌入式rdma网络接口。nvme-of协议利用rdma队列对(qp)传输命令、数据和完成。nvme-of主机驱动器利用rdma发送请求向essd发送命令。essd利用rdma读请求和rdma写请求进行数据传送。essd还利用rdma发送请求向主机通告完成(例如,数据保存的确认)。ll-dax利用存在于essd101中的相同rdma接口。ll-dax利用用于ll-dax访问的一个或多个单独的专用队列对(qp)120。ll-dax主机使用rdma读请求和rdma写请求来执行数据传送并向essd101发送命令。essd101仅响应于ll-dax主机的rdma请求(例如,rdma读请求和rdma写请求)并且不会自行发起任何rdma请求。rdma确认用作数据传送完成,并且与nvme-of中的完成相反,不存在单独的完成。也就是说,nvme-of有明确的命令完成,而ll-dax没有这类明确的完成。相反,ll-dax为此目的使用rdma级确认。在一个或多个实施例中,nvme-of协议模式和ll-dax模式可以排它地或同时运行(例如,essd支持nvme-of协议模式和ll-dax协议模式二者,使得nvme-of操作模式可以与ll-dax操作模式共存)。图6是描绘根据本公开的一个实施例的essd中的ll-dax操作的流程图。如图6中所示,在操作201中,essd从主机设备处的ll-dax块存储软件层103(参见图2)接收rdma读请求或rdma写请求。在操作202中,确定ll-daxqp上是rdma读请求还是rdma写请求。当essd接收到不在ll-daxqp上的rdma读请求或rdma写请求时,rdma读命令或rdma写命令遵循用于访问essd的标准nvme-of协议,如操作203中所示。当essd从主机设备处的ll-dax块存储软件层103接收到在ll-daxqp上的rdma读请求或rdma写请求时,rdma请求被转发到ll-dax主机接口(hif)逻辑107(参见图2)。在操作204中,当两个或更多个ll-daxqp120具有主机命令时,ll-daxhif逻辑107执行这些ll-daxqp120之间的仲裁以选择一个主机命令用于执行。由ll-daxhif逻辑107执行的仲裁可以是例如简单的循环(round-robin)仲裁或用主机控制的设置实现的更复杂的仲裁方案。在一个或多个实施例中,可以使用不同的ll-daxqp120来区分不同命令之间的执行。例如,一个ll-daxqp120可以仅用来发送写命令(例如,一个ll-daxqp120可专用于专门发送写命令),而另一个ll-daxqp120可以仅用来发送读命令(例如,一个ll-daxqp120可专用于专门发送读命令)。ll-daxhif逻辑107解析所选择的命令并从rdma命令中提取操作码以及其它相关的ll-dax字段。ll-daxhif逻辑107然后执行接收到的ll-dax命令并向主机确认rdma请求分组。在一个或多个实施例中,不存在单独的命令完成。rdma请求分组确认用作命令的完成。继续参考图6,在操作205中,ll-daxhif逻辑107(参见图2)确定主机命令是rdma读请求还是rdma写请求。如果主机命令被确定为rdma写命令,则在操作206中,ll-daxhif逻辑107通过检查主机命令的操作码值来确定rdma写命令是ll-dax写命令还是ll-dax删除命令(其与rdma写命令一起传输)。在操作207中,当ll-daxhif逻辑107确定主机命令是ll-dax写命令时(例如,当命令的操作码值为0时),ll-daxhif逻辑107首先在操作208中将接收到的数据保存到闪存介质(例如,ll-dax存储109,如图2中所示)或高速缓存,然后ll-daxhif逻辑107在操作209中确认rdma写(例如,对ll-dax写命令的确认通过ll-daxhif逻辑107传输到主机)。如果essd具有功率损耗保护缓冲区,则可以将接收到的写数据写入高速缓存,然后可以确认rdma写分组。为防止由于数据保存的持续时间导致主机端的rdma写超时,主机rdma栈可以编程有足够大的超时值。另外,ll-daxqp接收缓冲区106(参见图2)需要适当地调整大小以允许由于数据保存的持续时间而导致的一定量的写突发。当essd闪存转换层(ftl)繁忙且不能排空接收缓冲区时,吸收写突发将为主机提供更好的性能。例如,在一个或多个实施例中,50mb的接收缓冲区将允许40gbps速度下的10ms突发被吸收而不会对主机产生背压。所使用的背压机制是标准的rdmanack分组。如图6中所示,使用rdma写请求传输ll-dax删除命令。在操作210中,当ll-daxhif逻辑107确定主机命令是ll-dax删除命令时(例如,当命令的操作码值是16时),ll-daxhif逻辑107首先在操作211中启动对闪存转换层(ftl)映射表格的更新,然后ll-daxhif逻辑107在操作212中确认rdma写分组(例如,在操作212中,由ll-daxhif逻辑107将对用于传输ll-dax删除命令的ll-dax写命令的确认传输到主机)。如图6中所示,用于传输ll-dax删除命令的rdma写请求的有效载荷携带一个或多个被应用程序删除或解除分配的块地址范围。essd利用解除分配的地址信息进行闪存介质管理。继续参考图6,当ll-daxhif逻辑107在操作205中确定主机命令是rdma读命令时,ll-daxhif逻辑107然后在操作213中通过检查主机命令的操作码值来确定rdma读命令是ll-dax读命令还是ll-dax识别命令(其与rdma读命令一起传输)。在操作214中,当ll-daxhif逻辑107确定主机命令是ll-dax读命令时(例如,当命令的操作码值是1时),ll-daxhif逻辑107首先在操作215中从闪存介质(例如,ll-dax存储109)或从高速缓存获取所请求的数据,然后在操作216中用rdma读响应分组将所请求的数据传输到主机。在一个或多个实施例中,取决于网络最大传输单元(mtu),可能存在多个响应分组。最后一个rdma读响应分组确认ll-dax读命令。如图6中所示,使用rdma读请求传输ll-dax识别命令(即,将ll-dax识别命令作为rdma读请求的一部分来接收)。ll-dax识别命令与ll-dax读命令具有相似的执行流程。在操作217中,当ll-daxhif逻辑107确定主机命令是ll-dax识别命令时(例如,当命令的操作码值是2时),ll-daxhif逻辑107首先在操作218中从闪存介质(例如,ll-dax存储109)或从高速缓存获取识别数据结构,然后在操作219中使用rdma读取响应分组将识别数据结构传送到主机。ll-dax块存储软件操作再次参考图2,ll-dax块存储软件层103提供对应用程序或其它系统软件层的存储访问。ll-dax软件103执行与dax存储相关的各种功能,包括发现、应用程序侧接口、数据传送和错误处理。首先,ll-dax软件103需要发现ll-daxessd101并建立与ll-daxessd101的通信信道。ll-daxessd101的网络地址可以以任何合适的方法被提供给ll-dax软件103,诸如例如由包含ll-daxessd101的网络地址的存储管理员生成的文本文件。发现服务可以由存储管理员进行管理。这类发现方法通常用于现有的存储基础设施。一旦ll-dax软件103已经发现并建立了与ll-daxessd101的通信信道,ll-dax软件103请求rdma传输层104建立到ll-daxessd101的所需数目的新队列对(qp)120。一旦建立了一个或多个qp120,ll-dax软件103使用rdma读请求发布ll-dax识别命令。ll-daxessd101通过传送关于ll-dax存储109的信息(例如,识别ll-dax存储109的参数,诸如ll-dax存储109的各种能力、特征和特性)来响应ll-dax识别命令。因此,在ll-dax识别命令之后,ll-dax驱动器理解了在数据存储的正常操作期间使用的底层ll-dax存储109的各种能力、特征和特性。ll-dax软件103向应用提供用于访问ll-dax存储109的接口。ll-dax是内核模块并且它使用输入/输出控制(ioctl)系统调用来提供读/写接口。ll-dax软件103不以加载存储库语义操作。ll-dax驱动程序可以使用与ll-dax驱动器相关联的设备句柄来访问应用程序。应用程序可以使用该句柄和ll-dax存储地址发出读操作和写操作。这些应用程序请求被ll-dax软件103转换成适当的rdma层请求。ll-dax软件103发出rdma请求并跟踪rdma请求的完成。当请求完成时,返回应用程序调用。当分配在ll-dax存储109中的数据结构被删除或解除分配时,ll-dax软件103将这些事件转换成ll-dax删除命令,并将这些命令发送到essd101。利用ll-dax删除命令使essd减少与essd中的后台操作相关的垃圾收集。另外,类似于文件系统,ll-dax软件103可以实现一些基本的存储空间管理功能。例如,在一个或多个实施例中,ll-dax软件103可以实现存储空间分配和解除分配功能。在一个或多个实施例中,ll-dax软件103可以使用ll-dax存储109执行应用程序的基本访问控制。当应用程序需要一定量的存储时,应用程序请求分配所期望的存储量。ll-dax软件103可以维护用于ll-dax存储109的分配表。ll-dax软件103从可用空间中分配所请求的存储空间并且将该空间的存储句柄返回给请求者。存储句柄然后被应用程序用于后续的数据读/写访问。另外,在一个或多个实施例中,为了提供更大的灵活性、数据可访问性和空间管理,ll-dax块存储软件103可以包括文件信息转换功能。因此,在一个或多个实施例中,ll-dax应用程序可以与另一应用程序(例如,非ll-dax应用程序)共享其ll-dax数据。虽然已经参考示例实施例描述了本发明,但是本领域技术人员将认识到,可以对所描述的实施例执行各种改变和修改,所有这些都不脱离本公开的精神和范围。此外,各种
技术领域
的技术人员将认识到,本文描述的本公开将提出其它任务的解决方案以及其它应用程序的调适。申请人旨在通过本文的权利要求来覆盖本公开的所有这些用途,以及为了公开的目的而可以对本文所选的本公开的示例性实施例进行的那些改变和修改,所有这些都不偏离本公开的精神和范围。因此,本公开的示例实施例在所有方面都应被认为是说明性的而非限制性的,本公开的精神和范围由所附权利要求及其等效物指示。当前第1页12
当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1