可扩展存储保护的制作方法

文档序号:6509640阅读:105来源:国知局
可扩展存储保护的制作方法
【专利摘要】本发明涉及可扩展存储保护。可扩展存储系统包括多个节点,每一节点直接连接存储器(DAS),如一个或多个硬盘驱动器和/或固态硬盘驱动器。节点通过节点间的通信网络连接,并可对每一节点的DAS进行全局访问。利用节点内的保护保护DAS使存储在DAS的数据可靠并在其中一个节点出现故障的情况下进行全局访问。DAS是利用节点间保护的进一步保护,使存储在DAS的数据可靠并能在至少有一个节点出现故障时可全局访问。
【专利说明】可扩展存储保护
【技术领域】
[0001]本发明涉及计算机存储系统【技术领域】,尤其涉及一种可扩展存储保护。
【背景技术】
[0002]具有直接连接磁盘的可扩展存储系统需要冗余机制用于数据保护。单个节点内,例如在一台服务器上,如RAID-5,RAID-6,以及其他的RAID级别,或它们的变形等各种技术用于保护直接连接存储(DAS)。在分布式系统中或在大规模存储系统中,如大型JBOD复合体,擦除编码技术被用于通过分布在一个较大的磁盘数的纠错编码提供保护。然而擦除编码,需要运输(即发送和接收)大量数据。在一些实施方案中,数据必须在r单独的磁盘来更新,以从η驱动器故障中处理r。当针对节点故障结合跳回时,上述系统在一定量的冗余和/或在一定量的必须在更新或恢复的节点之间运送的数据往往会变得非常昂贵。

【发明内容】

[0003]本发明的一个实施例涉及一种存储系统,其包括多个彼此通信连接的过程节点。每一过程节点包括与至少一台主机通信的多个磁盘。所述主机被构形用以将数据写入到所述多个磁盘中的一选定的磁盘。一本地冗余计算单元被构形用以利用由主机写入到所述选定的磁盘的数据确定本地冗余数据。所述本地冗余计算单元进一步被构形用以存储所述多个磁盘的至少一个磁盘上的本地冗余数据。一增量(delta)计算单元被构形用以利用由所述主机写入到所述选定的磁盘的数据确定增量(delta)数据。增量(delta)计算单元进一步被构形用以将增量(delta)数据发送到至少一个其它过程节点。一全局冗余计算单元被构形用以从至少一个其它过程节点接收增量(delta)数据。所述全局冗余计算单元进一步被构形用以利用从所述其它过程节点接收到的增量(delta)数据确定全局冗余数据,并将全局冗余数据存储在所述多个磁盘中的至少一个磁盘。
[0004]应理解的是,前面的一般描述和下面的详细描述不是对本公开的限制。被并入说明书中并构成本说明书的一部分的【专利附图】

【附图说明】,阐释了本公开的实施例。
【专利附图】

【附图说明】
[0005]为了本领域技术人员可更好地理解本公开的实施例,参考附图:
图1是一个方框图,展示了本公开的一个实施例的可扩展存储系统;
图2是一个流程图,描述了一个根据本公开的实施例的处理主机数据写入的方法;
图3是一个流程图,描述了一个根据本公开的实施例的增量(delta)数据的处理方法。
【具体实施方式】
[0006]现在根据附图所示对所公开的实施例进行详细说明。
[0007]图1至图3描述用于保护至少一个可扩展存储系统的系统和方法的实施例。可扩展存储系统中的一些挑战包括提供全局访问所有数据的组合,从磁盘故障中的恢复能力,以及一个或多个过程节点的故障处理机制。上述挑战的至少一些通过在节点内的平衡冗余完成,以防止节点内的故障,如硬盘驱动器(HDD)的故障,在节点间的冗余以防止一个或更多的节点故障,如节点内保护的故障。在一些实施例中,高速缓存节点处的以分布式的方式进一步提高了各节点的局部表现,并通过较早确认用于数据保护的写入提高了可扩展存储系统中的系统级性能。
[0008]图1示出了一个存储系统100的实施例,例如,但不限于,一个可扩展的直接连接存储(DAS)系统。系统100包括多个过程节点102(例如服务器)。每一过程节点102包括各自的(即本地)主机104(如一个或多个处理器或CPU),和各自的(即本地)DAS 106,如多个磁盘驱动器106。在各种实施方式中,本地DAS 106通过一个或多个相应的(即本地)1 / O控制器108通信地耦合到本地主机104。作为实质性的整体内容,比如所有的存储106A-106Z对所有过程节点102是全局可见的。DAS 106A-106C的一个特定的过程节点102A被称为各自的“本地存储”的特殊过程节点102A。 DAS 106D-106Z等加工节点102B-102M被称为各自的特殊过程节点102A的“外国存储”。各过程节点102通过一个节点间的通信网络116相互通信,例如,但不限于,串行连接小型计算机系统接口(SAS)的开关互连。各过程节点102可以利用节点间的通信网络116获得106A-106Z的全部存储。然而,在一些实施方案中,访问一个特定的过程节点102A的本地存储106A-106C比访问各自106D-106Z相关外国存储具有更快和/或更高的带宽。在一些实施例中,节点间的通信网络116包括,但不限于,至少一个SAS光纤网络、以太网络、无线宽带网络、外围组件互连快递(PCIe)的互连网络、局域网(LAN)、广域网(WAN)、专有网络,或上述的任意组合。
[0009]在一些实施例中,系统100还包括锁定和/或相干性的机制,以促进共享存储器106。例如,采用基于目录的高速缓存机制能够跟踪所有权和/或数据的修改。在一些实施例中,每一过程节点102包括,例如作为磁盘高速缓存,以存储频繁访问的数据。根据各种实施例,一些经常访问的数据是本地的,过程节点和/或的一些经常访问的数据是外国的。在一些实施例中,磁盘高速缓存包括,但并不限于,固态硬盘驱动器(SSD)。
[0010]多节点存储系统100中有关的一些失败场景,包括:
?一个或多个输入/输出(I / O`)设备中的故障,如过程节点102的硬盘驱动器HDDs或 SSDs 106;
? 一个过程节点102内的一个或多个I/O设备106的一个途径故障;
?过程节点102的部分或全部故障,例如,主机104或节点内的通信基础设施;
?更高级别的通信基础设施的故障,如节点间的通信网络116,耦合过程节点102。
[0011]这些失败被归类为节点内或节点间的故障。一个节点内的故障是过程节点102的至少一部分的无法使用,但并不妨碍过程节点102的继续运行,包括本地过程节点102数据的全局访问。节点间的故障是本地的过程节点102的至少一部分的数据是无法使用的。在受影响的过程节点102的一些节点内的故障是可以解决的,而不是全局可见的其它过程节点102 (除了可能的性能影响)。
[0012]故障也表现为硬(如固态,可重复)或软(例如一次性的,短暂的,在一个电源周期后消失)。许多节点故障是软的,如软件崩溃导致的短暂或持续时间短。磁盘故障,也无论是软的(如短暂的,无法纠正的错误,写入新的数据是可恢复的)或硬(例如,由于头部撞击的磁盘故障)。因此硬与软故障分类取决于故障持续时间,相关失败概率的计算,或根据各类同时期被认为的错误多少。在一些实施方案中,如果大部分过程节点故障是软故障,同时具有多个过程节点故障的概率小于如果过程节点故障是硬故障时,同时具有多个过程节点故障的概率。
[0013]一个系统级的故障是多节点的存储系统100的故障,如任何存储任何过程节点102上的主机写入的数据(B卩,非冗余)或不可恢复的损失超过各过程节点102的指定数量。在一些实施例中,系统100被至少部分地设计,以降低系统级故障的概率至小于指定的值。
[0014]简单的擦除编码解决方案往往涉及高量的冗余和/或数据航运。例如,考虑m个节点102,每组包括η个磁盘106 (如HDD或SSD),从而总共有m * η个磁盘106。为了防止任何3个磁盘106的故障,磁盘106中的至少三个必须包括冗余数据。任何写如任何其他的(m * η- 3)个数据(即非冗余)磁盘106需要3个冗余磁盘106的更新。当一台主机104,诸如处理器,执行一个小的,随机写入(如4ΚΒ或8ΚΒ写入)到一个数据磁盘106,总共四个类似大小的写操作必须被完成,三四个写包含计算(即在冗余数据基础上更新的旧数据之前,由主机写入新的数据)。此外,如果一个或多个节点故障被擦除编码处理,优选位于不同节点102上的三个冗余磁盘106。因此,主机写要求:从一个选定的节点102Α,包括所选定的数据的磁盘106Α的数据磁盘读取旧数据;由主机104提供的新的数据替换旧数据并写入新的数据到选定的数据盘106Α;计算一个函数,如一个差分,旧数据和新数据之间的运输差分的三个冗余磁盘106,其可以位于不同的节点102 ;读取每一节点102的冗余数据的一个旧版本,其中包括一个冗余磁盘106;利用差分确定更新的冗余数据,写回一个新版本的冗余数据。运输差分到多个消耗延迟和功耗的节点102。在一些实施例中,一个进一步的延迟的原因是不能响应主机写,直到主机的写入数据是“安全”的,而直到冗余数据写入完成之前主机的写入数据是不是安全的。
[0015]一个对节点102内的故障效果很好的单一保护解决方案,如RAID,在跨越多个节点102时可能是不够的。一个总体的解决方案,如在上述的例子中所示的擦除编码,在节点之间的102所附带的数据量过于庞大。此外,各种故障情况下有不同的似然性。通常情况下,减少系统故障的概率比分别减少磁盘故障或节点故障的概率更重要。在一些实施例中,系统100被构形用以实现一个或多个:节点之间运送较少的数据;更高的性能;更低的成本(例如,对于一个给定的系统级故障概率降低所需的冗余量);较低的功率;较低的延迟;和其他电源、成本和性能指标。例如,单个硬盘驱动器106的故障可以是非常有可能的。因此,在一些实施例中,通过提供更多的冗余,以防止硬盘驱动器故障,节点故障少,进而降低了系统故障的概率,而又不过度牺牲性能或需要很高的数据的航运或冗余成本来降低系统故障的概率。
[0016]在一个实施例中(参见图1),系统100包括一第一类型的保护(B卩“内”,“本地”或“节点内的”保护),以保护存储在I / O设备106的节点102内的数据,以及第二类型的保护(即“外”,“全局”或“节点间的”保护),以防止故障的一个或多个节点102。上述可扩展存储保护为保护和恢复,减少了必须在节点102之间运送的计划数据量。此外,增量(delta)缓存机制可减少主机安全地写存储所需的时间。
[0017]在一些实施例中,系统100包括单独机构110,114,以防止本地(即节点内)与全局(即节点间)的故障。在进一步的实施例中,分别选择本地保护机制110和全局保护机制114,以减少各自的故障概率,从而降低指定级整体的系统故障概率。在各种实施方式中,本地保护机制Iio和全局保护机制114被分别选定,以减少各个节点102之间用于冗余数据
存储和故障恢复运输的数据量。
[0018]在一些实施方案中,具有可扩展存储保护系统100提供成本优势。例如,考虑前面的简单描述,擦除编码m个节点102η个磁盘106的要求,以防止3个磁盘故障,并假设冗余磁盘102都是不同节点102上的。简单的说,擦除编码方法是航运三次的过程中将尽可能多的数据写入到其他节点102冗余。多层保护系统100所提供的可扩展存储保护,允许灵活的平衡。例如,在一些实施例中,系统100根据各种故障概率(例如,硬故障与软故障)或费用的因素(例如牺牲航运数据)进行设计。
[0019]在一个示例性实施例的可变存储保护系统100,而不是简单的,在η个磁盘106中的两个包括冗余的本地数据的每一节点102中,和一个或更多的包括全局范围内的冗余数据的节点102 (即冗余节点),如上所述的擦除编码的方法。在一个有一个冗余节点102实施例中,当一台主机104执行一个小的,随机写入(例如,4ΚΒ或8ΚΒ写的)到数据磁盘106中的一个,4个类似大小的写入必须包括在总体内,但类似大小的三个写入本地(即主机写入数据和两个本地冗余数据写入)。只有一个类似大小的写操作必须被运到冗余节点102。与简单擦除编码的例子相比,运送的数据量减少了(尽可能多的,例如2/3)。在上述的例子中,具有可扩展存储保护系统100能够处理至少三个磁盘故障。在一些实施例中,系统100能够处理每一节点102的两个磁盘故障。
[0020]在上述的例子中,三个磁盘在一个节点102出现的故障基本上相当于或类似节点102的故障,因为两个冗余磁盘106的每一节点102只能够纠正η个磁盘106中两个的节点102处的故障。在一些实施例中,节点内的保护故障的概率包括在节点102上故障的概率,并至少部分地被利用,以确定所需的级的节点间的保护。简单的说,擦除编码的方法能够处理多达三个节点的故障,但这样做的结果是,有较高比例的节点102被用来处理全局的冗余数据。如果同磁盘故障概率相比,节点发生故障的概率是比较小的,在一个I / O航运和冗余中,可扩展存储保护替代以较低的成本提供同等或更好的保护。
[0021]同简单的、擦除编码保护系统相比,上述实施例中描述了具有可扩展存储保护系统100的至少一些优点。然而,本实施例不打算以任何方式限制本公开。参照多种实施例,系统100包括执行一般本文所述的可扩展存储保护方案所选定的参数和配置的任何组合。在一个实施例中,系统100包括m个节点102,每一个具有η个磁盘106。系统100被构形用以能够经受K节点故障(例如k = 2时)。每一 g磁盘组包括至少个冗余磁盘106来充分处理磁盘级故障(例如H = 3 = 10个g磁盘106是冗余的)。
[0022]在一些实施例中,g= η的适当的比例为h。因此,系统100总共包括m * η个磁盘106和h *m个磁盘106来存储冗余数据。为了幸存的k个m节点故障,一个码字的冗余磁盘106 (例如一个保护组)在至少k个不同的节点102上。没有任何一个m节点102是比h*m/ k能够有更多的相同的码字所保护的冗余磁盘106。否则,K节点故障可能无法存活。因此,在一个实施例中,η大于h *m/ k或冗余的数据必须存在于k个以上的节点102中。例如,如果η = 10,m = 8时,h = 3时,k = 2时,则24个冗余磁盘106,超出80是必需的。不过,也有每一节点102只有10个磁盘106的情况,所以冗余磁盘必须在至少三个节点之间传播,即使k只有2。
[0023]擦除编码有可能满足可靠性的要求,然而,它有一些包括以下的赤字。如果h比k大,g纠删码的h计算是庞大的,那么任何一个节点102必须处理多个擦除代码更新(导致计算工作量不平衡),或所需的I / O运送为h的比例项而非k。如果η是比h * m / k小的,那么I / O运送大于与k的比例。即使单个磁盘故障的恢复通常需要I / O航运。此夕卜,系统级性能一般较差,因为至少有一个盘106故障是常见的,I / O的运送往往需要进行恢复。
[0024]具有可扩展存储保护系统100包括一个节点内的使用本地冗余的保护机制110,以防止内部节点发生故障,如磁盘故障,使用全局冗余的保护机制114以防止跨节点间的节点故障,如节点故障。根据多个实施方案,系统100提供了多种优势,包括在一个或多个I / O运送的基础上选定的一些存活节点故障和正交处理磁盘故障,硬盘故障可收回本地没有的I /O发运到指定的可收回的节点内保护可靠性级;更短、更简单的编码类型是用来实现一个系统故障概率的指定级别,从而提供更高效的硬件;其他性能、效率和/或可扩展性的优点。
[0025]该节点内的保护机构110包括一个或多个编码类型,如一个或多个RAID-1,RAID-2, RAID-3, RAID-4, RAID-5, RAID-6,任何其它的RAID级别;擦除代码,如李德所罗门(Reed-Solomon)码、喷泉码、速龙(Raptor)码、率少纠删码、或在线代码,以及上述任何组合。节点间的保护机构114包括一个或多个编码类型,如一个或多个RAID-1,RAID-2,RAID-3, RAID-4, RAID-5, RAID-6,任何其它的RAID级别;擦除代码,例如一个李德所罗门(Reed-Solomon)码、喷泉码、速龙(Raptor)码、或在线代码,以及上述的任意组合。
[0026]受节点内的保护机构110或节点间的保护机构114保护的一个实例的多个磁盘106上存储的数据被称为一个码字。例如,五个磁盘上存储的数据,其中之一是冗余的,像在RAID-5上,表示一个码字的每一个分别设置的数据的可读和可校正。RAID-5在一个字节水平上是可操作的,而许多磁盘只能读取512B扇区的数据,因此在这种情况下,每一个码字将是512B扇区的一个数,五个磁盘的每一个扇区。
[0027]在一些实施例中,节点内的保护机构110和节点间的保护机制114都配置为相同的编码类型。例如,在各个实施例中,两个节点内的保护机构110和节点间的保护机构114使用两个擦除纠错码,例如在RAID-6 ;或两者都可以使用一个擦除纠错码,如在RAID-5。在其它实施例中,节点内的保护机构110和节点间的保护机构114使用不同的编码类型。例如,在某些使用方案中,节点内的保护机构110使用了两个消失校正码而节点间的保护机构114使用一个擦除纠错码,例如在RAID-5。
[0028]节点内的保护机构110和节点间的保护机制114是根据各自的编码类型计算的。例如,一个擦除校正的RAID-5编码类型需要XOR计算,而一个RAID-6编码类型,要求根据两个擦除纠错码进行计算,如Reed-Solomon码。
[0029]在系统100的所述多个过程节点102中的每一个包括至少一台主机104,诸如处理器,与多个磁盘106的每一节点102通信。在一些实施例中,主机104包括,但不限于,至少一种单核或多核的CPU。在一些实施例中,一个I / O控制器108被构形用以与主机104耦合的磁盘106。每一节点102还包括本地存储器,如高速缓冲存储器和/或DRAM存储器。每一节点102还包括一个相应的组中的一个或多个磁盘106,如硬盘驱动器和/或固态磁盘。每一节点102还进一步包括一个节点间的通信机制通过节点间的通信网络116通信地耦合节点,如网络接口卡或本领域公知的网络处理系统中存在的任何其他组件。[0030]在一些实施例中,主机104包括一个或多个多芯x86架构CPU芯片。在一些实施例中,I / O控制器108包括一磁碟阵列控制晶片(ROC)控制器,并且主机104通过PCIe互连被耦合到I / O控制器108。在一些实施例中,一个或多个磁盘驱动器106包括一个或多个SAS和/或SATA硬盘驱动器。在一些实施例中,一个或多个磁盘驱动器106包括一个或多个固态磁盘驱动器。在一些实施例中,节点间的通信机制集成到I / O控制器108。例如,一个ROC通过SAS构造提供了连接到本地磁盘106的SAS和/或SATA,其他过程节点102的磁盘106。
[0031]每一过程节点102还包括一个相应的节点内的被构形用以确定用于保护存储在节点102的磁盘106冗余数据的冗余计算单元110。每一过程节点102还包括一个相应的被构形用以用来确定在本地冗余节点内的计算单元110和/或在响应于一个写在发送到其他节点102的增量(delta)数据的节点102上的磁盘106中存储的数据的增量(delta)冗余计算单元112。每一过程节点102还包括一个被构形用以确定在其他节点102的磁盘106的节点间的保护的数据的冗余数据存储的冗余计算单元114。
[0032]在一些实施例中,一个或更多的冗余计算单元110,112,和114组合成一单个机制,和/或共享一个或多个组件。例如,冗余计算单元110,112,和114,根据各种实施例,单独或组合的硬件,软件和/或固件模块,如从至少一个处理器载体介质中执行的一个或多个电子电路或程序指令。在一些实施例中,控制器108包括一个或多个冗余计算单元110,112,114和/或被构形用以执行一个或多个功能的冗余计算单元110,112,和114。
[0033]在一些实施例中,第一个节点内的保护机制(例如,RAID-5)保护第一过程节点102A的磁盘106的第一子集,与所述第一内节点保护机制(例如,RAID-6)不同,第二个节点内保护机制保护第一个过程节点102A的磁盘106的第二子集。在进一步的实施例中,所述磁盘106的第一子集与磁盘106的第二子集为不同的类型。例如,磁盘106的第一子集可以包括一个或多个硬盘驱动器,而磁盘106的第二子集可以包括一个或多个固态盘。在一些实施例中,第一节点间的保护机制为磁盘106提供了对磁盘106的第一子集的节点间保护,第二个节点间的保护机制(与第一个节点间的保护机制不同)为磁盘106提供了对磁盘106的第二子集的节点间保护。
[0034]在一些实施例和/或使用场景中,过程节点102的两个或多个磁盘106中的一个由同一码字的节点间的保护机制114保护。在其它实施例和/或使用场景中,任何过程节点102的不超过一个磁盘106是在同一码字的节点间的保护机构114中的。
[0035]在一些实施例中,由第一过程节点102A的主机104A写入到第一个过程节点104A的一个磁盘106的数据造成了存储在第一个过程节点102A其他磁盘106的第一本地(即节点内)冗余数据的更新。主机的数据写入也会导致全局(即节点间)的存储在第二过程节点102B的磁盘106中的至少一些的冗余数据的更新。在一些实施例中,全局冗余数据更新会导致存储在第二过程节点102B其他磁盘的第二本地冗余数据的更新。在一些实施例中,主机的数据写入被确认后,全局冗余数据的更新到达一个点的安全性,例如,当主机的数据写入是可收回的,即使第一过程节点102A故障。
[0036]图2和3分别说明了提供可扩展存储保护的处理数据写入的方法200和处理增量(delta)数据的方法300。系统100是方法200和300以及所有所述实施例的步骤或功能或适用于系统100和方法200、300的体现。但是,如文中提到的,通过本领域公知的其他装置,可以执行方法200或300的一个或多个步骤。本文所描述的系统100的实施例不应该被解释为以任何方式限制方法200或300。
[0037]在步骤202中,数据由第一过程节点102A的一台主机104A写入到一个选定的逻辑块地址(LBA)。在步骤204中,存储所选定的LBA的数据的第一过程节点102A的至少一个目标磁盘106和存储节点内的保护数据的第一个过程节点102A的在目标磁盘106的一个或多个冗余的磁盘106被确定。在一些实施例中,目标和节点内的冗余磁盘106由主机104A和第一个过程节点102A的控制器108A中的至少一个决定。例如,驱动程序软件在第一个过程节点102A的主机104A上执行以确定目标磁盘106,控制器108A确定冗余磁盘106。在步骤206中,为目标磁盘106存储节点间的保护数据的一个或多个冗余过程节点102由第一个过程节点102A的主机104A和控制器108A中的至少一个确定。
[0038]在步骤208中,旧数据从选定的LBA的目标磁盘106读取。在步骤212中,主机写入数据的新数据写入到选定的LBA的目标磁盘106。在步骤210中,所述第一过程节点102A的增量(delta)计算单元112A利用新的数据和旧的数据确定增量(delta)数据。在步骤214中,第一个过程节点102A的节点内冗余计算单元IlOA根据增量(delta)数据更新存储在第一过程节点102A冗余磁盘106的第一冗余数据。
[0039]在步骤216中,第一过程节点102A发送增量(delta)数据到至少一个冗余过程节点102,如与所述第一过程节点102A不同的第二过程节点102B。参照图如图3所示,第二过程节点102B接收在步骤302的增量(delta)数据,并将增量(delta)数据存储在步骤304中的第二过程节点102B的磁盘高速缓存内。一旦增量(delta)数据被存储在磁盘高速缓存中,在步骤306中,所述第二过程节点102B被构形确认完成写入到第一过程节点102A的增量(delta)数据。在这一点上,第二过程节点能够由第一个过程节点102A的主机104A参与数据恢复写入到所选的LBA,如果第一过程节点102A失败。在步骤218中,确定所有冗余节点102完成增量(delta)数据的写入。在步骤220中,主机的数据写入完成响应到主机104A的第一个过程节点102A。
[0040]在步骤308中,存储第二过程节点102B的增量(delta)数据到磁盘高速缓存中之后,增量(delta)数据被选择性地从磁盘缓存刷新。在某些实施例中,与具有较大的磁盘高速缓存如使用最近最少使用的以确定何时冲洗算法的其它实施例相比,如果磁盘高速缓存是小的,步骤308进行会比较快。在步骤310中,响应于刷新或决定刷新磁盘缓存中的增量(de I ta )数据,一个或多个节点间的存储节点间的保护数据的第二过程节点102B的冗余磁盘106的对应的增量(delta)数据和一个或多个存储节点内的保护数据的第二过程节点102B的节点间的冗余磁盘106的是由第二过程节点102B中的主机104B和控制器108B的至少一个决定的。
[0041]在步骤312中,所述第二过程节点102B的节点间的冗余计算单元114B根据增量(delta)数据更新第二过程节点102B上的节点间的冗余磁盘106内存储的全局冗余数据。在步骤314中,第二过程节点102B的节点内的冗余计算单元IlOB根据节点间的冗余磁盘106的更新更新存储在第二过程节点102B上的冗余磁盘106的第二本地冗余数据。在步骤316中,增量(delta)数据被从第二过程节点102B的磁盘高速缓存中删除。在一些实施例中,如磁盘高速缓存是不稳定的,直到步骤312中的一个或多个和/或步骤314之后,步骤306会被延迟以确保增量(delta)数据是非不稳定存储。[0042]在一些实施例中,增量(delta)数据在节点102之间运送以计算全局冗余数据是旧的数据(由一台主机104写入数据之前)和由主机104写入的新的数据的函数。在一些实施例中,增量(delta)数据被确定以利用由主机104写入旧数据和新数据的XOR函数或XNOR函数。在其它实施例中,增量(delta)数据包括旧数据和新数据,旧数据和新数据在节点102之间运送。在一些实施例中,增量(delta)数据进一步包括至少一个:哪个节点产生增量(delta)数据的指示;节点间的保护码字的写操作导致产生增量(delta)数据的位置;以及与起源和/或增量(delta)数据位置相关的其他信息。
[0043]在一些实施例中,节点间的冗余计算独立地在每一部分存储全局冗余数据的一个或多个节点102进行。例如,采用两擦除校正Reed-Solomon码的RAID-6编码类型,增量(delta)数据被发送到存储部分全局冗余数据的两个过程节点102,并且两个过程节点102的每一个独立地更新全局冗余数据的一部分。对于双擦除校正Reed-Solomon码,部分增量(delta)数据被发送的Reed-Solomon码的码字内的增量(delta)数据的位置,并且两个过程节点102各被构形独立计算更新全局的冗余数据来确定相应的更新,当码字内位置的数据的增量(delta)数据的一部分的Reed-Solomon码除以生成多项式得到的余数部分。
[0044]在一些实施例中,增量(delta)数据是减少和/或组合其他节点的本地传输之前,以计算全局冗余数据。在第一示例中,由第一个过程节点的主机写入的第一写入的数据和到一个相同的LBA的各过程节点中由主机写入的第二个写的数据,和单一的增量(delta)数据,对应运送到第一次写入和第二个写入。例如,当函数是一个X0R,增量(delta)数据对应的旧数据(第一次写之前)与第二次写入的第二 (最后)数据为逻辑异或。在第二个例子中,节点间的保护机制的码字包括存储在各过程节点中的第一个上的两个或多个磁盘,而一个以上的两个或多个磁盘的写入使单一的增量(delta)数据相对应的写入被创建。根据编码类型的节点间的保护机制和指定的可靠性,增量(delta)数据的大小等于只是其中的两个或多个磁盘的写入大小。
[0045]在一些实施例中,一台主机第一过程节点102A的数据写入生成多个不同的增量(delta)数据,每一增量(delta)数据被发送到存储部分全局冗余数据的一个相应的过程节点102。在其它实施例中,一台主机第一过程节点102A的数据写入生成一单个增量(delta)数据并被发送到存储部分全局的冗余数据的一个或多个过程节点102。
[0046]在一些实施例中,一台主机第一过程节点102A的数据写入是从所述第一过程节点102A (即“外国”的数据写入)到不同的第二过程节点102B的一个磁盘106。相对于系统100的磁盘106,国外的写操作类似于一个本地写。然而,外国写入的数据被运送到第二过程节点102B而不是留在本地的第一过程节点102A。在一些实施例中,另一个不同点是,外国写的完成由所述任何节点间的冗余的第二过程节点102B确认后,外国写的确定完成返回到第一过程节点102A。
[0047]在一些实施例中,各过程节点102中的至少一些包括磁盘高速缓存,如用作缓存的固态磁盘。磁盘高速缓存中存储的一个或多个:数据(例如存储)访问过程节点102的主机104;另一过程节点102的主机104访问的数据;过程节点102的本地冗余数据;存储在过程节点102上的磁盘106的冗余数据;从过程节点102和/或其他过程节点102接收的数据计算的增量(delta)数据,以及其他类型的数据。在一些实施例中,存储增量(delta)数据磁盘高速缓存中的其它过程节点102接收到,使增量(delta)数据的安全性和相应的主机数据的安全性确认之前,写入更新全局的冗余数据和/或所述第二本地冗余数据保护全局冗余数据。
[0048]在一些实施例中,过程节点102的磁盘高速缓存由一个或多个:过程节点102的主机104 ;—个I / O控制器108,如过程节点R0C,一个专用的过程节点102的管理处理器;和前述的任意组合。
[0049]在一些实施例中,磁盘高速缓存标签为与其他类型的数据不同的增量(delta)数据。在一些实施例中,增量(delta)数据被标记为脏和增量(delta)格式,而不是能够类似非增量(delta)脏数据一样可以直接存储。为了刷新第一过程节点102A的磁盘高速缓存中的增量(delta)数据,第一个过程节点102A的节点间的冗余计算单元114A被构形用以根据增量(delta)数据更新存储在第一个过程节点102A的磁盘106的全局冗余数据,在增量(delta)数据被删除或从磁盘缓存中删除之前。在一些实施例中,更新存储在第一个过程节点102A的磁盘106上的全局的冗余数据包括更新节点内保护全局冗余数据的冗余数据。存储在其他磁盘的第一个过程节点102A的节点内的冗余数据被通过第一个过程节点102A的节点内冗余计算单元IlOA更新。
[0050]在一些实施例中,增量(delta)数据被存储在一个过程节点102的磁盘高速缓存中,接收增量(delta)数据的过程节点102执行至少一部分的增量(delta)数据之前的节点间的冗余计算,以将增量(delta)数据存储至磁盘高速缓存并存储增量(delta)数据的转换版本在磁盘缓存中。例如,对于一个多消失校正码,接收到的增量(delta)数据并不是一种够直接结合到存储在过程节点102上的全局冗余数据的形式。通过使用节点间的冗余计算单元114将所接收到的增量(delta)数据进行变换,变换后的增量(delta)数据能够通过一个简单的操作,例如XOR函数,与全局冗余数据结合。在一些实施例中,存储在磁盘高速缓存中的增量(delta)数据的转换版本还使随后接收到的增量(delta)数据结合到增量(delta)数据的转换版本,有利地保存在磁盘缓存空间中。例如,用Reed-Solomon码作为节点间的保护编码类型,增量(delta)数据根据生成多项式的Reed-Solomon码转化为存储为一部分全局冗余数据的一个码字的剩余部分的更新(通过异或运算)。
[0051]在一些实施方案中,增量(delta)数据缓存在磁盘缓存中更新或合并。例如,对应于第一写在选定的逻辑块地址(LBA),第一过程节点102A的一台主机104A的第一增量(delta)数据被存储在第二过程节点102B的磁盘高速缓存中,选定的LBA的对应的第二增量(delta)数据写在由所述第二过程节点102 B接收的上面。第二过程节点102B的磁盘高速缓存被构形用以根据所述第二增量(delta)数据更新第一增量(delta)数据,以便只有一个单一的存储在第二过程节点102B的数据磁盘106的全局冗余数据的更新,被第一次写入时,第二个写入两者所需。例如,如果增量(delta)数据在第一个过程节点102A利用XOR函数进行计算,第一增量(delta)数据由与所述第二增量(delta)数据进行异或运算进行更新。
[0052]在一些实施例中,第一增量(delta)数据对应于由第一个过程节点102A的主机104A保护的节点间的保护码字中的数据存储在第二过程节点102B的磁盘高速缓存中,第二增量(delta)数据对应于第二个写保护的节点间的由所述第二过程节点102B接收的保护码字中的数据。磁盘高速缓存中的第二过程节点102B被构形用以根据所述第二增量(delta)数据更新第一增量(delta)数据,以便只有一个单一的存储在第二过程节点102B的数据磁盘106的全局冗余数据的更新,被第一次写入时,第二个写入两者所需。
[0053]在一些实施例中,本地冗余数据以确定的方式分布在过程节点102的磁盘106中,如由CRUSH (可伸缩散列法下可控复制)算法或其他的数据分配算法。在一些实施例中,全局冗余数据被以确定的方式分布在各过程节点102的磁盘106中,如由CRUSH算法或其他数据分布算法中的两个或更多个。例如,过程节点102的第一子集上的节点间的第一保护码字跨越磁盘106,与第一子集不同的过程节点102上的第二子集的第二个节点间的保护码字跨越磁盘106。在一些实施例中,所述第一子集和第二子集重叠(即包括至少一个共同的过程节点102)。
[0054]在一些实施例中,节点内的冗余计算单元110和/或部分集成为一个或多个磁盘106。例如,某些固态硬盘实现类似RAID-5或类似RAID-6的冗余机制保护存储在非易失性存储器芯片SSD中的数据。SSD的冗余机制能够作为节点内的冗余运算单元110,用于在SSD中存储数据。
[0055]在一些实施例中,该过程节点102基本上是相同的或类似的配置。在其它实施例中,该过程节点102不是所有都对称,无论在数量上和/或配置的主机(次)104,本地存储器的量,数量,配置,类型,和/或磁盘的容量,或在任何其他参数(次),组件(次),或配置(次)。
[0056]在一些实施例中,各过程节点102中的至少一些具有有限的或无处理能力,并且“仅对磁盘”有效。磁盘专用过程节点102参与全局冗余计算,如通过存储部分全局冗余。在一些实施例中,由于各自的主机104的崩溃,一个过程节点102变为仅供磁盘访问,而至少有一些只过程节点102的存储磁盘仍然是全局可访问的。因此,从其它过程节点102的外国写入对过程节点102的存储仍然能够引起增量(delta)数据生成并发送,例如通过磁盘的唯一的过程节点102的控制器108 (例如R0C)。
[0057]在一些实施例中,多个节点内保护机制110和/或节点间的保护机制114被使用根据一个或多个:一个类型和/或可靠性的磁盘106的保护;一个类型的数据存储在磁盘106的保护;由所选定的节点间的保护机构114覆盖的节点102的故障概率;及其他因素。
[0058]应当认识到,在一些实施例中,本公开通篇描述的各个步骤,可以由单个或多个计算系统得到。计算系统可以包括,但不限于:个人计算系统、主机计算系统、工作站、图像的计算机、并行处理器、或本领域中已知的任何其他设备。在一般情况下,术语“计算系统”广义地定义,包括任何装置,它具有一个或多个处理器,它从存储介质中执行指令。
[0059]程序指令执行的方法,如本文所述实施例所表现的,可能被传输或存储在载体介质上。载体介质可以是传输介质,如,但不限于,电线,电缆,或无线传输链路。载体介质还可以包括存储介质中,例如,但不限于,一个只读存储器,随机存取存储器,磁盘或光盘,或磁带。
[0060]实施例表现出本文所述的方法可以包括在存储介质中存储的结果。结果存储后,则通过存储介质访问结果,并被任何本文所述实施例的方法或系统所使用,格式化以显示给用户,由另一软件模块使用,方法或系统等。此外,结果,可存储“永久”,“半永久”暂时或一段时间。例如,该存储介质可以是随机存取存储器(RAM),并且结果不一定在存储介质中无限地持续下去。
[0061]还可以进一步预期,作为一个系统或方法,本公开描述的任何上述实施例,可以包括在本文所描述的至少一部分的任何其他实施例中。那些在本【技术领域】的技术人员将会理解,本文所描述的系统和方法可以有各种实施方式,并被本公开的一个实施例的上下文中披露。
[0062]此外,还应当理解,本发明由所附权利要求定义。虽然实施例已经示出了本发明,但显然本领域的技术人员在不脱离本公开的范围和实质的情况下,可以做出各种修改。
【权利要求】
1.一种存储系统,其包括相互通信连接的多个过程节点,各过程节点包括: 多个磁盘; 至少一台主机,所述至少一台主机被构形用以将数据写入到所述多个磁盘的一选定的磁盘; 一本地冗余计算单元,其被构形用以利用由所述至少一台主机写入到所述选定的磁盘的数据确定本地冗余数据,所述本地冗余计算单元进一步被构形用以将所述本地冗余数据存储在所述多个磁盘的至少一个磁盘上; 一增量(delta)计算单元,其被构形用以利用由所述至少一台主机写入到所述选定的磁盘的数据确定增量(delta)数据,所述增量(delta)计算单元进一步被构形用以发送所述确定的增量(delta)数据到至少一个其它的过程节点;以及 一全局冗余计算单元,其被构形用以从至少一个其它的过程节点接收增量(delta)数据,所述全局冗余计算单元进一步被构形用以利用接收到的所述增量(delta)数据确定全局冗余数据,所述全局冗余计算单元进一步被构形用以在所述多个磁盘的至少一个磁盘上存储所述的全局冗余数据。
2.根据权利要求1所述的系统,其特征在于,所述的本地冗余计算单元进一步被构形用以当所述选定的磁盘故障时,利用所述本地冗余数据恢复写入到所述选定的磁盘的数据。
3.根据权利要求 1所述的系统,其特征在于:所述全局冗余计算单元进一步被构形用以当所述至少一个其它过程节点故障时,利用所述全局冗余数据恢复所述至少一个其它过程节点的数据。
4.根据权利要求1所述的系统, 其中所述本地冗余数据是第一本地冗余数据, 其中所述本地冗余计算单元进一步被构形用以利用所述全局冗余数据确定第二本地冗余数据;以及 其中所述本地冗余计算单元进一步被构形用以在所述多个磁盘的至少一个磁盘上存储所述第二本地冗余数据。
5.根据权利要求4所述的系统, 其中所述本地冗余计算单元进一步被构形用以当所述选定的磁盘故障时,利用所述本地冗余数据恢复写入到所述选定的磁盘的数据, 其中所述全局冗余计算单元进一步被构形用以当所述至少一个其它过程节点故障时,利用所述全局冗余数据恢复所述至少一个其它过程节点的数据,以及 其中所述本地冗余计算单元进一步被构形用以当存储所述全局冗余数据的所述至少一个磁盘故障时,利用所述第二本地冗余数据恢复所述全局冗余数据。
6.根据权利要求1所述的系统,其特征在于,所述多个过程节点包括:通过第一全局编码类型保护的所述的过程节点之间的所述多个磁盘的第一组的磁盘和通过第二全局编码类型保护的所述的过程节点之间的所述多个磁盘的第二组磁盘,其中所述第一全局编码类型与所述第二个全局编码类型不同。
7.根据权利要求6所述的系统,其特征在于:所述第一组磁盘包括所述多个过程节点的第一过程节点的至少一个磁盘和所述多个过程节点的第二过程节点的至少一个磁盘。
8.根据权利要求1所述的系统,其特征在于:所述本地冗余计算单元进一步被构形用以利用第一擦除纠错码类型处理数据,其中所述全局冗余计算单元进一步被构形用以使用第二擦除纠错码类型处理数据,以及其中所述第二擦除纠错码类型与第一擦除纠错码类型不同。
9.一种存储系统,其包括相互通信连接的多个过程节点,各过程节点包括: 多个磁盘; 至少一台主机,所述的至少一台主机被构形用以将数据写入到所述多个磁盘的一选定的磁盘; 与所述多个磁盘通信的控制器,该控制器被构形用以: 利用写入到所述选定的磁盘的数据确定本地冗余数据; 在所述多个磁盘的至少一个磁盘上存储所述本地冗余数据; 利用写入到所述选定的磁盘的数据确定增量(delta)数据; 发送所确定的增量(delta)数据到所述过程节点的至少一个其他过程节点; 从所述过程节点的至少一个其它过程节点接收增量(delta)数据; 利用所述接收的增量(delta)数据确定全局冗余数据;以及 存储所述全局冗余数据在所述多个磁盘的至少一个磁盘上。
10.根据权利要求9所述的系统,其特征在于,所述控制器进一步被构形用以:` 当所述选定的磁盘出现故障时,利用所述本地冗余数据恢复写入到所述选定的磁盘的数据;以及 当所述的至少一个其它过程节点故障时,利用所述全局冗余数据恢复所述的至少一个其它过程节点的数据。
11.如权利要求10所述的系统, 其中所述本地冗余数据为第一本地冗余数据;以及 其中所述控制器进一步被构形用以: 利用所述全局冗余数据确定第二本地冗余数据; 在所述多个磁盘的至少一个磁盘存储所述第二本地冗余数据;以及当存储所述全局冗余数据的所述至少一个磁盘故障时,利用所述第二本地冗余数据恢复所述全局冗余数据。
12.根据权利要求9的所述系统,其特征在于,所述多个过程节点包括:通过第一全局编码类型保护的所述过程节点之间的所述多个磁盘的第一组磁盘和通过第二全局编码类型保护的所述过程节点之间的所述多个磁盘的第二组磁盘,其中所述第一全局编码类型与第二个全局编码类型不同。
13.根据权利要求12所述的系统,其特征在于:所述第一磁盘组包括所述多个过程节点的第一过程节点的至少一个磁盘和所述多个过程节点的第二过程节点的至少一个磁盘。
14.根据权利要求9所述的系统,其特征在于,所述控制器进一步被构形用以: 利用所述第一擦除纠错码类型确定所述本地冗余数据; 利用所述第二擦除纠错码类型确定所述全局冗余数据,其中所述第一擦除纠错码类型与所述第二擦除校正码类型不同。
15.一种存储保护的方法,包括:将数据写入到多个过程节点的第一过程节点的多个磁盘的一选定的磁盘,所述多个过程节点彼此通信; 利用写入到所述选定的磁盘的所述数据确定本地冗余数据; 将所述本地冗余数据存储在所述多个磁盘的至少一个磁盘上; 利用写入到所述选定的磁盘上的所述数据确定第一增量(delta)数据; 发送所述第一增量(delta)数据到至少一个其它过程节点; 从至少一个其它过程节点接收第二增量(delta)数据; 利用所述第二个增量(delta)数据确定全局冗余数据;以及 存储所述全局冗余数据在所述多个磁盘的至少一个磁盘上。
16.根据权利要求15所述的方法,其特征在于,所述方法进一步包括: 当所述选定的磁盘出现故障时,利用所述本地冗余数据恢复写入到所述选定的磁盘的所述数据;以及 当所述的至少一个其它过程节点故障时,利用所述全局冗余数据恢复所述至少一个其它过程节点的数据。
17.根据权利要求16所述的方法, 其中所述本地冗余数据为第一本地冗余数据, 其中所述方法进一步包括: 利用所述全局冗余数据确定第二本地冗余数据; 将所述第二本地冗余数据存储在所述多个磁盘的至少一个磁盘上;以及当存储所述全局冗余数据的所述至少一个磁盘故障时,利用所述第二本地冗余数据恢复所述全局冗余数据。
18.根据权利要求15所述的方法,其特征在于,所述方法进一步包括: 利用第一全局编码类型保护所述过程节点的第一组磁盘; 利用第二全局编码类型保护所述过程节点的第二组磁盘,其中所述第一全局编码类型与第二全局编码类型不同。
19.根据权利要求18所述的系统,其特征在于,所述第一磁盘组包括所述多个过程节点中的所述第一过程节点的至少一个磁盘和所述第二过程节点的至少一个磁盘。
20.根据权利要求15所述的方法,其特征在于,所述方法进一步包括: 利用第一擦除纠错码类型确定所述本地冗余数据; 利用第二擦除纠错码类型确定所述全局冗余数据,其中所述第一擦除纠错码类型与所述第二擦除纠错码类型不同。
【文档编号】G06F11/07GK103793182SQ201310388747
【公开日】2014年5月14日 申请日期:2013年8月30日 优先权日:2012年9月4日
【发明者】厄尔·T·科恩, 罗伯特·F·奎恩 申请人:Lsi公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1