用于向持久性存储器多播数据的方法和系统与流程

文档序号:11133858阅读:509来源:国知局
用于向持久性存储器多播数据的方法和系统与制造工艺

本申请要求2015年5月19日提交的美国临时专利申请序号62/163,754的优先权。美国临时专利申请序号62/163,754被整体地通过引用结合到本文中。



背景技术:

系统可以向持久性储存器写入数据和从持久性储存器读取数据的速度常常是系统的总体性能中的关键因素。向持久性存储系统传入数据和从其传出数据的传统方法要求通过在客户端系统和持久性存储系统两者上多层的软件、固件以及硬件来进行处理。如果存储系统希望针对客户端数据提供增加的抗错性,则由存储系统创建被写入数据的多个拷贝。结果,引发超过向底层存储介质写入一次以便实现增加的灵活性所需的等待时间的额外等待时间。

附图说明

图1示出了根据本技术的一个或多个实施方式的示例性系统。

图2示出了根据本技术的一个或多个实施方式的示例性存储设备。

图3A—3C示出了根据本技术的一个或多个实施方式的用于将数据存储在安全(vaulted)存储器中的方法。

图4A—4B示出了根据本技术的一个或多个实施方式的示例。

具体实施方式

现在将参考附图来详细地描述本技术的特定实施方式。为了一致性起见用相同的参考标号来表示各种图中的相同元件。

在本技术的实施方式的以下详细描述中,阐述了许多特定细节以便提供本技术的更透彻理解。然而,对于本领域的技术人员而言将显而易见的是可在没有这些特定细节的情况下实施本技术。在其它情况下,并未详细地描述众所周 知的特征以避免不必要地使本描述变得复杂。

遍及本申请,可使用序数(例如,第一、第二、第三等)作为用于元件(例如,本申请中的任何名词)的形容词。序数的使用并不暗示或产生元件的任何特定排序,也不使任何元件局限于仅单个元件,除非另外明确地公开,诸如通过使用术语“之前”、“之后”、“单个”及其它此类术语。相反地,序数的使用是为了对元件进行区别。举例来说,第一元件不同于第二元件,并且第一元件可包含超过一个元件并且在元件排序中在第二元件后面(或前面)。

一般地,本技术的实施方式涉及用于在不牺牲等待时间的情况下用多个拷贝向持久性储存器写入数据以实现可靠性并适应于物理存储配置的改变的方法和系统。更具体地,本技术的实施方式涉及使用多播来向一组存储模块中的持久性存储器段写入数据。此外,本技术的实施方式考虑到存储模块的当前状态以便动态地选择适当的多播配置。

更具体地,本技术的实施方式涉及创建一组预定义多播地址群,其中,该预定义多播地址群中的每一个使得能够将数据的至少两个拷贝写入到持久性储存器中的不同位置。该组预定义多播地址群被创建成使得数据的至少两个拷贝可被写入到持久性储存器,即使当各种存储设备不存在或者不可用于存储数据时。此外,从该组预定义多播地址群中选择特定的预定义多播地址群是基于持久性储存器的当前状态(即,哪些存储设备可用于存储数据)。以这种方式,本技术的实施方式使得能够与关于持久性储存器的状态的信息组合使用一组预定义多播地址群来实现I/O结构的动态多播实施方式。换言之,本技术的实施方式与持久性储存器的状态相组合地使用一组预定义多播地址群,以便动态地确定将在哪里将数据的所述至少两个拷贝写入到持久性储存器中。

本技术的实施方式可使得存储装置能够响应于来自客户端的写请求而高效地存储数据的多个拷贝。可通过使用已经用多播地址群(也称为预定义多播地址群)预配置的IO结构将数据写入到存储器位置(而不是直接地到固态储存器)来实现效率(或低等待时间)。在本技术的一个实施方式中,单独多播地址群的配置在I/O结构的操作期间可不改变。换言之,一旦多播地址群被配置且I/O结构正在使用多播地址群来服务请求,则多播地址群的配置不能改变,除非I/O结构在特定多播地址群被重配置的同时中止对其的使用。

图1示出了根据本技术的一个或多个实施方式的示例性系统。该系统包括 被操作连接到一个或多个存储装置102的一个或多个客户端100。下面描述这些部件中的每一个。

在本技术的一个实施方式中,每个客户端100是物理设备,其包括处理器(或另一类型的处理部件)、存储器以及用以使得其能够连接到存储装置中的输入/输出(IO)结构104的物理接口。每个客户端可经由客户端与IO结构之间的链路(即,物理连接)而连接到IO结构。

此外,每个客户端可包括用以实现通信协议(或其各部分)的功能以便实现本技术的一个或多个实施方式。更具体地,每个客户端可包括用以向存储装置发送(使用通信协议)请求和/或数据和/或从存储装置接收(使用通信协议)响应和/或数据的功能。

在本技术的一个实施方式中,客户端100被配置成使用以下通信协议中的一个或多个来与存储装置102通信:外围部件互连(PCI)、快速PCI(PCIe)、扩展PCI(PCI-X)、快速非易失性存储器(NVMe)、通过快速PCI结构的快速非易失性存储器(NVMe)、通过以太网结构的快速非易失性存储器(NVMe)以及通过Infiniband结构的快速非易失性存储器(NVMe)。本领域的技术人员将认识到本技术不限于上述协议。

在本技术的一个实施方式中,存储装置102包括IO结构104、处理器106、存储器108以及持久性储存器110。下面描述这些部件中的每一个。

在本技术的一个实施方式中,IO结构104是提供客户端与存储装置102中的各种部件之间的物理连接的一个或多个物理部件。例如,如图1中所示,IO结构在物理上连接到处理器106和持久性储存器110(或者更具体地到位于其中的存储设备114A、114N)。

此外,IO结构包括用以实现多播(参见例如图3A—3C)的功能。更具体地,在本技术的一个或多个实施方式中,IO结构可包括以下功能(i)接收包括数据和物理地址的IO交易;(ii)确定物理地址是多播地址群的一部分;以及(iii)基于在(ii)中进行的确定,执行多播写入(即,发起数据的拷贝到存储装置内的两个或更多存储器位置(下面描述)的写入)(参见例如图3B和3C)。

在本技术的一个实施方式中,IO结构是PCIe结构,诸如在美国专利申请序号14/224,846中描述的PCIe结构,该专利申请被整体地通过引用结合到本 文中。虽然可将IO结构实现为PCIe结构,但可使用已使用其它通信协议实现的IO结构和/或包括与在美国专利申请序号14/224,846中描述的PCIe结构不同的结构的I/O结构来实现本技术。

在本技术的一个实施方式中,客户端处理器106是具有被配置成执行指令的单核或多核的一组电子电路。在本技术的一个实施方式中,可使用复杂指令集(CISC)架构或精简指令集(RISC)架构来实现处理器。处理器可包括根复合体(由PCIe协议定义)。在这种情况下,存储器108可经由根复合体连接到处理器。替换地,存储器108可使用另一连接机制直接地连接到处理器。在本技术的一个实施方式中,存储器108对应于任何易失性存储器,包括但不限于动态随机存取存储器(DRAM)、同步DRAM、SDR SDRAM以及DDR SDRAM。

在本技术的一个实施方式中,持久性储存器110包括每个被配置成用以存储数据的两个或更多存储设备114A、114N。可将存储设备分组成切片112A、112M,其中,每个切片包括至少两个存储设备。此外,每个存储设备可仅与单个切片相关联。在本技术的一个实施方式中,IO结构包括一个或多个交换机(未示出),其中,每个交换机包括一组物理端口和用以在一个物理端口上接收请求和/或数据并将请求和/或数据路由到一个或多个其它物理端口的功能。在这种情况下,与给定切片相关联的所有存储设备经由该组端口中的一个端口连接到同一交换机。换言之,每个切片可存在一个交换机,并且连接到交换机的所有存储设备与同一切片相关联。下面在图2中提供关于存储设备的附加细节。

图2示出了根据本技术的一个或多个实施方式的示例性存储设备。存储设备200可包括存储设备控制器202、安全存储器206、固态储存器204以及电容器210。下面描述这些部件中的每一个。

在本技术的一个实施方式中,存储设备控制器202被配置成从IO结构接收请求和/或数据。此外,存储设备控制器被配置成将数据接收到存储器中,该存储器是持久性的或者借助于安全化(vaulting)到固态储存器中而持续。存储设备控制器还可被配置成从持久性存储器和/或固态储存器读取数据并向存储系统中的其它部件提供数据。

在本技术的一个实施方式中,安全存储器206在逻辑上或在物理上被划分成两个或更多安全存储器段208A、208P,其中,每个安全存储器段与安全存 储器段ID相关联。安全存储器段被用作向存储装置(参见图3A—3C)写入数据时的写路径的一部分。在本技术的一个实施方式中,存储设备控制器202被配置成在有存储设备中的电源故障的通知(或其中存储设备可能断电的任何其它事件)的情况下将安全存储器206的全部内容写出到固态储存器204。更具体地,存储设备控制器被配置成在电源故障通知的时间与存储设备实际断电之间将安全存储器的全部内容写入到固态储存器204。在本技术的一个实施方式中,电容器210尺寸被确定成使得其可以向存储设备200放出充分的电量,以便安全存储器中的所有数据都被写入到固态储存器。

在本技术的一个实施方式中,固态储存器204对应于使用固态存储器来存储持久性数据的任何数据存储设备。在本技术的一个实施方式中,固态存储器可包括但不限于NAND闪存、NOR闪存、磁性RAM存储器(M-RAM)、自旋扭曲磁性RAM存储器(ST-MRAM)、相变存储器(PCM)、忆阻存储器或被定义为非易失性存储级存储器(SCM)的任何其它存储器。本领域的技术人员将认识到本技术的实施方式不限于存储级存储器。

图3A—3C示出了根据本技术的一个或多个实施方式的用于将数据存储在安全存储器中的方法。虽然连续地提出并描述了流程图中的各种步骤,但本领域的技术人员将认识到某些或所有步骤可按照不同顺序执行,可被组合或省略,并且某些或所有步骤可并行地执行。

更具体地,在本技术的一个或多个实施方式中,存储装置被配置成响应于来自客户端的写请求而存储数据的至少两个拷贝。存储装置可使用多播以便存储数据的多个拷贝。在这种情况下,可用一个或多个多播地址群来预配置IO结构,并且存储装置可包括用以选择多播地址群内的物理地址且然后使用所选的物理地址来将数据存储在持久性储存器中的功能。转到图3A—3C,图3A示出了用于确定用以向持久性储存器写入数据的物理地址的方法。图3B和3C示出了用于使用上述物理地址以便将数据写入到持久性储存器的各种方法。

转到图3A,在步骤300中,由存储装置从客户端接收写请求。写请求可包括存储在客户端中的数据的逻辑地址。写请求还可包括数据本身。在本技术的一个实施方式中,逻辑地址是从客户端的观点出发数据看起来常驻于该处的地址。在本技术的一个实施方式中,逻辑地址是(或包括)通过对n元组应用散列函数(例如SHA-1、MD-5等)而生成的散列值,其中,n元组是<对象 ID,偏移>。在此类实施方式中,对象ID可识别文件,并且偏移指定相对于文件的起始地址的位置。在本技术的另一实施方式中,n元组是<对象ID,偏移,产生时间>,其中,产生时间对应于文件(使用对象ID识别)被创建时的时间。替换地,逻辑地址可包括逻辑对象ID和逻辑字节地址或者逻辑对象ID和逻辑地址偏移。在本技术的另一实施方式中,逻辑地址包括对象ID和偏移。本领域的技术人员将认识到逻辑地址不限于上述实施方式。

继续图3A的讨论,在步骤302中,目标存储设备(SD)选自当前在持久性储存器中可用的存储设备组。当存储装置能够从SD读取数据和向其写入数据时,可将SD视为可用。因此,虽然SD可在物理上存在于存储装置中,但如果存在阻止SD服务读请求和写请求的另一问题,则SD可能不一定可用。存储装置可跟踪存储装置中的哪些SD可用。

在步骤304中,一旦选择了目标SD,则识别目标SD位于其中的切片(参见例如图1)。存储装置可使用SD-切片映射来识别目标SD存在于其中的切片。例如,目标SD可以是(36个中的)SD号7,并且基于SD-切片映射,其可位于(切片0至5中的)切片号1中。

在步骤306中,确定在步骤304中识别的切片内的目标SD的逻辑SD索引。例如,如果目标SD是SD号7且目标SD位于其中的切片包括以下SD:5、7—9以及14—15,则用于该切片的逻辑SD索引是2(其中,可能的逻辑SD索引被编号为1—6)。

在步骤308中,获得坏SD映射。坏SD映射可以是用于切片(即,在步骤304中识别的切片)的坏SD映射、用于包括在步骤304中识别的切片的一组切片的坏SD映射或者用于存储装置中的所有切片的坏SD映射。无论坏SD映射的范围如何,坏SD映射指定在至少在步骤304中识别的切片中的SD的可用性。例如,如果该切片包括SD:5、7—9以及14—15并且SD 5和8不可用,则坏SD映射可以是<011011>,其中,0指示SD(用逻辑SD索引引用)不可用,并且1指示SD(用逻辑SD索引引用)可用。在不脱离本技术的情况下可使用坏SD映射的其它表示(即,并非位图的表示)。

在步骤310中,使用逻辑SD索引(在步骤306中获得)和在步骤308中获得的坏SD映射来确定安全存储器段ID。更具体地,在本技术的一个实施方式中,使用坏SD映射和逻辑SD索引来确定多播地址群ID(MC GID),其 中,MC GID与至少一个安全存储器段ID相关联。一旦已识别了MC GID,则使用逻辑SD索引来识别与MC GID相关联的安全存储器段ID。

下面描述根据本技术的一个或多个实施方式的识别安全存储器段ID的一个示例。本示例并不意图限制本技术。

考虑其中逻辑SD索引是2且坏SD映射是<001011>的情形。可使用上述信息和表1来确定安全存储器段ID。

表1:安全存储器段ID选择表

继续上述示例,使用逻辑SD索引(即,2)和坏SD映射(即,<001011>)来识别MC GID=G1。更具体地,可首先使用逻辑SD索引来将MC GID从G0—G7缩窄至G0—G3。然后可使用坏SD映射(或坏SD映射中的至少前三位)来从该组G0—G3中识别G1。一旦已识别了G1,则使用逻辑SD索引来将V1识别为安全存储器段ID。

在步骤312中,基于在步骤310中识别的安全存储器段ID来确定多播地址群(其指定一定范围的物理地址)。更具体地,在本技术的一个实施方式中, 使用逻辑SD索引和安全存储器段ID的组合来识别多播地址范围。在本技术的一个实施方式中,已在IO结构内预配置多播地址群以便使得能够实现数据到与逻辑SD索引相关联的SD中的所选安全存储器段的写入和数据的拷贝到与在步骤302中选择的SD相同的切片内的不同SD中的另一安全存储器段的写入。

下面描述根据本技术的一个或多个实施方式的识别多播地址群的一个示例。本示例并不意图限制本技术。

考虑其中安全存储器段ID是V1且逻辑SD索引是2的情形。可使用上述信息和表2来确定多播地址群。表2提供安全存储器段ID与多播地址群之间的映射。作为此映射的一部分,表2示出了如何在存储装置内镜像数据。例如,如果V0是安全存储器段ID,则数据的一个拷贝被存储在使用逻辑SD索引1识别的SD中的安全存储器中,并且数据的第二拷贝被存储在使用逻辑索引2识别的SD中的安全存储器中。

表2:多播地址群选择表

使用上述表格,使用安全存储器段ID来选择一个或多个行。如果使用安全存储器段ID识别到超过一行,则使用逻辑SD索引来识别上述表中的适当行。在本示例中,安全存储器段ID是V1,并且因此,仅存在一行与V1相关联。然而,存在与V1相关联的两个可能多播地址群—G1和G3。如果所有SD都 可用(使用坏SD映射来确定),则选择G3作为多播地址群。然而,如果所有SD都不可用,则选择多播地址群G1。在本示例中,由于所有SD都不可用,则选择G1作为多播地址群。

虽然表2示出了来自客户端的数据的镜像,但可将本技术实现成包括将数据的超过两个拷贝写入到持久性储存器。

继续图3A的讨论,在步骤314中,选择与所选多播地址群相关联的地址范围内的物理地址。

在此阶段,已确定物理地址。然后可使用各种方法来使用上述多播地址向持久性储存器写入数据。图3B和3C示出了用于使用多播地址的两个示例性方法。在不脱离本技术的情况下,可实现其它方法(除图3B和3C中所示的方法之外)以将数据写入到持久性储存器。

转到图3B,图3B描述了其中首先将数据存储在存储装置的存储器(参见例如图1,108)中且然后处理器(参见例如图1,106)发起数据到持久性储存器的写入的情形。更具体地,在步骤320中,存储装置将来自客户端的数据的拷贝存储到其存储器(参见例如图1,108)中。步骤320可在步骤322之前的任何点处发生(例如,其可与图3A中的步骤并行地发生)。在本技术的另一实施方式中,写请求可包括数据(参见例如图3A,步骤300),并且在这种情况下,可执行步骤320作为步骤300的一部分。

在步骤322中,处理器向IO结构发布IO交易,其中,IO交易包括客户端在其写请求中指定的数据(参见例如图3A,步骤300)和物理地址。IO交易可采取任何格式,并且包括用于IO结构处理IO交易以便将数据写入到持久性储存器所需的任何其它内容。在本技术的一个实施方式中,IO交易是PCIe交易。本技术不限于PCIe交易。

在步骤324中,IO结构接收并处理IO交易以便将数据的一个拷贝存储在目标SD中的安全存储器段中并将数据的第二拷贝存储在同一切片中的另一SD的安全存储器中。处理IO交易可包括:(i)确定IO交易中的物理地址与多播地址群相关联,以及(ii)基于(i)中的确定,向目标SD发布一个IO交易(参见图3A,步骤304),并向另一SD(在图3A中确定,步骤312)发布第二IO交易。在步骤324之后,在存储装置中可存在数据的三个拷贝—一个拷贝在存储器108中,一个拷贝在目标SD中的安全存储器中,并且一个拷 贝在与目标SD相同的切片中的另一SD中的安全存储器中。

转到图3C,图3C描述了其中客户端使用在步骤314中获得的物理地址来生成IO交易的情形。

在步骤330中,存储装置向客户端提供物理地址。

在步骤332中,客户端向IO结构发布IO交易,其中,IO交易包括来自客户端的数据和物理地址。IO交易可采取任何格式,并且包括用于IO结构处理IO交易以便将数据写入到持久性储存器所需的任何其它内容。在本技术的一个实施方式中,IO交易是PCIe交易。本技术不限于PCIe交易。

在步骤334中,IO结构接收并处理IO交易以便将数据的一个拷贝存储在存储器中、将数据的一个拷贝存储在目标SD中的安全存储器段中以及将数据的一个拷贝存储在同一切片中的另一SD的安全存储器中。处理IO交易可包括:(i)确定IO交易中的物理地址与多播地址群相关联,以及(ii)基于(i)中的确定,向目标SD发布一个IO交易(参见图3A,步骤304),向另一SD(在图3A中确定,步骤312)发布第二IO交易,并向处理器发布第三IO交易。在步骤324之后,在存储装置中可存在数据的三个拷贝—一个拷贝在存储器108中,一个拷贝在目标SD中的安全存储器中,并且一个拷贝在与目标SD相同的切片中的另一SD中的安全存储器中。

无论是否实现图3B或3C以将数据存储在持久性储存器内,在某个稍后的时间点处,安全存储器中的数据的每个拷贝被存储在安全存储器位于其中的SD的固态储存器中。

图4A—4B示出了根据本技术的一个或多个实施方式的示例。本技术不限于上述示例。

转到图4A,考虑其中存储装置包括多个切片的情形,其中切片1包括SD 1、SD 2和SD 3(参见图4A)。此外,切片1中的上述SD的逻辑SD索引分别地是1、2和3。

在本示例中,假设客户端向存储装置发送写请求。响应于该请求,存储装置选择SD 1作为目标SD。基于此信息,用于SD 1的逻辑SD索引是1。存储装置随后获得用于切片1的以下坏SD映射:<110>。使用逻辑SD索引和坏SD映射来使用表1(上文)将G0识别为MC GID。使用MC GID以及逻辑SD索引和表1来将V0识别为安全存储器段ID。

使用安全存储器段ID(V0)以及坏SD映射和表2来将G1识别为多播地址群。如表2中所示,G1(或者更具体地,G1内的物理地址)的使用将导致数据的拷贝被存储在与SD 1中的安全存储器段ID V0相关联的安全存储器段中,并且数据的另一拷贝被存储在与SD 2中的安全存储器段ID V0相关联的安全存储器段中(参见图4A)。

转到图4B,考虑其中存储装置包括多个切片的情形,其中切片1包括SD1、SD 2和SD 3(参见图4B)。此外,切片1中的上述SD的逻辑SD索引分别地是1、2和3。

在本示例中,假设客户端向存储装置发送写请求。响应于该请求,存储装置选择SD 1作为目标SD。基于此信息,用于SD 1的逻辑SD索引是1。存储装置随后获得用于切片1的以下坏SD映射:<101>。使用逻辑SD索引和坏SD映射来使用表1(上文)将G2识别为MC GID。使用MC GID以及逻辑SD索引和表1来将V3识别为安全存储器段ID。

使用安全存储器段ID(V3)以及坏SD映射和表2来将G2识别为多播地址群。如表2中所示,G2(或者更具体地,G2内的物理地址)的使用将导致数据的拷贝被存储在与SD 1中的安全存储器段ID V3相关联的安全存储器段中,并且数据的另一拷贝被存储在与SD 3中的安全存储器段ID V3相关联的安全存储器段中(参见图4B)。

可将用以执行本技术的实施方式的计算机可读程序代码形式的软件指令整体地或部分地、临时地或永久地存储在非临时计算机可读介质上,诸如CD、DVD、存储设备、磁盘、磁带、闪存、物理存储器或任何其它计算机可读存储介质。更具体地,该软件指令可对应于计算机可读程序代码,其在被处理器执行时被配置成执行本技术的实施方式。

虽然已相对于有限数目的实施方式描述了本技术,但受益于本公开的本领域的技术人员将认识到可以设计不脱离如在本文中公开的本技术的范围的其它实施方式。因此,本技术的范围将仅仅受到所附权利要求的限制。

当前第1页1 2 3 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1