CN112166417A - 用于容错数据存储的元副本集 - Google Patents
用于容错数据存储的元副本集 Download PDFInfo
- Publication number
- CN112166417A CN112166417A CN201980034983.1A CN201980034983A CN112166417A CN 112166417 A CN112166417 A CN 112166417A CN 201980034983 A CN201980034983 A CN 201980034983A CN 112166417 A CN112166417 A CN 112166417A
- Authority
- CN
- China
- Prior art keywords
- storage devices
- data
- storage
- storage device
- storing
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Pending
Links
- 238000013500 data storage Methods 0.000 title description 14
- 230000004044 response Effects 0.000 claims abstract description 12
- 238000000034 method Methods 0.000 claims description 29
- 239000012634 fragment Substances 0.000 claims description 13
- 230000001172 regenerating effect Effects 0.000 claims 2
- 238000000638 solvent extraction Methods 0.000 claims 1
- 230000008569 process Effects 0.000 description 18
- 230000005012 migration Effects 0.000 description 9
- 238000013508 migration Methods 0.000 description 9
- 239000006185 dispersion Substances 0.000 description 8
- 238000012545 processing Methods 0.000 description 8
- 238000004891 communication Methods 0.000 description 3
- 238000010586 diagram Methods 0.000 description 3
- 238000013507 mapping Methods 0.000 description 3
- 238000011084 recovery Methods 0.000 description 3
- 230000007774 longterm Effects 0.000 description 2
- 238000012986 modification Methods 0.000 description 2
- 230000004048 modification Effects 0.000 description 2
- 230000002085 persistent effect Effects 0.000 description 2
- 230000006870 function Effects 0.000 description 1
- 230000003287 optical effect Effects 0.000 description 1
- 230000009467 reduction Effects 0.000 description 1
- 238000005070 sampling Methods 0.000 description 1
- 238000006467 substitution reaction Methods 0.000 description 1
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F11/00—Error detection; Error correction; Monitoring
- G06F11/07—Responding to the occurrence of a fault, e.g. fault tolerance
- G06F11/16—Error detection or correction of the data by redundancy in hardware
- G06F11/20—Error detection or correction of the data by redundancy in hardware using active fault-masking, e.g. by switching out faulty elements or by switching in spare elements
- G06F11/2053—Error detection or correction of the data by redundancy in hardware using active fault-masking, e.g. by switching out faulty elements or by switching in spare elements where persistent mass storage functionality or persistent mass storage control functionality is redundant
- G06F11/2056—Error detection or correction of the data by redundancy in hardware using active fault-masking, e.g. by switching out faulty elements or by switching in spare elements where persistent mass storage functionality or persistent mass storage control functionality is redundant by mirroring
- G06F11/2069—Management of state, configuration or failover
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F11/00—Error detection; Error correction; Monitoring
- G06F11/07—Responding to the occurrence of a fault, e.g. fault tolerance
- G06F11/08—Error detection or correction by redundancy in data representation, e.g. by using checking codes
- G06F11/10—Adding special bits or symbols to the coded information, e.g. parity check, casting out 9's or 11's
- G06F11/1076—Parity data used in redundant arrays of independent storages, e.g. in RAID systems
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F11/00—Error detection; Error correction; Monitoring
- G06F11/07—Responding to the occurrence of a fault, e.g. fault tolerance
- G06F11/16—Error detection or correction of the data by redundancy in hardware
- G06F11/20—Error detection or correction of the data by redundancy in hardware using active fault-masking, e.g. by switching out faulty elements or by switching in spare elements
- G06F11/2053—Error detection or correction of the data by redundancy in hardware using active fault-masking, e.g. by switching out faulty elements or by switching in spare elements where persistent mass storage functionality or persistent mass storage control functionality is redundant
- G06F11/2056—Error detection or correction of the data by redundancy in hardware using active fault-masking, e.g. by switching out faulty elements or by switching in spare elements where persistent mass storage functionality or persistent mass storage control functionality is redundant by mirroring
- G06F11/2066—Optimisation of the communication load
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F11/00—Error detection; Error correction; Monitoring
- G06F11/07—Responding to the occurrence of a fault, e.g. fault tolerance
- G06F11/16—Error detection or correction of the data by redundancy in hardware
- G06F11/20—Error detection or correction of the data by redundancy in hardware using active fault-masking, e.g. by switching out faulty elements or by switching in spare elements
- G06F11/2053—Error detection or correction of the data by redundancy in hardware using active fault-masking, e.g. by switching out faulty elements or by switching in spare elements where persistent mass storage functionality or persistent mass storage control functionality is redundant
- G06F11/2094—Redundant storage or storage space
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
- G06F3/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0628—Interfaces specially adapted for storage systems making use of a particular technique
- G06F3/0646—Horizontal data movement in storage systems, i.e. moving data in between storage devices or systems
- G06F3/0647—Migration mechanisms
-
- H—ELECTRICITY
- H03—ELECTRONIC CIRCUITRY
- H03M—CODING; DECODING; CODE CONVERSION IN GENERAL
- H03M13/00—Coding, decoding or code conversion, for error detection or error correction; Coding theory basic assumptions; Coding bounds; Error probability evaluation methods; Channel models; Simulation or testing of codes
- H03M13/03—Error detection or forward error correction by redundancy in data representation, i.e. code words containing more digits than the source words
- H03M13/05—Error detection or forward error correction by redundancy in data representation, i.e. code words containing more digits than the source words using block codes, i.e. a predetermined number of check bits joined to a predetermined number of information bits
- H03M13/13—Linear codes
- H03M13/15—Cyclic codes, i.e. cyclic shifts of codewords produce other codewords, e.g. codes defined by a generator polynomial, Bose-Chaudhuri-Hocquenghem [BCH] codes
- H03M13/151—Cyclic codes, i.e. cyclic shifts of codewords produce other codewords, e.g. codes defined by a generator polynomial, Bose-Chaudhuri-Hocquenghem [BCH] codes using error location or error correction polynomials
- H03M13/154—Error and erasure correction, e.g. by using the error and erasure locator or Forney polynomial
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- Quality & Reliability (AREA)
- Mathematical Physics (AREA)
- Algebra (AREA)
- Pure & Applied Mathematics (AREA)
- Probability & Statistics with Applications (AREA)
- Human Computer Interaction (AREA)
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
Abstract
一种系统,包括确定多个存储设备的多个元副本集,元副本集中的每个元副本集包括第一数量的存储设备;从元副本集中的第一元副本集确定第二数量的存储设备的第一副本,第二数量小于第一数量;使用第一副本集来以容错格式存储第一数据;确定从第一副本集的第一存储设备迁移第一数据;以及响应于确定迁移第一数据,确定第二数量的存储设备的第二副本集,第二副本集包括来自第一元副本集的、不在第一副本集中的存储设备,以及第一副本集的、除了第一副本集的第一存储设备之外的存储设备,并且使用第二副本集以容错格式存储第一数据。
Description
背景技术
副本集是用于存储同一数据块的拷贝的机器集合。只要副本集的至少一个机器保持可用,数据块的至少一个副本将始终可用。当前的存储系统将每个存储数据块分配给随机副本集。因此,如果一定数量的机器同时变为不可用,则有可能至少一个副本集的所有机器都将不可用,并且因此在该副本集上存储的数据块将不可用。
已观察到,限制使用中的副本集的数量可以降低任一个副本集的所有机器在任何给定时间都变得不可用的概率。因此,在某些系统中,每个数据块被存储在有限数量的副本集之一中,而不是存储在机器的随机副本集中。由于使用了有限的副本集,如果副本集的所有机器变得不可用,则许多数据块将变得不可用。与上述系统相比,该结果被认为是可以接受的,因为在副本集不可用的情况下,数据不可用情节的减少通常重要于恢复成本的可忽略增长。
当使用有限副本集时,从副本集的单个机器迁移数据可能是昂贵的。如果机器不可用或接近其存储容量,则这样的迁移可能是必须的。但是,通常不提供将数据从单个机器迁移到同一副本集中的另一机器的选项。
使用有限副本集的存储还假设跨副本集成员的数据块的拷贝。一些存储系统实现了擦除编码来更有效地使用存储。只要若干机器同时不可用,数据就可能在这样的系统中变得不可用。具体地,如果数据块的所有拷贝均被存储在故障机器上,则数据块不可用。如果数据块是X+Y擦除编码的并且存储Y+1个片段的机器不可用,则数据块也将不可用。
期望解决有限副本集的缺点并支持存储擦除编码数据的系统。
附图说明
图1图示了根据一些实施例的存储架构。
图2是根据一些实施例的图1架构的元副本集的表格表示。
图3是根据一些实施例的数据到副本集的映射的表格表示。
图4图示了根据一些实施例的包括不可用机器的存储架构。
图5是根据一些实施例的图4架构的元副本集的表格表示。
图6是根据一些实施例的数据到副本集的修订映射的表格表示。
图7是根据一些实施例的在元副本集的副本集中存储数据的过程的流程图。
图8图示了根据一些实施例的包括不可用故障域的存储架构。
图9是根据一些实施例的图8架构的元副本集的表格表示。
图10是根据一些实施例的数据到副本集的修订映射的表格表示。
图11图示了根据一些实施例的擦除编码片段在一组机器机架中的存储。
图12图示了根据一些实施例的擦除编码片段在一组机器机架中的迁移。
图13图示了根据一些实施例的擦除编码片段在一组机器机架中的迁移。
图14图示了根据一些实施例的用于促进数据存储的计算设备。
具体实施方式
提供以下描述来使得本领域的任何技术人员能够制造和使用所描述的实施例。然而,各种修改对于本领域技术人员而言仍然是显而易见的。
一些实施例借助使用元副本集解决了前述问题。元副本集是从中生成一个或多个副本集的机器集合。例如,在提供三向数据拷贝的系统实现方式中,三个机器(即,大小为3)的副本集可以从大小为5的元副本集中定义。如上所述,特定数据块只可以被存储在所定义的机器副本集中。假设两个元副本集ABCDE和ABFGH,可以被用于存储数据的有效副本集的示例包括ABC、ABD和BGH,但不包括CDH。
因此,通常可以在遵守有限副本集集合的同时将数据从一个机器迁移到另一机器。此外,尽管使用元副本集显著增加了符合存储条件的副本集的数量,但是由于在相同元副本集中的副本集之间重复使用机器(以及所产生的较高的故障相关性),因此数据不可用的风险并未显著增加。
出于各种原因,可能期望进行数据迁移,其主要原因是故障恢复和存储负载平衡。在第一情况下,预期机器长期故障则需要在其他机器上重建其数据。在第二情况下,机器被标识为达到其存储容量,而一个或多个其他机器被标识为具有更多的空闲存储容量,并且因此期望将数据从前一机器移动至后一(多个)机器。
与传统的基于副本集的系统不同,一些实施例针对副本集中的每个机器提供了有效的数据迁移,使得所有迁移的数据块保留在有效副本集上。实施例可以被用于基于拷贝的容错以及擦除编码的存储实现,将在下面更详细地描述。
图1图示了根据一些实施例的存储架构100。存储架构100可以存储来自任何源的任何类型的数据。存储架构100可以在已知或将变得已知的任何部署中实现本地部署数据存储系统、基于云的存储服务、混合存储系统和/或任何其他类型的数据存储系统。根据一些实施例,存储架构100旨在以容错的方式存储数据。
存储架构100包括存储引擎110。存储引擎110在本文中将被描述为控制传入数据的接收和存储,以及响应于请求而提供数据。根据一些实施例,存储引擎110结合元数据服务120进行操作。元数据服务120可以定义元副本集、从元副本集确定副本集并且向其分配数据块,以及确定副本集并将副本集重新分配给数据块来辅助数据迁移。
根据一些实施例,副本集中存储的数据块可以包括任何可标识的数据单元。例如,数据块可以包括扩展区,扩展区是八个物理上连续的8KB页面的集合。在某些实施例中,页面以96字节的头部(header)开始,头部存储了页面编号、页面类型、页面上的空闲空间量以及拥有页面的对象的分配单元ID。在基于X向拷贝的存储中,每个副本集由X个机器组成,并且扩展区被整体复制到其所分配的副本集的X个机器中的每一个机器。
根据一些实施例,数据块可以包括由基于擦除的编码产生的片段。根据基于擦除的编码,待被存储的数据(例如,扩展区)被划分为X个(例如,6个)大小相等的数据片段。编码被应用于数据片段来生成Y个(例如,3个)奇偶校验片段,奇偶校验片段中的每一个的大小与数据片段相同。借助编码方案,原始数据可以从这些X+Y(即,9)个片段中的任X个(即,6个)中重建。通过将X+Y个片段存储在X+Y个不同机器之间来实现容错,使得即使Y个机器发生故障,数据也可以被恢复。此外,该存储布置需要的存储空间等于原始数据大小的1.5倍,而在拷贝情况下则为3倍。
架构100包括六个故障域130到135。每个故障域包括若干机器。故障域内的所有机器均容易同时不可用。故障域的示例包括网络机架,因为网络机架中安装的每个机器通常被连接到相同的电源和相同的机架顶部交换机。实施例不限于共享相应故障域的机器。一些实施例包括其中机器中的一个、一些或全部不与任何其他机器共享故障域的一组机器。
本文描述的机器可以包括可以在其中存储数据的任何计算设备或系统。根据一些实施例,机器是刀片服务器,并且每个故障域是其中安装有刀片服务器的网络机架。
架构100中描绘的每个元件可以包括任何数量的计算设备以及用于执行归因于其的功能的任何类型的硬件或软件。每个元件可以被定位成邻近或远离任一个或多个其他元件,并且元件可以使用任何数量和类型的中间计算网络来彼此通信。根据一些实施例的存储架构可以包括图1中未描绘的元件。
图2是已基于架构100的机器而被定义的元副本集的元数据200的表格表示。根据一些实施例,由元数据服务120来确定元副本集,并且将元数据200保持在存储架构100内。元副本集基于一个或多个约束来确定。一个约束是每个元副本集中包括的机器的数量。
元副本集中的期望机器数量基于副本集中的机器C的数量。机器C的数量进而基于待使用的容错数据存储方案的类型。在三向拷贝的情况下,C=3。在14+4擦除编码的情况下,C=18。根据一些实施例,元副本集中的机器数量是C+2。实施例不限于此,并且可以在每个副本集中采用C+1、C+3、C+4个等机器。
在一些实施例中,元副本集的确定还受到与元副本集内的机器性质相关联的规则的约束。例如,规则可能要求元副本集中的每个机器与不同的故障域相关联。
图2描绘了四个元副本集202、204、206和208,但是架构100不将元副本集的数量限于此。如图所示,每个元副本集包括5个机器(假设C=3),并且元副本集的每个机器属于不同的故障域。此外,没有机器属于多于一个的元副本集。
图3是根据一些实施例的将数据块与副本集相关联的元数据300的表格表示。元数据服务120可以将待存储的每个数据块分配给副本集,副本集进而由元数据200中定义的元副本集之一来确定。如图所示,元数据300的每个确定的副本集包括来自单个元副本集的机器。
元数据300包括副本集,尽管副本集不完全相同,但是它们是同一元副本集的子集。例如,块0和块3的副本集各自与元副本集208相关联,并且块4和块6的副本集各自与元副本集202相关联。因此,与这些不同副本集相关联的数据块与同一元副本集相关联。元数据300还将一些数据块(例如,(块2,块5)和(块0,块7))分配给同一副本集(例如,(C3,D4,E4)和(D3,E3,F2))。
通常,N个元副本集产生N(C+1)(C+2)/2个可能的副本集,因为存在(C+1)(C+2)/2个方式来从大小为C+2的元副本集中选择大小为C的副本集。与传统的副本集实现方式相比,副本集的这种增加仅导致数据不可用的可能性适度增加。该增加是适度的,因为元副本集的副本集包括通用机器,因此导致一个副本集不可用的事件很可能导致元副本集的其他副本集不可用。此外,使用如本文所述的元副本集可以提供很大的益处:能够在无需将大量数据迁移到全新的副本集的情况下,执行故障恢复和负载平衡。
根据一些实施例,作为元副本集的子集的任何副本集是有效副本集。结果,数据可以在不违反副本集限制的情况下,从机器进行有效地迁移。图4至图6图示了根据一些实施例的数据迁移的示例。
如图4所示,假定故障域132的机器C3已不可用。在一些实施例中,由元数据服务120检测到该不可用。作为响应,元数据服务120确定将驻留在包括机器C3的副本集上的数据块迁移到另一机器。如本文所述,该另一机器与机器C3属于同一元副本集。因为元副本集可以包括许多机器,所以机器C3上存储的一个数据块被迁移到的机器可能不同于机器C3上存储的另一数据块被迁移到的机器。
返回参考图3,块2和块5被各自分配给包括机器C3的副本集。因此,块2和块5的副本驻留在机器C3上。由于机器C3的不可用性,块2和块5必须被复制到另一机器来保持本示例的三向拷贝。
如元数据300所示,块2和块5各自与包括机器C3、D4和E4的副本集相关联。实施例不限于此,因为每个块可以与不同的副本集相关联,其中每个副本集包括机器C3。根据一些实施例,响应于机器C3的不可用性而复制块2和块5到的机器和与元数据300中的块2和块5相关联的副本集属于相同的元副本集。
副本集C3、D4和E4属于元副本集204。因此从元副本集204中选择可用机器来替换副本集中与块2和块5相关联的机器C3。图6图示了被修改来反映该替换的元数据300。具体地,机器A3已替换了副本集中与块2相关联的机器C3,而机器B1已替换了副本集中与块5关联的机器C3。如图5所示,替换机器A3和B1均属于元副本集204,从而保留了上述元副本集/副本集限制。
图7包括根据一些实施例的提供容错数据存储的过程700的流程图。在一些实施例中,数据存储服务器的处理单元(例如,一个或多个处理器、处理核、处理器线程)执行软件程序代码来使得服务器执行过程700。过程700的执行可以分布在多个数据存储服务器节点之间。过程700和本文中提及的所有其他过程可以被体现在处理器可执行程序代码中,处理器可执行程序代码从非暂时性计算机可读介质(例如,软盘、CD-ROM、DVD-ROM、闪存驱动装置和磁带)中的一个或多个被读取,并且然后以压缩、未编译和/或加密的格式被存储。在一些实施例中,硬连线电路可以被用于代替程序代码或与程序代码结合来实现根据一些实施例的过程。实施例因此不限于硬件和软件的任何特定组合。
最初,在S710处,多个元副本集被确定。每个元副本集包括若干存储设备(以上被称为机器)。如上所述,在S710处,元副本集基于一个或多个约束被确定。一个约束是每个元副本集内将要包括的存储设备的数量。每个确定的元副本集中的存储设备的数量大于所使用的特定容错存储方案所需的存储设备的数量。另一约束可以是元副本集内的存储设备的相对位置。根据一个约束,元副本集中仅有限数量(例如,0、2)的存储设备可以属于同一故障域。
现在将描述用于确定多个元副本集的过程。过程假定每个副本集应包括C个存储设备,并且每个元副本集应包括C+2个存储设备。而且,每个存储设备与已知故障域(例如,机架)相关联,其中已知故障域被一个或多个其他存储设备所共享。
过程开始于将机架随机排列。接下来,每个机架中的存储设备被随机排列。通过使用初级分类键“同一机架中的设备排列中的设备位置”和次级分类键“机架排列中的设备机架位置”将存储设备排序到列表中,将排列合并到列表中。所产生的列表被划分为多个组,其中每个组是元副本集并且包括C+2个机器。上述步骤可以被重复,直到获得期望的分散宽度。
在这一点上,存储设备M的分散宽度是与M处于相同副本集中的其他设备的数量。由于分散宽度指示可能可用于帮助恢复或移动M的数据的存储设备的数量,因此较高的分散宽度可能是期望的。在元副本集的情况下,增加的分散宽度会增加从机器中移出数据时可以选择的设备的数量。
增大分散宽度的主要方法是使用更多的元副本集。将M作为其一部分的元副本集越多,与M共享副本集的其他设备越多。但是,使用太多的元副本集是有问题的,因为更多的元副本集数量的增加会增加数据不可用的概率。一个目标是使用足够的元副本集来为每个设备提供合理的分散宽度,同时将设备分配给元副本集,使得针对少量的元副本集来提供尽可能多的分散宽度。为此,期望元副本集之间几乎没有重叠。
分散宽度S的合理目标是Z/2,其中Z是其他机架上的设备数量。例如,在20个机架、每个机架16个设备的架构中,Z为19*16。相应地,对于设备有可能与之共享元副本集的集群,设备将与该集群中所有设备的一半设备共享元副本集。
重复计数R是重复四个步骤来实现期望分散宽度的次数。从单个设备的角度来看,每次重复上述四个步骤,C+1个设备就会被添加到与之共享元副本集的设备集合中。但是,这些设备中的一些设备已在该集合中,因此分散宽度不一定会增加完整的C+1。该过程实质上是从Z个设备进行样本替换。当利用替换而从n个项中挑选m个项时,预期的不同项的数量的公式为因此,适当的公式为在约束的情况下,例如,如果C=18且Z=19*16,则R=11。
一旦多个元副本集的设备被确定,则流程进行到S720。接下来,待被存储的数据被分配给元副本集内的相应副本集。例如,对于待被存储的第一数据块,元副本集中第一元副本集的存储设备的子集被确定。子集的大小小于元副本集的大小,并且由待被使用的容错数据存储方案的类型来确定。如果将使用三向拷贝,则子集包括三个存储设备。如果使用6+3擦除编码,则子集包括九个存储设备。
在S730处,第一数据被冗余地存储在S720处针对第一数据而确定的存储设备的子集上。在基于拷贝的存储系统中,第一数据的完整副本被存储在所确定的三个存储设备中的每个存储设备上。如果存储系统使用擦除编码,则第一数据被划分为片段,从原始片段生成若干附加个片段,并且每个片段被存储在所确定的存储设备中的相应一个上。
S720和S730可以针对待存储的任何数量的数据元素进行重复,从而产生将每个数据元素与副本集相关联的元数据,例如,图3和图6的元数据300。
S740至S760可以如以上关于图4至图6所述进行。具体地,元数据服务120可以检测第一元副本集的存储设备子集中的存储设备的不可用性。作为响应,在S750处,元数据服务120确定第一元副本集中不在针对第一数据确定的存储设备子集中的存储设备。第一数据然后被复制到在S750处确定的存储设备。
S740至S760可以针对包括不可用存储设备的各种存储设备子集上存储的其他数据进行重复。其他数据被迁移到的存储设备可以如关于图6所描述的存储设备不同。
图8图示了故障域中的所有机器均不可用的情况。一旦检测到不可用,就针对包括不可用机器之一的副本集来确定替换机器。如图10所示并且与图6的副本集相比,包括机器E1、E2、E3或E4之一的每个副本集已被更新为使用同一元副本集的另一可用机器来替换不可用机器。
擦除编码方案可能需要比集群中机架更多的机器,例如,在只有20个机架的集群中的20+4+2编码的情况。因此,元副本集可以包括位于同一机架上的机器。在这样的方案中,元数据可以指定被允许占用同一机架中的机器的某些片段对。然而,期望将元副本集内的机架重用量最小化。上述元副本集确定可以将共享机架的机器数量最小化。例如,如果元副本集大小为28,则确定将首先将20个不同机架上的20个机器分配给元副本集,并且然后将8个机架重用副本集的其余8个机器。
为了维持仅允许将某些片段对存储在同一机架的机器中的约束,在某些情况下,因机器不可用而移动一个片段将需要移动一个或多个附加片段。例如,图11图示了包括26个片段的数据的存储。图11包括被称为M1、M2、M3、M4、M5、M6的六个机器和22个其他机器。M1和M2在同一机架上,并且M3、M4、M5和M6在不同机架上。26个片段被存储在除了M5和M6之外的所有28个机器上。
将假定“x”和“y”片段可以位于同一机架的机器上,而两个“x”片段或两个“y”片段不能位于同一机架的机器上。如果M1和M2均同时发生故障,则M1上的片段x0和M2上的片段y0必须被移动到元副本集中的其他集群。图12示出了片段x0和片段y0向元副本集的两个备用机器M5和M6的已完成迁移。
现在将假定M1和M2最终重新上线,然后M3和M4故障。片段x1必须从M3重新创建,并且x2必须从M4重新创建,并且M1和M2可用,但当前未使用。但是,不允许将x1和x2存储在M1和M2上,因为x1和x2不应该在同一机架上。这可以如图13所示,通过首先将x0从M5移动到M1并且将y0从M6移动到M2来解决,从而在M5和M6上为x1和x2腾出空间。
某些事件(例如,重大热入侵)可能会导致许多机器同时不可用,使得无法在有效副本集上存储新数据。此外,现有数据的冗余段可能无法移动到所关联的元副本集的其他机器。响应于这样的情况,数据可以被存储在随机副本集中。
如上所述,随机副本集的使用可以导致高的不可用率。因此,后台进程可以被采用来标识未被存储在有效副本集(即,其中所有机器属于经定义的元副本集的副本集)中的数据,并且将数据迁移到有效副本集。该后台进程可以被分配有限的处理能力和I/O带宽,以防止其占用更重要工作的资源。
在某些不可用情况下,本文提出的有限副本集方案仅在显著的数据移动的情况下才能被满足。例如,机器可能会以长期的方式发生故障,因此有必要将其数据移动至其他机器。但是,对于该机器上的一个数据块,所关联的元副本集可能包括三个不可用机器。有限副本集方案可以通过将所有数据块移动到完全不同的元副本集来维护。但是,这可能需要不期望的时间量和带宽。因此,当仅一个块需要迁移时,即使该迁移将违反元副本集约束,块也被迁移。如上所述的后台进程可以被用于最终解决上述该违规问题。
对机器故障和数据恢复做出响应可能需要负载平衡。在没有故障/无法恢复的情况下,也可能需要进行负载平衡。在这方面,对副本集的随机选择将呈现差异,并且因此将在某些机器上放置的数据比在其他机器上放置的数据更多。随着一些机器比其他机器更接近容量,负载平衡将变得合乎需要。
因为负载平衡消耗带宽,因此优选地避免负载平衡。因此,副本集的随机选择应偏向于选择具有更多可用存储容量的机器的副本集。在一些实施例中,两个不同的副本集被随机选择作为新数据块的候选副本集,两个副本集中的一个被标识为具有副本集中任何机器的最小空闲空间的最大量,并且所标识的副本集被分配用于存储数据块。备选地,所标识的副本集是将所使用的存储容量超过总容量的某个阈值的机器数量最小化的副本集。
以上过程并入了“新”机器的使用,“新”机器是空的,因为它们先前发生故障并已被恢复或作为发生故障的机器的替换而被引入集群。但是,根据数据被生成的速率,引入可能不够快,无法有效地使用新容量。在这种情况下,后台负载平衡可以被用于提高将数据从较满的机器移动到空机器的速率。可能期望限制发生这样的后台负载平衡的速率,以避免使用带宽,带宽更优选被分配给诸如服务客户请求的任务。
新机器可能呈现出高度相关的故障风险,因为所有新机器可能来自同质池和/或因为新机器使用来自崩溃和翻新机器的硬件,这些硬件将来更有可能发生故障。因此,将数据优选放置在可能同时崩溃的新机器上可能会增加数据不可用的风险。如果确定该风险不令人满意,则可以完全消除用于负载平衡目的的采样偏差,从而有利于后台负载平衡。
图14是根据一些实施例的系统1400的框图。系统1400可以包括通用计算机服务器并且可以执行程序代码来执行本文描述的任何过程。系统1400的任一个或多个组件可以在分布式架构中实现。根据一些实施例,系统1400可以包括其他未示出的元件。
系统1400包括可操作地耦合到通信设备1420的处理单元1410、持久数据存储系统1430、一个或多个输入设备1440、一个或多个输出设备1450和易失性存储器1460。处理单元1410可以包括一个或多个处理器、处理核等来执行程序代码。通信设备1420可以用于促进与诸如存储设备(即,机器)的外部网络和需要数据存储服务的客户端设备的外部网络的通信。(多个)输入设备1440可以包括例如键盘、小键盘、鼠标或其他定点设备、麦克风、触摸屏和/或眼睛跟踪设备。(多个)输出设备1450可以包括例如显示器(例如,显示屏)、扬声器和/或打印机。
数据存储系统1430可以包括任意数量的适当持久性存储设备,包括磁存储设备(例如,磁带、硬盘驱动装置和闪存)、光存储设备、只读存储器(ROM)设备等的组合。存储器1460可以包括随机存取存储器(RAM)、存储级存储器(SCM)或任何其他快速存取存储器。
存储引擎1431和元数据服务1432可以包括由处理单元1410执行来使得系统1400执行本文所述的任一个或多个过程的程序代码。例如,存储引擎1431可以控制在多个存储设备中存储数据以及从多个存储设备中获取数据。元数据服务1432可以确定将在其中存储和/或向其迁移数的存储设备。这些确定可以基于本文所述的元副本集数据1433和数据/副本集元数据1434。数据存储设备1430还可以存储数据和其他程序代码来提供附加功能和/或系统1400的操作所必需的功能(例如,设备驱动程序、操作系统文件等)。
如本领域中已知的,本文描述的每个功能组件可以在计算机硬件(集成电路和/或分立电路组件)、程序代码中和/或在执行这样的程序代码的一个或多个计算系统中实现。这样的计算系统可以包括执行存储器系统中存储的处理器可执行程序代码的一个或多个处理单元。
以上描述的图表示根据一些实施例的用于描述过程的逻辑架构,并且实际的实现方式可以包括以其他方式布置的更多或不同的组件。其他拓扑可以与其他实施例结合使用。此外,本文描述的每个组件或设备可以由经由任意数量的其他公共和/或私有网络进行通信的任意数量的设备来实现。两个或更多个这样的计算设备可以彼此远离放置,并且可以经由任何已知的(多个)网络方式和/或专用连接彼此通信。每个组件或设备可以包括适合于提供本文描述的功能以及任何其他功能的任何数量的硬件和/或软件元件。
本文描述的实施例仅出于例示的目的。本领域技术人员将认识到,可以对上述实施例进行修改和变型来实践其他实施例。
Claims (12)
1.一种装置,包括:
存储器,存储处理器可执行过程步骤;
一个或多个处理器,用于执行所述处理器可执行过程步骤,以使所述装置:
确定多个存储设备的多个元副本集,所述元副本集中的每个元副本集包括第一数量的存储设备的第一集合;
从所述元副本集中的第一元副本集确定包括第二数量的存储设备的第一副本集,其中所述第二数量小于所述第一数量;
使用所述第一副本集,以容错格式存储第一数据;
确定从所述第一副本集的第一存储设备迁移所述第一数据;以及
响应于迁移所述第一数据的所述确定:
确定所述第二数量的存储设备的第二副本集,所述第二副本集包括来自所述第一元副本集的、不在所述第一副本集中的存储设备,以及所述第一副本集的、除了所述第一副本集的所述第一存储设备之外的存储设备,以及
使用所述第二副本集,以容错格式存储所述第一数据。
2.根据权利要求1所述的装置,其中使用所述第一副本集以容错格式对所述第一数据的存储包括在所述第一副本集的每个存储设备上拷贝所述第一数据,并且
其中使用所述第二副本集以容错格式对所述第一数据的存储包括在来自所述第一元副本集的、不在所述第一副本集中的存储设备上拷贝所述第一数据。
3.根据权利要求1所述的装置,其中使用所述第一副本集以容错格式对所述第一数据的存储包括:对所述第一数据擦除编码以生成与所述第一数据相关联的所述第二数量的片段,以及将所述第二数量的片段中的每个片段存储在所述第一副本集的相应存储设备上,并且
其中使用所述第二副本集以容错格式对所述第一数据的存储包括:重新生成与所述第一数据相关联并且被存储在所述第一存储设备上的片段,以及将重新生成的所述片段存储在来自所述第一元副本集的、不在所述第一副本集中的所述存储设备上。
4.根据权利要求3所述的装置,其中所述多个存储设备中的每个存储设备与故障域相关联,所述故障域被与所述多个存储设备中的一个或多个其他存储设备共享,其中将重新生成的所述片段存储在来自所述第一元副本集的、不在所述第一副本集中的是存储设备上包括:
来自所述第一元副本集的、不在所述第一副本集中的所述存储设备与所述第一副本集的另一存储设备的同一故障域相关联的标识;以及
重新生成的所述片段以及与所述第一数据相关联并且被存储在所述第一副本集的所述另一存储设备上的片段与同一故障域中的存储兼容的确定。
5.根据权利要求1所述的装置,其中所述多个存储设备中的每个存储设备与故障域相关联,所述故障域被与所述多个存储设备中的一个或多个其他存储设备共享,并且其中对所述多个元副本集的确定包括:
对所述故障域的随机排列;
对与所述故障域中的每个故障域相关联的所述存储设备的随机排列;
所述排列向列表中的合并,所述列表首先通过每个存储设备在同一故障域中的存储设备的所述排列中的位置被排序,并且其次通过存储设备的故障域在故障域的所述排列中的位置被排序;以及
所述列表向所述第一数量的存储设备的两个或更多个组的划分,其中每个组是所述多个元副本集中的一个元副本集。
6.根据权利要求1所述的装置,所述一个或多个处理器用于执行所述处理器可执行过程步骤,以使所述装置:
确定从所述第一副本集的所述第一存储设备迁移第二数据;以及
响应于迁移所述第二数据的所述确定:
确定来自所述第一元副本集的、所述第二数量的存储设备的副本集都不可用;以及
响应于来自所述第一元副本集的、所述第二数量的存储设备的副本集都不可用的所述确定,使用所述多个存储设备中所述第二数量的存储设备的随机副本集,以容错格式存储所述第二数据。
7.根据权利要求1所述的装置,其中从所述元副本集中的所述第一元副本集对所述第二数量的存储设备的所述第一副本集的确定包括:
从所述元副本集中的所述第一元副本集对所述第二数量的存储设备的所述第一副本集的确定;
从所述元副本集中的第二元副本集对所述第二数量的存储设备的第二候选副本集的确定;
对所述第一副本集的空闲存储容量和所述第二候选副本集的空闲存储容量的确定;以及
基于所述第一副本集的所述空闲存储容量和所述第二候选副本集的所述空闲存储容量,对所述第二数量的存储设备的所述第一副本集的确定。
8.根据权利要求1所述的装置,所述一个或多个处理器用于执行所述处理器可执行过程步骤,以使所述装置:
从所述多个存储设备的第二元副本集确定第三副本集;
使用所述第三副本集,以容错格式存储第三数据;
确定从所述第三副本集的第一存储设备迁移所述第三数据;以及
响应于迁移所述第三数据的所述确定:
确定所述第二数量的存储设备的第四副本集,所述第四副本集包括来自所述第二元副本集的、不在所述第三副本集中的存储设备,以及所述第三副本集的、除了所述第三副本集的所述第一存储设备之外的存储设备;以及
使用所述第四副本集,以容错格式存储所述第一数据。
9.一种用于在多个存储设备之间以容错格式存储数据的方法,所述方法包括:
确定存储设备的多个第一集合,所述第一集合中的每个第一集合包括第一数量的存储设备;
接收待存储的第一数据;
从存储设备的所述第一集合中的第一个第一集合确定第二数量的存储设备的第一子集,其中所述第二数量小于所述第一数量;
使用所述第二数量的存储设备的所述第一子集,以容错格式存储所述第一数据;
确定替换所述第二数量的存储设备的所述第一子集的第一存储设备;以及
响应于确定替换所述第一存储设备:
从存储设备的所述第一集合中的所述第一个第一集合确定替换存储设备,其中所述第二数量的存储设备的所述第一子集不包括所述替换存储设备;以及
使用所述替换存储设备和所述第二数量的存储设备的、不包括所述第一存储设备的所述第一子集,以容错格式存储所述第一数据。
10.根据权利要求9所述的方法,其中使用所述第二数量的存储设备的所述第一子集,以容错格式存储所述第一数据包括在所述第二数量的存储设备的所述第一子集中的每个存储设备上拷贝所述第一数据,并且
其中使用所述替换存储设备和所述第二数量的存储设备的、不包括所述第一存储设备的所述第一子集,以容错格式存储所述第一数据包括在所述替换存储设备上拷贝所述第一数据。
11.根据权利要求9所述的方法,其中使用所述第二数量的存储设备的所述第一子集,以容错格式存储所述第一数据包括对所述第一数据擦除编码,以生成与所述第一数据相关联的所述第二数量的片段,以及将所述第二数量的片段中的每个片段存储在所述第二数量的存储设备的所述第一子集中的相应存储设备上,并且
其中使用所述替换存储设备和所述第二数量的存储设备的、不包括所述第一存储设备的所述第一子集,以容错格式存储所述第一数据包括重新生成与所述第一数据相关联并且被存储在所述第一存储设备上的片段,以及将重新生成的所述片段存储在所述替换存储设备上。
12.根据权利要求9所述的方法,还包括:
接收待存储的第二数据;
从存储设备的所述第一集合中的所述第一个第一集合确定所述第二数量的存储设备的第二子集;
使用所述第二数量的存储设备的所述第二子集,以容错格式存储所述第二数据;
确定替换所述第二数量的存储设备的所述第二子集中的第一存储设备;以及
响应于确定替换所述第二数量的存储设备的所述第二子集中的所述第一存储设备:
从存储设备的所述第一集合中的所述第一个第一集合确定第二替换存储设备,其中所述第二数量的存储设备的所述第二子集不包括所述第二替换存储设备;以及
使用所述第二替换存储设备和所述第二数量的存储设备的、不包括所述第二数量的存储设备的所述第二子集中的所述第一存储设备的所述第二子集,以容错格式存储所述第二数据。
Applications Claiming Priority (3)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US15/989,589 US10599520B2 (en) | 2018-05-25 | 2018-05-25 | Meta-copysets for fault-tolerant data storage |
US15/989,589 | 2018-05-25 | ||
PCT/US2019/031917 WO2019226373A1 (en) | 2018-05-25 | 2019-05-13 | Meta-copysets for fault-tolerant data storage |
Publications (1)
Publication Number | Publication Date |
---|---|
CN112166417A true CN112166417A (zh) | 2021-01-01 |
Family
ID=66655479
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201980034983.1A Pending CN112166417A (zh) | 2018-05-25 | 2019-05-13 | 用于容错数据存储的元副本集 |
Country Status (4)
Country | Link |
---|---|
US (1) | US10599520B2 (zh) |
EP (1) | EP3803601B1 (zh) |
CN (1) | CN112166417A (zh) |
WO (1) | WO2019226373A1 (zh) |
Families Citing this family (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US11868318B1 (en) * | 2019-12-06 | 2024-01-09 | Pure Storage, Inc. | End-to-end encryption in a storage system with multi-tenancy |
CN113821176B (zh) * | 2021-09-29 | 2023-07-21 | 重庆紫光华山智安科技有限公司 | 一种数据迁移的处理方法、装置及存储介质 |
Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101414489A (zh) * | 2007-10-19 | 2009-04-22 | 中国科学院计算技术研究所 | 一种容错存储器及其纠错容错方法 |
CN102270161A (zh) * | 2011-06-09 | 2011-12-07 | 华中科技大学 | 一种基于纠删码的多等级容错数据存储、读取和恢复方法 |
US20120284231A1 (en) * | 2011-05-06 | 2012-11-08 | International Business Machines Corporation | Distributed, asynchronous and fault-tolerant storage system |
US20170277610A1 (en) * | 2016-03-24 | 2017-09-28 | Acronis International Gmbh | System and method of data allocation providing increased reliability of storage |
Family Cites Families (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US10289326B2 (en) * | 2015-09-14 | 2019-05-14 | HGST Netherlands, B.V. | Optimized data layout for object store system |
US10114716B2 (en) | 2015-11-20 | 2018-10-30 | International Business Machines Corporation | Virtual failure domains for storage systems |
US10073625B2 (en) * | 2016-01-06 | 2018-09-11 | HGST Netherlands B.V. | Variable-RPM hard disk drive control |
-
2018
- 2018-05-25 US US15/989,589 patent/US10599520B2/en active Active
-
2019
- 2019-05-13 EP EP19726845.1A patent/EP3803601B1/en active Active
- 2019-05-13 WO PCT/US2019/031917 patent/WO2019226373A1/en unknown
- 2019-05-13 CN CN201980034983.1A patent/CN112166417A/zh active Pending
Patent Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101414489A (zh) * | 2007-10-19 | 2009-04-22 | 中国科学院计算技术研究所 | 一种容错存储器及其纠错容错方法 |
US20120284231A1 (en) * | 2011-05-06 | 2012-11-08 | International Business Machines Corporation | Distributed, asynchronous and fault-tolerant storage system |
CN102270161A (zh) * | 2011-06-09 | 2011-12-07 | 华中科技大学 | 一种基于纠删码的多等级容错数据存储、读取和恢复方法 |
US20170277610A1 (en) * | 2016-03-24 | 2017-09-28 | Acronis International Gmbh | System and method of data allocation providing increased reliability of storage |
Also Published As
Publication number | Publication date |
---|---|
WO2019226373A1 (en) | 2019-11-28 |
EP3803601B1 (en) | 2023-05-10 |
EP3803601A1 (en) | 2021-04-14 |
US10599520B2 (en) | 2020-03-24 |
US20190361775A1 (en) | 2019-11-28 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN109857445B (zh) | 存储系统和控制软件配置方法 | |
US11461015B2 (en) | Available storage space in a system with varying data redundancy schemes | |
US10719250B2 (en) | System and method for combining erasure-coded protection sets | |
US10977124B2 (en) | Distributed storage system, data storage method, and software program | |
Sato et al. | Design and modeling of a non-blocking checkpointing system | |
CN110389858B (zh) | 存储设备的故障恢复方法和设备 | |
US11221935B2 (en) | Information processing system, information processing system management method, and program thereof | |
US20180011766A1 (en) | Disaster recovery systems and methods | |
US10242021B2 (en) | Storing data deduplication metadata in a grid of processors | |
US10628298B1 (en) | Resumable garbage collection | |
CN112181736A (zh) | 分布式存储系统及分布式存储系统的配置方法 | |
CN112166417A (zh) | 用于容错数据存储的元副本集 | |
US11128708B2 (en) | Managing remote replication in storage systems | |
KR20140080919A (ko) | 분산 파일 시스템에서 효율적인 자료 저장 방법 | |
EP4170499A1 (en) | Data storage method, storage system, storage device, and storage medium | |
Li et al. | Relieving both storage and recovery burdens in big data clusters with R-STAIR codes | |
CN116360680A (zh) | 用于在存储系统中执行复制恢复操作的方法和系统 | |
CN114253460B (zh) | 管理存储池的方法、设备和计算机程序产品 | |
US11726658B2 (en) | Method, device, and computer program product for storage management | |
US10691564B2 (en) | Storage system and storage control method | |
US10983720B2 (en) | System for converting data protection levels of storage nodes | |
CN116601609A (zh) | 将数据存储在计算机存储中 | |
CN113590378A (zh) | 存储管理的方法、设备和计算机程序产品 | |
Wang et al. | Improving the availability of supercomputer job input data using temporal replication | |
JP7491545B2 (ja) | 情報処理方法 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
PB01 | Publication | ||
SE01 | Entry into force of request for substantive examination | ||
SE01 | Entry into force of request for substantive examination |