带有自适应纠删码生成的存储系统技术领域
本公开内容涉及数据存储领域,并且具体而言,涉及与用于横向扩展存储系统的纠删码的自适应生成相关联的设备、方法和存储介质。
背景技术
本文中提供的背景描述是为了概括介绍公开内容的上下文。除非本文中另有指示,否则,此部分中描述的材料不是本申请的权利要求的现有技术,并且未由于包含在本部分中而被承认是现有技术。
随着在集成电路、计算、连网和其它有关技术方面的发展,构建有可扩展数量的计算机存储节点的存储系统(也称为横向扩展存储系统)已变得越来越普遍。为实现数据可靠性,如从数据错误中恢复,经常采用将k个符号变换成n个符号的纠删码以允许从n个符号的子集恢复k个符号,n大于k。随着普遍性增大,有效生成纠删码的能力已变成极大关注的主题。
附图说明
结合附图,通过下面的详细描述,将容易理解实施例。为有助于此描述,类似的标号指示类型的结构元素。在附图的图形中,实施例以示例方式而不是限制方式示出。
图1示出根据各种实施例的与本公开内容的教导结合的存储系统的组件视图。
图2示出根据各种实施例的与本公开内容的教导结合的用于存储数据的方法。
图3-4示出根据各种实施例的用于为要存储的数据生成纠删码的方法。
图5示出根据各种实施例的适合用于实践公开内容的示例计算系统。
图6示出根据各种实施例的带有配置成允许设备实践本公开内容的指令的示例存储介质。
具体实施方式
本文公开了与生成用于要在存储系统中存储的数据的纠删码(erasurecode)相关联的设备、方法和存储介质。在实施例中,方法可包括由存储系统至少部分基于存储系统的硬件配置,启动纠删码生成模块的多个实例。另外,方法可还包括由存储系统至少部分基于存储系统的当前系统负载,设置纠删码生成模块的多个实例的操作参数。此外,方法可包括由存储系统操作纠删码生成模块的多个实例以根据设置的操作参数,生成用于要在存储系统中存储的数据的纠删码。
在实施例中,配置成实践上述方法及其变型的存储系统可包括纠删码生成模块和分派引擎。在实施例中,设备可还包括系统监视器和/或执行监视器。在实施例中,纠删码生成模块的实例可协作以将第一数据块复制到存储系统的第一、第二和第三计算机存储节点,将第二数据块复制到存储系统的第一、第四和第五计算机存储节点,以及将第三数据块复制到存储系统的第一、第三和第四计算机存储节点。纠删码生成模块的实例随后可协作以在第一计算机存储节点上生成第一、第二和第三数据块的第一和第二奇偶性。
下面将参照形成本文一部分的附图,进一步更详细描述这些和其它方面。图形中类似的标号标示所有图形中的类似部分,并且其中作为说明,示出了可实践的实施例。要理解的是,在不脱离本公开内容的范围的情况下可利用其它实施例,并且可进行结构或逻辑更改。因此,下面的详细描述不可从限制的意义理解,并且实施例的范围只由所附权利要求及其等同物定义。
各种操作可又以对理解所要求保护的主题最有帮助的方式描述为多个离散动作或操作。然而,描述的顺序不应理解为暗示这些操作一定与顺序相关。具体而言,可不以介绍的顺序执行这些操作。所述操作可以与所述实施例不同的顺序执行。可执行各种另外的操作,和/或可在另外的实施例中忽略所述操作。
为便于理解本公开内容,短语“A和/或B”表示(A)、(B)或(A和B)。为便于理解本公开内容,短语“A、B和/或C”表示(A)、(B)、(C)、(A和B)、(A和C)、(B和C)或(A、B和C)。
描述可使用短语“在一实施例中”或“在实施例中”,这均可指一个或多个相同或不同的实施例。此外,如相对于本公开内容的实施例使用的术语“包括”、“具有”及诸如此类同义。
在包括权利要求的下文中使用时,术语“模块”可指以下所述、以下所述的一部分或包括以下所述:专用集成电路(“ASIC”)、电子电路、执行一个或多个软件或固件程序的处理器(共享、专用或群组)和/或存储器(共享、专用或群组)、组合逻辑电路和/或提供所需功能性的其它适合组件。术语“封闭式题注"要包括传统封闭式题注和/或子标题。
现在参照图1,图中示出根据各种实施例的与本公开内容的教导结合的存储系统的组件视图。如图所示,在实施例中,存储系统100可包括连网在一起的多个计算机存储节点102。每个计算机存储节点102可具有一个或更多个微处理器104、一个或更多个高速缓存106、一个或更多个存储器单元108及一个或更多个存储单元110。在实施例中,一个或更多个微处理器104可包括多个处理器核。此外,存储系统100可包括配置成生成用于在计算机存储节点102的存储区中存储的数据的纠删码的纠删码生成模块120。另外,存储系统100可包括选择性由系统负载监视器114、执行监视器116和/或性能数据库118辅助的分派引擎112,以允许纠删码生成模块120的可变数量的实例自适应启动和/或参数化,以生成用于在存储单元110中存储的数据的纠删码。在实施例中,纠删码生成模块120的每个实例可在其自己的线程中执行。在实施例中,纠删码生成模块120的可变数量的实例可至少部分基于基础硬件配置和/或存储系统120的当前系统负载,自适应启动和参数化(例如,不同缓冲区大小、不同纠删码大小)。这些是存储系统100的其它方面,将在下面更详细描述。
在实施例中,如更早所述,分派引擎112可配置成至少部分基于为各种硬件配置预确定和存储的优化信息,自适应启动136纠删码生成模块120的多个实例/线程,以生成用于在存储单元110中存储的数据的纠删码。在实施例中,纠删码生成模块120可配置成生成用于要存储的数据的纠删码,将要存储的k个数据符号变换成n个数据符号,以允许从n个数据符号的子集恢复k个数据符号,n大于k。下面将参照图3-4进一步描述纠删码生成模块120的示例实施例。
在实施例中,硬件配置信息可包括但不限于处理器类型/速度、存储器容量、输入/输出(I/O)信道能力、数据块大小等等。在实施例中,分派引擎112可配置成查询存储系统100的各种组件以收集存储系统100的硬件配置数据132。在其它实施例中,存储系统100的硬件配置数据132可预收集和存储在诸如存储系统100的只读存储器(ROM)等预留存储区中。
在实施例中,用于各种硬件配置的优化信息可由基准引擎140预确定,并且存储在性能数据库118中。基准引擎140可配置成预执行用于各种硬件配置的基准测试。
在实施例中,系统负载监视器114可配置成监视存储系统100的当前系统负载,并且为分派引擎112提供当前系统负载数据134,以允许分派引擎112自适应参数化纠删码生成模块120的实例/线程。系统负载数据134的示例可包括但不限于处理器使用、存储器使用、输入/输出(I/O)信道使用、高速缓存未命中、中断量等等。纠删码生成模块120的示例参数可包括但不限于不同缓冲区大小、不同纠删码大小,如不同(k,n-k)组合。
在实施例中,执行监视器116可配置成监视纠删码生成模块120的实例/线程的执行,并且为分派引擎112提供关于分派引擎112采用的当前和各种优化启动和参数化的反馈。在实施例中,执行监视器116可在性能数据库118中记录其观察138,并且经性能数据库118提供反馈到分派引擎112。观察的示例可包括但不限于纠删码生成速率、在某个时间期内忙、暂停或闲置线程的数量等等。
在实施例中,微处理器104、高速缓存106、存储器108和存储单元110可以是本领域熟知的范围广泛的这些元件的任何一个元件。分派引擎112、系统负载监视器114、执行监视器116、纠删码生成模块120及基准引擎140可通过配置成将高级编程指令编译成微处理器104的指令集体系的指令的编译器,在任何高级编程指令中实现。在实施例中,一个或更多个分派引擎112、系统负载监视器114、执行监视器116和/或基准引擎140可部分或完全在硬件中实现。
现在参照图2,图中示出根据各种实施例的与本公开内容的教导结合的用于存储数据的方法。如图所示,用于存储数据方法200可从框202开始。在框202,在上电或重置时,可例如由更早描述的分派引擎112获得存储系统的系统硬件配置信息。从框202,方法200可继续到框204。在框204,可例如由更早所述分派引擎112至少部分基于配置的获得的系统硬件,启动纠删码生成模块120的可变数量的实例/线程,以生成用于要在存储系统中存储的数据的纠删码。
从框204,方法200可继续到框206。在框206,可例如由更早所述分派引擎112获得存储系统的系统负载信息。从框206,方法200可继续到框208。在框208,可例如由更早所述分派引擎112至少部分基于获得的当前系统负载信息,设置纠删码生成模块120的各种实例/线程的操作参数。
从框208,方法200可继续到框210。在框210,存储系统的系统负载信息可例如由更早所述系统负载监视器114获得。从框208,方法200可继续到框210。在框210,可例如由更早所述分派引擎112使纠删码生成模块120的各种实例/线程激活/被赋予执行控制。
从框210,方法200可继续到框212。在框212,可例如由执行监视器116观察纠删码生成模块120的各种实例/线程的执行。
从框212,方法200可返回到框208,其中,可至少部分基于观察的执行性能,修改纠删码生成模块的各种实例/线程的操作参数。从框208,如更早所述,方法200可继续到框210和此外的框。
方法200可继续,直至最后无其它数据要存储在存储系统中,以及存储系统闲置或关闭时,方法200可停止。
现在参照图3-4,图中示出根据各种实施例的用于为要存储的数据生成纠删码的示例方法。如图所示,用于生成纠删码的示例方法300可包括在级302-310中执行的操作。例如可由更早所述纠删码生成模块120的实例/线程一起执行该操作。为便于理解,将在也称为(3,2)上下文的k=3和n=5上下文中描述示例方法300。此外,在生成/计算(3,2)纠删码前,将通过形成3个副本来描述示例方法300。然而,示例方法300不受此限制,并且可通过例如(5,3)、(10,4)、(10,6)等不同(k,n-k)对和/或生成/计算(k,n-k)纠删码前的更多或更少副本实践。
在级302,对于所示示例,可将数据块0存储到计算机存储(CS)节点0,并且复制到来自CS1-CS4的两个随机选择的节点中。对于图3,假设CS1和CS2是随机选择的。在级304,对于所示示例,可将数据块1存储到CS0(与数据块0相同),并且复制到CS1-CS4的以前未选择的CS中。为便于说明,以前未选择的CS是CS3和CS4。在级306,对于所示示例,可将数据块2存储到CS0(与数据块1和2相同)中,并且复制两个节点的新组合。为便于说明,将数据块2复制到节点CS2和CS3中(给定更早的复制是到节点CS1-CS2和CS3-CS4)。在备选实施例中,可转而将数据块2复制到节点CS1-CS3、CS1-CS4或CS2-CS4。
在级308,对于所示示例,通过用于诸如RAID6(RAID=独立盘冗余阵列)等双奇偶性分布式存储方案的两个不同函数,CS0可生成奇偶性0和奇偶性1。之后,重复可降低到1。例如,在级310,可将奇偶性1复制到CS1,并且之后可从CS1丢弃数据块0。此外,之后可从CS20-CS4丢弃额外的数据块。对于示例说明,可分别从节点CS2和CS3丢弃数据块2和1。
因此,方法300不要求网络带宽以生成奇偶性。此外,与诸如通常称为卡内基梅隆大学方案(CarnegieMellonUniversityapproach)的方案等现有技术方案相比,降低了存储I/O操作的数量。另外,方法300不限于像RAID6等双奇偶性分布式存储方案,它将通过使用更多或更少奇遇性的其它分布式存储方案扩展和实践。
现在参照图5,其中示出了根据各种实施例的适合用于图1的布置的示例计算机。如图所示,计算机500可包括一个或更多个处理器502和系统存储器504。在实施例中,处理器502至少之一包括在晶片上的多个或处理器核。另外,计算机500可包括海量存储装置506(如软盘、硬盘驱动器、压缩盘只读存储器(CD-ROM)等等)、输入/输出装置508(如显示器、键盘、光标控制等等)及通信接口510(如网络接口卡、调制解调器等等)。元件可经系统总线512相互耦合,系统总线512可表示一个或更多个总线。就多个总线而言,它们可通过一个或更多个总线桥(未示出)桥接。
这些元件每个可执行技术领域熟知的其常规功能。具体而言,海量存储装置506可用于存储更早所述的性能数据库118。此外,系统存储器504和海量存储器装置506可用于存储实现与更早所述分派引擎112、系统负载监视器114、执行监视器116、纠删码生成模块120和/或基准引擎140相关联的操作的编程指令的工作副本和永久性副本。各种元件可由处理器502支持的汇编程序指令或诸如C等能够编译为此类指令的高级语言实现。
编程指令的永久性副本可在工厂中或者在现场例如通过诸如压缩盘(CD)等分布介质(未示出),或者通过通信接口510(从分布服务器(未示出))置入海量存储装置506中。也就是说,具有代理程序的实现的一个或更多个分布介质可用于分布代理和对各种计算装置编程。
视示例计算机500的预期使用而定,例如,视示例计算机500是像机顶盒或台式计算机等的固定计算装置还是像智能电话、平板或超级本或膝上型计算机等的移动计算装置,这些元件510-512的数量、能力和/或容量可不同。这些元件510-512的构成在其他情况下已知,并且相应地将不进一步描述。
图6示出根据各种实施例的具有指令的示例非暂时性计算机可读存储介质,该指令配置成实践与分派引擎112、系统监视器114、执行监视器116、纠删码生成模块120和/或基准引擎140相关联的所有操作或这些操作中选择的操作。如图所示,非暂时性计算机可读存储介质602可包括多个编程指令604。编程指令604可配置成响应编程指令的执行,允许例如计算机400的装置执行例如图2-4的方法200和300的各种操作,例如但不限于与分派引擎112、系统监视器114、执行监视器116和/或纠删码生成模块120关联执行的操作。在备选实施例中,编程指令604可反之布置在多个非暂时性计算机可读存储介质602上。
再参照图5,对于一个实施例,处理器502至少之一可与配置成实践图2的方法200和300的方面的计算逻辑522封装在一起(代替存储在存储器504和/或海量存储器506中)。对于一个实施例,处理器502至少之一可与配置成实践图2-4的方法的方面的计算逻辑522封装在一起以形成系统级封装(SiP)。对于一个实施例,处理器502至少之一可与配置成实践图2-4的方法200和300的方面的计算逻辑522集成在相同的晶片上。对于一个实施例,处理器502至少之一可与配置成实践图2-4的方法200和300的方面的计算逻辑522封装在一起以形成系统级芯片(SoC)。对于至少一个实施例,可在例如但不限于横向扩展存储系统的计算机存储节点中利用SoC。
因此,所述示例实施例包括但不限于:
示例1,它可以是用于存储数据的设备。设备可包括多个计算机存储节点、纠删码生成模块和分派引擎。每个计算机存储节点可包括至少一个处理器和至少一个存储单元。分派引擎可启动要由计算机存储节点的一个或更多个处理器操作的纠删码生成模块的一个或更多个实例,以便生成用于要在计算机存储节点的存储单元中存储的数据的纠删码,其中,启动的纠删码生成模块的实例的数量至少部分基于计算机存储节点的硬件配置;以及设置纠删码生成模块的多个实例的操作参数,其中,操作参数至少部分基于计算机存储节点的当前系统负载设置。
示例2可以是示例1,其中处理器至少之一包括多个处理器核。
示例3可以是示例1或2,其中,分派引擎要进一步检索计算机存储节点的硬件配置。
示例4可以是示例1-3的任何一个示例,其中,分派引擎将设置要生成的纠删码的纠删码参数。
示例5可以是示例1-4的任何一个示例,其中,分派单元要进一步接收有关当前系统负载的信息。
示例6可以是示例5,还包括系统负载监视器以监视系统负载,并且提供有关当前系统负载的信息到分派引擎。
示例7可以是示例1-6的任何一个示例,其中,纠删码模块的一个或更多个实例要从至少第一、第二和第三数据块生成纠删码的至少第一和第二奇偶性,并且相应地在计算机存储节点的第一、第二、第三、第四和第五节点中存储第一奇偶性、第二奇偶性、第一数据块、第三数据块和第二数据块。
示例8可以是示例7,其中,纠删码模块的一个或更多个实例要通过第一和第二函数相应应用到第一、第二和第三数据块而在第一计算机存储节点上生成第一和第二奇遇性,第一和第二函数是不同函数,并且在生成第二奇偶性时,将第二奇遇性从第一计算机存储节点传送到第二计算机存储节点。
示例9可以是示例8,其中,纠删码模块的一个或更多个实例还要进一步将第一、第二和第三数据块传送到第一计算机存储节点以便生成第一和第二奇偶性,并且在生成第一奇偶性时,从第一计算机存储节点删除第一、第二和第三数据块。
示例10可以是示例8,其中,纠删码生成模块的一个或更多个实例还要在在第二计算机存储节点接收第二奇偶性前,将第一数据块传送到第二计算机存储节点,并且在接收来自第二计算机存储节点的第二奇偶性时,从第二计算机存储节点删除第一数据块。
示例11可以是示例8,其中,纠删码生成模块的一个或更多个实例还要在在第一和第二计算机存储节点生成和存储第一和第二奇偶性前,将第一和第三数据块传送到第三计算机存储节点,并且在生成和存储第一和第二奇偶性时,从第三计算机存储节点删除第三数据块。
示例12可以是示例8,其中,纠删码生成模块的一个或更多个实例还要在在第一和第二计算机存储节点生成和存储第一和第二奇偶性前,将第二和第三数据块传送到第四计算机存储节点,并且在生成和存储第一和第二奇偶性时,从第四计算机存储节点删除第二数据块。
示例13可以是示例8,其中,纠删码生成模块的一个或更多个实例还要在在第一和第二计算机存储节点生成和存储第一和第二奇偶性前,将第二数据块传送到第五计算机存储节点,并且在生成和存储第一和第二奇偶性时,在第五计算机存储节点保持第二数据块。
示例14可以是权利要求1-13的任一项,其中,分派引擎要至少部分基于当前系统负载的更改,进一步修改启动的纠删码生成模块的实例的数量或其操作参数。
示例15可以是用于存储数据的设备。设备可包括多个计算机存储节点和纠删码生成模块。纠删码生成模块可由计算机存储节点的处理器操作以生成用于要在多个计算机存储节点中存储的数据的纠删码。纠删码模块的一个或更多个实例要复制第一数据块到计算机存储节点的第一、第二和第三节点;复制第二数据块到计算机存储节点的第一、第四和第五节点;复制第三数据块到第一、第三和第四计算机存储节点;以及在第一计算机存储节点上生成第一、第二和第三数据块的第一和第二奇偶性。
示例16可以是示例15,其中,纠删码生成模块的一个或更多个实例要通过相应应用第一和第二函数到第一、第二和第三数据块,生成第一和第二奇偶性,第一和第二函数是不同的函数。
示例17可以是示例15或16,其中,纠删码生成模块的一个或更多个实例还要将第二奇偶性从第一计算机存储节点传送到第二计算机存储节点,并且在传送第二奇偶性到第二计算机存储节点时,从第二计算机存储节点丢弃第一数据块。
示例18可以是示例15-17的任何一个示例,其中,纠删码生成模块的一个或更多个实例还要在传送第二奇偶性到第二计算机存储节点时,从第三计算机存储节点丢弃第三数据块。
示例19可以是示例15-18的任何一个示例,其中,纠删码生成模块的一个或更多个实例还要在传送第二奇偶性到第二计算机存储节点时,从第四计算机存储节点丢弃第二数据块。
示例20可以是用于存储数据的方法。方法可包括由存储系统启动纠删码生成模块的多个实例,其中,启动是至少部分基于存储系统的硬件配置;由存储系统设置纠删码生成模块的多个实例的操作参数,其中,设置是至少部分基于存储系统的当前系统负载;以及由存储系统根据设置的操作参数操作纠删码生成模块的多个实例以生成用于要在存储系统中存储的数据的纠删码。
示例21可以是示例20,其中,存储系统是具有多个计算机存储节点的横向扩展存储系统,其中,计算机存储节点至少之一包括具有多个处理器核的微处理器。
示例21可以是示例20或21,其中,方法还包括由分派引擎检索存储系统的硬件配置。
示例23可以是示例20-22的任何一个示例,其中,设置包括设置纠删码参数。
示例24可以是示例20-23的任何一个示例,其中,方法还包括由分派引擎接收有关当前系统负载的信息。
示例25可以是示例24,其中,接收包括由分派引擎接收来自存储系统的系统负载监视器的有关当前系统负载的信息,其中,方法还包括由系统负载监视器监视当前系统负载。
示例26可以是示例20-25的任何一个示例,其中,存储系统包括具有多个计算机存储节点的横向扩展存储系统;其中,操作包括由存储系统操作纠删码生成模块的多个实例以从至少第一、第二和第三数据块生成纠删码的至少第一和第二奇偶性,并且相应地在计算机存储节点的第一、第二、第三、第四和第五节点中存储第一奇偶性、第二奇偶性、第一数据块、第三数据块和第二数据块。
示例27可以是示例26,其中,生成包括通过第一和第二函数相应应用到第一、第二和第三数据块而在第一计算机存储节点上生成第一和第二奇遇性,第一和第二函数是不同函数,并且其中相应存储包括在生成第二奇偶性时,将第二奇遇性从第一计算机存储节点传送到第二计算机存储节点。
示例28可以是示例27,其中,生成还包括将第一、第二和第三数据块传送到第一计算机存储节点以便生成第一和第二奇偶性,并且其中,存储包括在生成第一奇偶性时,从第一计算机存储节点删除第一、第二和第三数据块。
示例29可以是示例27,其中,生成还包括在在第二计算机存储节点接收第二奇偶性前,将第一数据块传送到第二计算机存储节点,并且存储包括在接收来自第二计算机存储节点的第二奇偶性时,从第二计算机存储节点删除第一数据块。
示例30可以是示例27,其中,存储还包括在在第一和第二计算机存储节点生成和存储第一和第二奇偶性前,将第一和第三数据块传送到第三计算机存储节点,并且在生成和存储第一和第二奇偶性时,从第三计算机存储节点删除第三数据块。
示例31可以是示例27,其中,存储还包括在在第一和第二计算机存储节点生成和存储第一和第二奇偶性前,将第二和第三数据块传送到第四计算机存储节点,并且在生成和存储第一和第二奇偶性时,从第四计算机存储节点删除第二数据块。
示例32可以是示例27,其中,存储还包括在在第一和第二计算机存储节点生成和存储第一和第二奇偶性前,将第二数据块传送到第五计算机存储节点,并且在生成和存储第一和第二奇偶性时,在第五计算机存储节点保持第二数据块。
示例33可以是示例27,还包括由存储系统监视操作;并且至少部分基于监视的结果,修改纠删码生成模块的多个实例或其操作参数。
示例34可以是用于存储数据的方法。方法可包括由存储系统复制第一数据块到存储系统的第一、第二和第三计算机存储节点;由存储系统复制第二数据块到存储系统的第一、第四和第五计算机存储节点;由存储系统复制第三数据块到存储系统的第一、第三和第四计算机存储节点;以及由存储系统在第一计算机存储节点上生成第一、第二和第三数据块的第一和第二奇偶性。
示例35可以是示例34,其中,生成包括通过相应应用第一和第二函数到第一、第二和第三数据块,生成第一和第二奇偶性,第一和第二函数是不同的函数。
示例36可以是示例34或35,还包括将第二奇偶性从第一计算机存储节点传送到第二计算机存储节点,并且在传送第二奇偶性到第二计算机存储节点时,从第二计算机存储节点丢弃第一数据块。
示例37可以是示例34-36的任何一个示例,还包括在传送第二奇偶性到第二计算机存储节点时,从第三计算机存储节点丢弃第三数据块。
示例38可以是示例34-37的任何一个示例,还包括在传送第二奇偶性到第二计算机存储节点时,从第四计算机存储节点丢弃第二数据块。
示例39可以是用于存储数据的设备。设备可包括多个计算机存储节点,其中,每个计算机存储节点包括至少一个处理器和至少一个存储单元;设备可还包括纠删码生成模块;以及用于分派纠删码生成模块的多个实例以便由处理器操作以生成用于要在存储单元中存储的数据的纠删码的部件,其中,分派的实例的数量至少部分基于多个计算机存储节点的硬件配置,其中,分派引擎要至少部分基于多个计算机存储节点的当前系统负载,进一步设置纠删码生成模块的实例的操作参数。
示例40可以是示例39,还包括用于监视当前系统负载以及用于将有关当前系统负载的信息提供到用于分派的部件的部件。
示例41可以是示例39或40,还包括用于监视纠删码生成模块的实例的执行,用于提供反馈到用于分派的部件的部件,其中,用于分派的部件还至少部分基于反馈,适应纠删码生成模块的实例的数量及其操作参数。
示例42可以是示例39-41的任何一个示例,其中,纠删码生成模块要从至少第一、第二和第三数据块生成纠删码的至少第一和第二奇偶性,并且相应地在计算机存储节点的第一、第二、第三、第四和第五节点中存储第一奇偶性、第二奇偶性、第一数据块、第三数据块和第二数据块。
示例43可以是包括多个指令的至少一种计算机可读存储介质,指令配置成响应指令由存储介质的执行,促使存储系统执行如示例20-33的方法的任何一种方法。
示例44可以是包括多个指令的至少一种存储介质,指令配置成响应指令由存储介质的执行,促使存储系统执行如示例34-38的方法的任何一种方法。
虽然为便于描述,某些实施例已在本文中示出和描述,但在不脱离本公开内容的范围的情况下,用于实现相同目的的各种备用和/或等效实施例或实现可替代所示和所述的实施例。本申请旨在涵盖本文中所述的实施例的所有修改或变化。因此,很明显,本文中描述的实施例只受权利要求限制。
在本公开内容叙述“一个”或“第一”元素或其等效物之处,此类公开内容包括一个或更多个此类元素,而不要求也不排除两个或更多个此类元素。此外,除非另有明确说明,否则,用于识别的元素的顺序指示符(例如,第一、第二或第三)用于区分元素,并且未指示或暗示要求或限制数量的此类元素,它们也未指示此类元素的特定位置或顺序。