CN112889033A - 提高具有变化的数据冗余方案的系统中的可用存储空间 - Google Patents
提高具有变化的数据冗余方案的系统中的可用存储空间 Download PDFInfo
- Publication number
- CN112889033A CN112889033A CN201980067615.7A CN201980067615A CN112889033A CN 112889033 A CN112889033 A CN 112889033A CN 201980067615 A CN201980067615 A CN 201980067615A CN 112889033 A CN112889033 A CN 112889033A
- Authority
- CN
- China
- Prior art keywords
- data
- block
- blocks
- storage
- data protection
- 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
- 238000000034 method Methods 0.000 claims abstract description 61
- 230000010076 replication Effects 0.000 claims description 37
- 230000000737 periodic effect Effects 0.000 abstract description 4
- 230000008569 process Effects 0.000 description 21
- 238000013507 mapping Methods 0.000 description 11
- 238000010586 diagram Methods 0.000 description 10
- 238000013403 standard screening design Methods 0.000 description 9
- 230000009977 dual effect Effects 0.000 description 8
- 238000012545 processing Methods 0.000 description 5
- 230000006870 function Effects 0.000 description 4
- 238000011084 recovery Methods 0.000 description 4
- 230000004044 response Effects 0.000 description 4
- 230000005540 biological transmission Effects 0.000 description 3
- 230000008859 change Effects 0.000 description 3
- 238000012937 correction Methods 0.000 description 3
- 230000002085 persistent effect Effects 0.000 description 3
- 239000007787 solid Substances 0.000 description 3
- 238000004364 calculation method Methods 0.000 description 2
- 230000008878 coupling Effects 0.000 description 2
- 238000010168 coupling process Methods 0.000 description 2
- 238000005859 coupling reaction Methods 0.000 description 2
- 238000011010 flushing procedure Methods 0.000 description 2
- 230000000977 initiatory effect Effects 0.000 description 2
- 238000012986 modification Methods 0.000 description 2
- 230000004048 modification Effects 0.000 description 2
- 230000003362 replicative effect Effects 0.000 description 2
- 230000003321 amplification Effects 0.000 description 1
- 238000003491 array Methods 0.000 description 1
- 238000004891 communication Methods 0.000 description 1
- 230000006835 compression Effects 0.000 description 1
- 238000007906 compression Methods 0.000 description 1
- 230000000593 degrading effect Effects 0.000 description 1
- 239000000835 fiber Substances 0.000 description 1
- 239000012634 fragment Substances 0.000 description 1
- 230000014759 maintenance of location Effects 0.000 description 1
- 238000007726 management method Methods 0.000 description 1
- 238000003199 nucleic acid amplification method Methods 0.000 description 1
- 238000012913 prioritisation Methods 0.000 description 1
- 239000004065 semiconductor Substances 0.000 description 1
- 230000011664 signaling Effects 0.000 description 1
- 238000000638 solvent extraction Methods 0.000 description 1
Images
Classifications
-
- 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/0602—Interfaces specially adapted for storage systems specifically adapted to achieve a particular effect
- G06F3/0614—Improving the reliability of storage systems
- G06F3/0619—Improving the reliability of storage systems in relation to data integrity, e.g. data losses, bit errors
-
- 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
- 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
-
- 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/14—Error detection or correction of the data by redundancy in operation
- G06F11/1479—Generic software techniques for error detection or fault masking
- G06F11/1489—Generic software techniques for error detection or fault masking through recovery blocks
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F11/00—Error detection; Error correction; Monitoring
- G06F11/30—Monitoring
- G06F11/3003—Monitoring arrangements specially adapted to the computing system or computing system component being monitored
- G06F11/3006—Monitoring arrangements specially adapted to the computing system or computing system component being monitored where the computing system is distributed, e.g. networked systems, clusters, multiprocessor systems
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F11/00—Error detection; Error correction; Monitoring
- G06F11/30—Monitoring
- G06F11/3003—Monitoring arrangements specially adapted to the computing system or computing system component being monitored
- G06F11/3034—Monitoring arrangements specially adapted to the computing system or computing system component being monitored where the computing system component is a storage system, e.g. DASD based or network based
-
- 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/0638—Organizing or formatting or addressing of data
- G06F3/064—Management of blocks
-
- 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/0653—Monitoring storage devices or systems
-
- 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/0668—Interfaces specially adapted for storage systems adopting a particular infrastructure
- G06F3/067—Distributed or networked storage systems, e.g. storage area networks [SAN], network attached storage [NAS]
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/46—Multiprogramming arrangements
- G06F9/50—Allocation of resources, e.g. of the central processing unit [CPU]
- G06F9/5083—Techniques for rebalancing the load in a distributed system
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Quality & Reliability (AREA)
- Human Computer Interaction (AREA)
- Computing Systems (AREA)
- Software Systems (AREA)
- Mathematical Physics (AREA)
- Computer Security & Cryptography (AREA)
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
Abstract
一种技术被配置为提供针对由集群的存储节点服务的卷的数据块的各种数据保护方案,诸如复制和擦除编码,集群被配置为执行数据块的去重。附加地,技术被配置为确保在提高存储节点的存储空间的同时,每个去重的数据块符合数据保护方案的数据冗余保证。为了在提高可用存储空间的同时满足数据完整性保证,存储节点根据当前适用的数据保护方案执行针对数据块的定期的垃圾收集以优化存储。
Description
技术领域
本公开涉及由集群的存储节点所服务的数据的保护,更具体地,涉及在提高由集群的存储节点所服务的数据的存储空间效率的同时对数据的保护。
背景技术
被组织为集群的多个存储节点可以提供分布式存储架构,该分布式存储架构被配置为服务由集群的一个或多个客户端发出的存储请求。存储请求是针对存储在被耦合到集群的一个或多个存储节点的存储设备上的数据。存储节点所服务的数据可以跨被体现为持久性存储设备的多个存储单元而被分布,诸如硬盘驱动、固态驱动、闪存系统或其他存储设备。存储节点可以在逻辑上将存储在设备上的数据组织为可作为逻辑单元(LUN)访问的逻辑卷(卷)。每个卷可以被实现为一组数据结构,诸如存储针对该卷的数据的数据块和描述该卷的数据的元数据块。例如,元数据可以描述,例如,标识设备上用于数据的存储位置。
具体地,卷(诸如LUN)可以被划分为数据块。为了支持增加的数据耐久性,数据块可以在存储节点之间被复制。即,为了确保在节点故障的情况下的数据完整性(可用性),冗余方案(诸如对块进行重复)可以在集群内被采用。为了提高存储效率,除重复以外的数据冗余方法(诸如擦除编码)可以被使用。与无数据被编码并且数据块的一个或多个拷贝可以从非故障节点获得的数据重复不同,一些数据利用擦除编码被编码,并在发生节点故障时被用于重构。然而,支持针对复制冗余和经擦除编码的冗余两者的集群内的相同级别的数据完整性可能对存储空间是低效的。当冗余方案之间的数据冗余级别不同时,这种低效率可能会加剧。
附图说明
本文实施例的上述和进一步的优点通过结合附图参考以下描述可以得到更好的理解,在附图中,相同的附图标记表示相同或功能相似的元件,其中:
图1是被互连为存储集群的多个存储节点的框图;
图2是存储节点的框图;
图3A是存储节点的存储服务的框图;
图3B是存储服务的示例性实施例的框图;
图4图示了存储节点的写入路径;
图5是图示了块标识符的细节的框图;
图6图示了被配置为在使可用存储空间最大化的同时提供多个数据保护方案的技术的示例工作流;
图7图示了被配置为在使可用存储空间最大化的同时提供包括擦除编码的多个数据保护方案的技术的示例工作流;以及
图8是图示了按照多个数据保护方案的用于数据块的垃圾收集的方法的操作的流程图。
具体实施方式
概述
本文描述的实施例针对一种技术,该技术被配置为针对由集群的存储节点服务的逻辑卷(“卷”)的数据块的各种数据保护方案(诸如复制和擦除编码)提高存储利用率,该集群被配置为执行数据块的去重。附加地,该技术被配置为确保在减少存储节点的存储空间的同时,每个去重的数据块符合数据保护方案的数据完整性保证。即,对于应用于数据块的多个数据保护方案,可以在维持相同数据完整性保证的同时减少提供数据完整性保证所必要的冗余信息的存储。
每个卷可以被实现为一组数据结构,诸如存储针对该卷的数据的数据块和描述该卷的数据的元数据块。卷可以被划分为数据块。被实现在每个节点中的存储服务包括:元数据层,该元数据层具有被配置为处理并存储元数据的一个或多个元数据(片)服务;以及块服务器层,该块服务器层具有被配置为处理(去重)数据并将数据存储在节点的存储设备上的一个或多个块服务。需要注意的是,块服务被配置为提供由各种数据保护方案提议的最大程度的数据保护,并且尽管卷之间具有各种数据保护方案,仍然跨卷对数据块进行去重。
当以复制(冗余)的形式提供数据保护时,存储节点的片服务最初会生成数据块的一个或多个拷贝,以存储在集群上。根据该技术,取决于数据保护方案,卷被指派给片服务。例如,当提供数据的三重复制保护时,片服务通过将数据块同步地拷贝(复制)到集群中存储节点的附加片服务的持久性存储中来生成数据块的三个拷贝(即,原始拷贝0、拷贝1和拷贝2)。然后,通过异步地将数据块拷贝刷新到相应的块服务,数据块的拷贝从本质上被表示为集群的复本(即,原始复本0、复本1和复本2)。因此,卷的块可以被指派给原始复本0(R0)块服务、以及主复本1(R1)块服务和辅助复本2(R2)块服务。每个复制的数据块被说明性地组织在由每个节点的块服务所维持的指定容器中,以存储在存储设备上。每个容器基于最大复制方案被指派给一个或多个块服务。说明性地,对于三重复制数据保护方案,三个块服务被指派给每个容器。片服务计算容器编号并查阅容器指派表,以标识具有写入了数据块的对应块服务的存储节点。
根据该技术,数据块还与其对应保护方案的指示相关联(标记)。例如,具有双重复制数据保护的卷的数据块(即,每个数据块具有一个复本)可以将数据块指派给两个块服务,因为R0数据块被指派给R0块服务,而R1数据块被指派给相同容器但被指派给不同的块服务,即主R1块服务。说明性地,数据块可以属于具有双重复制数据保护的第一卷和具有三重复制数据保护的不同的第二卷。该技术确保数据块有足够的复本来满足具有更高(最高)数据完整性保证(即,最高数据保护方案)的卷。说明性地,节点的片服务然后可以基于复制方案发出存储请求以将数据块的拷贝(例如,针对双重复制,拷贝R0、R1;或者,针对三重复制,拷贝R0-R2)异步地刷新到与所标识的存储节点相关联的块服务。
当以擦除编码的形式提供数据保护时,块服务可以选择要擦除编码的数据块。数据块集合然后可以被分组在一起以形成写入组进行擦除编码。说明性地,写入组成员资格由变化的容器组来指导,使得数据针对故障具有弹性,例如基于使容器标识符中位的子集变化而进行的指派。片服务将不同容器的数据块和复本路由到其关联的块服务。实施方式随被选择用来部署的EC方案而变化(例如,用于校正的4个数据块和2个编码块,称为4+2EC)。块服务根据密码散列将数据块指派给容器,并基于部署的EC方案将若干不同容器分组在一起,例如,在4+2EC方案中,4个容器可以被分组在一起(即,4个未编码数据块+2个具有校正信息的编码块),而在8+1EC方案中,8个容器可以被分组在一起。来自不同容器的块的写入组可以被从根据容器临时假脱机的数据块中选择。即,写入组的不同容器的数据块被根据容器从临时假脱机的块池中按照容器选择(即,拾取),以表示对具有对数据丢失有弹性的不同故障域的容器的广泛选择。注意,仅数据块(即,未编码块)需要被指派给容器,而通过参考写入组的数据块,编码块可以被简单地与写入组相关联。
在示例中,考虑具有使用双重复制的第一数据保护方案和使用4+1擦除编码的第二数据保护方案的块,使得每个方案针对任何一个块的不可用性具有单个冗余。块可以被分组为集合,4个块组成一个集合,并且擦除编码方案可以被应用以形成编码块(例如,奇偶校验块),从而针对4个块组成的每个集合,产生5个块,而不是针对复制方案,产生4个块和4个副本(即,总共8个块)。需要注意的是,该技术根据策略允许基于满足针对块的相同冗余级别的有能力的保护方案的集合逐个块地选择保护方案(例如,4+1EC或双重复制)。例如,面向性能的策略可以选择双重复制方案,在该双重复制方案中,块的未编码拷贝始终可用,而无需进行奇偶校验计算。另一方面,面向存储空间的策略可以选择EC方案以消除复本,从而更有效地使用存储。说明性地,来自上述双重复制方案的4个副本和来自4+1EC方案的5个块(总共9个块)可以被消耗以存储4个数据块。这样,为了维持单个故障冗余,重复块中的四个可以被消除,从而在维持针对单个故障有相同数据完整性保证的同时减少存储节点的存储空间。
为了在提高可用存储空间的同时满足数据完整性保证,存储节点可以根据当前适用的数据保护方案针对数据块执行定期的垃圾收集以优化存储。存储节点的片服务管理片文件中每个卷的元数据,并在垃圾收集时间针对每个数据保护方案生成列表或布隆过滤器。布隆过滤器标识当前与数据保护方案相关联的数据块,并且块服务使用布隆过滤器来确定针对它们管理的任何数据块的数据保护方案是否可能已改变。如果针对数据块的(多个)适用数据保护方案(即,有能力的保护方案的集合)已改变,则块服务可以根据策略和当前适用的方案来改善(例如,减少冗余信息)数据块的存储消耗(例如,更好的性能、更好的存储空间效率),以维持与已改变的(即,当前的)块相关联的数据完整性级别。即,随着冗余方案被改变,与当前块相关联的数据的相同冗余水平可以被维持。
例如,数据块可以用双重复制方案和三重复制方案来标记。这样,数据块的原始拷贝和两个拷贝(即,复本0、复本1和复本2)被存储以符合双重和三重保护方案。如果三重复制方案不再适用于数据块(例如,三重复制标签被消除),则数据块的第三拷贝(即,复本2)可以被移除,仅保留复本0和1被存储下来以符合剩余的与数据块相关联的双重复制方案。如果与数据块相关联的数据保护方案被进一步更改为擦除编码方案并且存储空间效率策略被选取,则数据块可以被包括在具有单个奇偶校验保护的写入组中并且数据块的第二拷贝(即,复本1)可以被移除,使得数据块具有与双重复制方案相同的冗余级别。然而,如果性能策略被选取,则复本1可能不会被消除。需要注意的是,数据保护方案的改变是从块可用的有能力的保护方案的集合选择的。
当应用存储空间效率策略时,即使在擦除码的冗余级别大于用于复制的冗余级别时,也可能会发生其他冗余信息节省。例如,考虑上述使用双重复制的4个块组成的集合(总共8个块,有4个是冗余块)来防止出现任何单个随机故障。相同的4个块可以采用4+2EC方案(总共6个块,有2个奇偶校验块)来防止出现任何两个随机故障。尽管数据完整性保证可能会增加(即,2个块可能会发生故障),但可能需要少2个块。说明性地,10个块最初被存储:4个原始数据块、通过复制方案的4个复本和通过EC方案的2个奇偶校验块。此后,复本中的4个可以被消除,留下6个块被EC方案使用(即,4个数据块和2个奇偶校验块),比复制方案单独使用的块具有更高级别的数据完整性。对于更大的擦除编码方案,诸如基于里德-所罗门码的8+3EC,节省可能更加明显:双重复制方案需要16个块(8个数据块+8个冗余块),而8+3EC(8个数据块+3个奇偶校验块)方案仅采用11个块。因此,支持3个随机故障所需的块数减少了7个,而以前只有1个随机故障是可能的。
说明
存储集群
图1是被互连为存储集群100并且被配置为针对被组织并且存储在集群的存储设备上的信息(即,数据和元数据)提供存储服务的多个存储节点200的框图。存储节点200可以通过集群交换机110互连,并且包括协作以提供集群100的分布式的、经扩展的存储架构的功能组件。每个存储节点200的组件包括硬件和软件功能性,该硬件和软件功能性使节点能够通过计算机网络130连接到一个或多个客户端120并为其服务,也使节点能够连接到存储设备的存储阵列150,从而根据分布式存储架构给予存储服务。
每个客户端120可以被体现为通用计算机,该通用计算机被配置为根据信息传递的客户端/服务器模型与存储节点200交互。即,客户端120可以请求节点200的服务,并且借助通过网络130交换分组,节点可以返回客户端所请求的服务的结果。当访问存储对象(诸如文件和目录)形式的存储节点上的信息时,客户端可以发出包括基于文件的访问协议的分组,诸如通过传输控制协议/互联网协议(TCP/IP)的网络文件系统(NFS)和公共互联网文件系统(CIFS)协议。然而,在一个实施例中,当访问存储对象(诸如逻辑单元(LUN))形式的信息时,客户端120说明性地发出包括基于块的访问协议的分组,诸如通过TCP(iSCSI)封装的小型计算机系统接口(SCSI)协议和通过FC(FCP)封装的SCSI。
图2是存储节点200的框图,该存储节点200被说明性地体现为计算机系统,该计算机系统具有通过系统总线280互连的一个或多个处理单元(处理器)210、主存储器220、非易失性随机存取存储器(NVRAM)230、网络接口240、一个或多个存储控制器250和集群接口260。网络接口240可以包括一个或多个端口,该端口适于通过计算机网络130将存储节点200耦合到(多个)客户端120,该计算机网络130可以包括点对点链接、广域网、通过公共网络(互联网)或共享局域网实现的虚拟专用网。网络接口240因此包括将存储节点连接到网络130所需的机械、电气和信令电路系统,该网络可以包含以太网或光纤通道(FC)网络。
主存储器220可以包括可由处理器210寻址的存储器位置,用于存储与本文描述的实施例相关联的软件程序和数据结构。处理器210还可以包括处理元件和/或逻辑电路系统,该处理元件和/或逻辑电路系统被配置为执行软件程序(诸如存储服务300的一个或多个元数据服务320a-n和块服务610-660)并操纵数据结构。操作系统225,其部分通常驻留在存储器220中(内核中)并且由处理元件(例如,处理器210)执行,尤其通过调用由节点实现的存储服务300所支持的操作来从功能上组织存储节点。合适的操作系统225可以包括通用操作系统(诸如系列或Microsoft系列的操作系统)或具有可配置功能性的操作系统(诸如微内核和嵌入式内核)。然而,在本文描述的实施例中,操作系统说明性地是操作系统。对于本领域技术人员将显而易见的是,其他处理和存储器部件,包括各种计算机可读介质,都可以被用来存储和执行与本文的实施例有关的程序指令。
存储控制器250与在存储节点200上实现的存储服务300协作以访问客户端120所请求的信息。该信息优选地被存储在被说明性地体现为闪存设备的存储设备(诸如内部固态驱动(SSD)270)以及外部存储阵列150(即,附接到节点的附加存储阵列)的SSD上。在一个实施例中,闪存设备可以是基于NAND闪存组件的面向块的设备(即,作为块被访问的驱动),例如,单层单元(SLC)闪存、多层单元(MLC)闪存或三层单元(TLC)闪存,尽管本领域技术人员可以理解,其他面向块的、非易失性的固态电子设备(例如,基于存储类存储器组件的驱动)可能被有利地与本文描述的实施例一起使用。存储控制器250可以包括具有I/O接口电路系统的一个或多个端口,该I/O接口电路系统通过I/O互连布置(诸如传统的串行附接的SCSI(SAS)和串行ATA(SATA)拓扑)耦合到SSD 270。
集群接口260可以包括适于将存储节点200耦合到集群100的(多个)其他节点的一个或多个端口。在一个实施例中,双10Gbps以太网端口可以被用于节点间通信,尽管对于本领域技术人员显而易见的是其他类型的协议和互连也可以被用在本文描述的实施例内。NVRAM 230可以包括备用电池或能够将鉴于故障的数据保持到存储节点和集群环境的其他内置型最后状态保留能力(例如,非易失性半导体存储器,诸如存储类存储器)。
存储服务
图3A是由存储集群100的每个存储节点200实现的存储服务300的框图。存储服务300被说明性地组织为与节点200的其他功能组件协作以提供集群100的分布式存储架构的一个或多个软件模块或层。在一个实施例中,分布式存储架构聚集并且虚拟化组件(例如,网络、存储器和计算资源)以呈现具有大存储池(即,所有存储,包括针对整个集群100的节点200的内部SSD 270和外部存储阵列150)的单个存储系统的抽象。换句话说,该架构合并整个集群的存储以支持LUN的存储,每个LUN可以被分派到具有4096字节(4KB)或512字节的逻辑块大小的一个或多个逻辑卷(“卷”)中。每个卷还可以被配置有诸如大小(存储容量)和性能设置(服务质量)之类的属性以及访问控制,并且此后可以作为块存储池被客户端访问(即,被导出到客户端),优选地经由iSCSI和/或FCP。然后,存储容量和性能可以通过将节点200的网络、存储器和计算资源增长(添加)到集群100而被“扩展”。
每个客户端120可以发出分组作为输入/输出(I/O)请求,即存储请求,以访问存储节点200所服务的卷的数据,其中存储请求可以包括要在卷上存储的数据(即,写入请求)或要从卷中检索的数据(即,读取请求)、以及基于卷的逻辑块大小和长度的针对卷的逻辑块地址(LBA)或索引形式的客户端寻址。客户端寻址可以被体现为元数据,该元数据与分布式存储架构内的数据分开,使得集群中的每个节点可以将元数据和数据存储在被耦合到节点的存储设备中的不同存储设备上(例如,SSD 270a-n上的数据和SSD 270x上的元数据)。为此,在每个节点200中实现的存储服务300包括:元数据层310,具有被配置为例如在SSD270x上处理和存储元数据的一个或多个元数据服务320a-n;以及块服务器层330,具有被配置为例如在SSD 270a-n上处理和存储数据的一个或多个块服务610-660。例如,元数据服务320a-n在客户端访问卷上的数据所用的客户端寻址(例如,LBA索引)与块服务610-660存储和/或检索(例如SSD的)卷上的数据所用的块寻址(例如,块标识符)之间映射。
图3B是存储服务300的替代实施例的框图。当向存储节点发出存储请求时,客户端120通常连接到节点所导出的卷(例如,经由索引或LBA)。为了提供有效的实现,元数据层310可以可替代地被组织为一个或多个卷服务350a-n,其中每个卷服务350可以执行元数据服务320的功能,但是以卷的粒度,即处理和存储针对卷的元数据。然而,针对卷的元数据可能太大,以至于单个卷服务350无法处理和存储;因此,多个片服务360a-n可以被与每个卷服务350相关联。因此,针对卷的元数据可以被划分为片,并且元数据的片可以在每个片服务360上被存储和处理。响应于针对卷的存储请求,卷服务350确定哪个片服务360a-n包含针对该卷的元数据,并将请求转发给适当的服务360。
图4图示了用于将数据存储在存储阵列150的卷上的存储节点200的写入路径400。在一个实施例中,由客户端120发出并在集群100的存储节点200(例如,主节点200a)处接收的示例性写入请求可以具有以下形式:
写入(volume,LBA,data)
其中volume指定要写入的逻辑卷,LBA是要写入的逻辑块地址,并且data是要写入的数据的逻辑块大小。说明性地,由存储节点200a的片服务360a接收的数据被划分为4KB的块大小。在框402中,每个4KB数据块使用常规的密码散列函数来进行散列,以生成128位(16B)散列值(被记录为数据块的块标识符(ID));说明性地,块ID被用于寻址(定位)在内部SSD 270以及外部存储阵列150上的数据。因此,块ID是基于数据块的内容而生成的该数据块的标识符。常规的密码散列函数,例如Skein算法,在该技术所采用的16B散列值/块ID内提供令人满意的随机位分布。在框404中,数据块使用常规的例如LZW(蓝波-立夫-卫曲)压缩算法来压缩,并且在框406a中,压缩后的数据块被存储在NVRAM 230中。注意,在一个实施例中,NVRAM 230被体现为写入缓存。然后,每个压缩的数据块被同步复制到集群100中的一个或多个附加存储节点(例如,辅助存储节点200b)的NVRAM 230,以进行数据保护(框406b)。当数据块已被安全且持久地存储在集群100的多个存储节点200a、200b的NVRAM230a、230b中时,确认被返回给客户端。
图5是图示了块标识符的细节的框图。在一个实施例中,针对数据块的内容502被存储服务300接收。如上所述,接收到的数据被划分为具有内容502的数据块,该内容可以使用散列函数504来处理以确定块标识符(ID)506。即,数据被划分为4KB的数据块,并且每个数据块被散列处理以生成被记录为数据块的块ID 506的16B散列值;说明性地,块ID 506被用于将数据定位在存储阵列150的一个或多个存储设备270上。数据被说明性地组织在由块服务610-660维持的容器中以存储在存储设备上。容器可以通过从块ID 506提取预定义数量的位而被从块ID导出,以存储对应的数据块。
在一个实施例中,容器可以通过延展从块ID提取的预定义数量的位而被划分为桶或“子列表”。例如,块ID的容器字段508可以包含块ID 506的前两个(例如,最高有效)字节(2B),该字节被用于生成标识容器的0到65535(取决于所使用的16位的数量)之间的容器编号(标识符)。容器标识符还可以被用于标识特定的块服务610-660和关联的SSD270。子列表字段510然后可以包含块ID的下一个字节(1B),该字节被用于生成标识带有容器的子列表的0到255(取决于所使用的8位的数量)之间的子列表标识符。在存储节点发生故障或崩溃的情况下,将容器划分为子列表尤其有助于在块服务之间进行数据的网络传输(或同步)。针对子列表标识符使用的位数可以被设置为初始值,然后根据需要稍后进行调整。每个块服务610-660维持块ID和数据块在其相关联的存储设备/SSD(即,块服务驱动(BSD))上的位置之间的映射。
说明性地,块ID(散列值)可以被用于根据SSD的容量以均匀平衡(分布式)布置在容器之间分布数据块,其中平衡布置基于SSD之间的“耦合”,即,每个节点/SSD与不在集群的同一故障域(即,保护域)中的任何其他节点/SSD共享大致相同数量的容器。这对于在发生故障(即,重建)的情况下重建数据是有利的,使得所有SSD都会执行大致相同量的工作(例如,读取/写入数据),以通过在集群的存储节点所有SSD之间平均分布工作来实现快速有效的重建。在一个实施例中,每个块服务维持块ID到在被耦合到节点的存储设备(例如,内部SSD 270和外部存储阵列150)上的数据块位置的映射。
说明性地,容器指派可以被存储在跨集群的分布式键-值存储中。再次参照图4,分布式键-值存储可以被体现为例如“动物园管理员”数据库450,该数据库被配置为提供分布式、无共享(即,没有单点竞争和故障)的数据库,该数据库被用于存储容器指派(例如,容器指派表)和跨集群的所有节点一致的配置信息。在一个实施例中,一个或多个节点200c具有与动物园管理员数据库450相关联的服务/过程,该服务/过程被配置为结合数据结构(例如,容器指派表470)来维持容器指派(即,映射)。说明性地,分布式动物园管理员被驻留在集群中的多达五个(5)被选择的节点上,其中所有其他节点都连接到被选择的节点之一以获得容器指派信息。因此,这些被选择的“动物园管理员”节点已复制了分布在集群中节点的不同故障域之间的动物园管理员数据库图像,使得没有动物园管理员数据库的单点故障。换句话说,其他节点向其最近的动物园管理员数据库图像(动物园管理员节点)发出动物园管理员请求,以获得当前的容器指派,这些容器指派然后可以被缓存在节点处以改善访问时间。
对于被接收并被存储在NVRAM 230a、230b中的每个数据块,片服务360a、360b计算对应的容器编号,并查询容器指派表470,以标识写入有数据块的SSD 270a、270b。在框408a、408b中,存储节点200a、200b的片服务360a、360b然后发出存储请求,以将压缩数据块的拷贝异步地刷新到与所标识的SSD相关联的块服务(说明性地,被标记为610、620)。由每个片服务360a、360b发出并在每个块服务610、块服务620处被接收的示例性存储请求可以具有以下形式:
存储(块ID,压缩的数据)
针对每个SSD 270a、270b(或外部存储阵列150的存储设备)的块服务610、620确定它是否先前已存储了数据块的拷贝。如果否,则块服务610、620将与块ID相关联的压缩数据块存储在SSD 270a、270b上。注意,聚合的SSD的块存储池是通过块ID的内容来组织的(而不是写入数据的时间或数据的来源),从而提供了集群的“内容可寻址”的分布式存储架构。除了存储在集群的至少两个SSD上的每个数据块的至少两个拷贝以外,这种内容可寻址的架构有助于在SSD级别“自动”对数据进行去重(即,“免费”)。换句话说,分布式存储架构利用数据的单次复制以及对数据的其他拷贝的在线去重,即,在硬件故障的情况下,出于冗余目的,至少存在两个数据拷贝。
针对变化的保护方案提高可用存储空间
本文描述的实施例针对一种技术,该技术用于针对集群的存储节点所服务的逻辑卷的数据块的各种数据保护方案(诸如复制和擦除编码)提高存储利用率,该集群被配置为执行数据块的去重。另外,该技术被配置为确保在提高存储节点的存储空间的同时每个去重的数据块符合数据保护方案的数据完整性保证。即,对于应用于数据块的多个数据保护方案,可以在维持相同数据完整性保证的同时减少提供数据完整性保证所必要的冗余信息的存储。
如上所述,被实现在每个节点中的存储服务包括:元数据层,该元数据层具有被配置为处理并存储元数据的一个或多个元数据(片)服务;以及块服务器层,该块服务器层具有被配置为处理(去重)数据并将数据存储在节点的存储设备上的一个或多个块服务。需要注意的是,块服务被配置为提供由各种数据保护方案提议的最大程度的数据保护,并且尽管卷之中具有变化的数据保护方案,仍然跨卷对数据块进行去重。
当以复制(冗余)的形式提供数据保护时,存储节点的片服务生成数据块的一个或多个拷贝,以存储在集群上。说明性地,片服务基于数据块的密码散列计算针对数据块的对应容器编号,并查询(即,查找)容器指派表以标识要将数据块存储到(即,写入)的存储节点。按照这种方式,容器指派表追踪集群内数据块的拷贝。然后,附加节点的片服务发出存储请求,以将数据块的拷贝异步地刷新到与所标识的存储节点相关联的块服务。
根据该技术,取决于数据保护方案,卷被指派给片服务。例如,当提供数据的三重复制保护时,片服务最初会通过将数据块同步地拷贝(复制)到集群中存储节点的附加片服务的持久性存储(例如,NVRAM)来生成数据块的三个拷贝(即,原始拷贝0、拷贝1和拷贝2)。然后,通过异步地将数据块拷贝刷新到相应的块服务,数据块的拷贝从本质上被表示为集群的复本(即,原始复本0、复本1和复本2)。因此,卷的块可以被指派给原始复本0(R0)块服务、以及主复本1(R1)块服务和辅助复本2(R2)块服务。每个复制的数据块被说明性地组织在由每个节点的块服务所维持的指定容器中,以存储在存储设备上。每个容器基于最大复制方案被指派给一个或多个块服务。说明性地,对于三重复制数据保护方案,三个块服务被指派给每个容器。说明性地,每个片服务计算针对数据块的对应容器编号,并查阅(例如,使用容器编号作为索引来查找)容器指派表470以标识写入有数据块的存储节点。
根据该技术,数据块还与其对应保护方案的指示相关联(标记)。例如,具有双重复制数据保护的卷的数据块(即,每个数据块具有一个复本)可以将数据块指派给两个块服务,因为R0数据块被指派给R0块服务,而R1数据块被指派给相同容器但被指派给不同的块服务,即主R1块服务。说明性地,数据块可以属于具有双重复制数据保护的第一卷和具有三重复制数据保护的不同的第二卷。该技术确保数据块有足够的复本来满足具有更高数据完整性保证(即,最高数据保护方案)的卷。说明性地,节点的片服务然后可以基于保护方案发出存储请求以将数据块的拷贝(例如,针对双重复制,拷贝R0、R1;或者,针对三重复制,拷贝R0-R2)异步地刷新到与所标识的存储节点相关联的块服务。
当以擦除编码的形式提供数据保护时,块服务可以选择要擦除编码的数据块。当使用擦除编码时,除了数据块以外,存储节点还使用擦除码从算法上生成编码块。通常,擦除码算法,诸如里德-所罗门,使用数据的n个块来创建附加的k个块(n+k),其中k是针对数据保护所使用的复制或“奇偶校验”的编码块的数量。擦除编码的数据允许从n+k个块中的任何n个块中重构丢失的块。例如,8+3擦除编码方案,即,n=8和k=3,将数据的八个块转换为十一个数据/奇偶校验块。响应于读取请求,数据然后可以被从这十一个块中的任何八个块重构(如果需要)。需要注意的是,读取优选地被从八个未编码数据块执行,并且重构在一个或多个未编码数据块不可用时被使用。
数据块集合然后可以被分组在一起以形成写入组进行擦除编码。说明性地,写入组成员资格由变化的容器组来指导,使得数据针对故障具有弹性,例如基于使容器标识符中位的子集变化而进行的指派。片服务将不同容器(例如,具有不同的容器组)的数据块和复本路由到其关联的块服务。实施方式随被选择用来部署的EC方案而变化(例如,用于校正的4个数据块和2个编码块,4+2EC)。块服务根据密码散列将数据块指派给容器,并基于部署的EC方案将若干不同容器分组在一起,例如,在4+2EC方案中,4个容器可以被分组在一起,而在8+1EC方案中,8个容器可以被分组在一起。来自不同容器的块的写入组可以被从根据容器临时假脱机的数据块中选择。即,写入组的不同容器的数据块从临时假脱机的块池中按照容器选择,以表示对具有对数据丢失有弹性的不同故障域的容器的广泛选择。注意,仅数据块(即,未编码块)需要被指派给容器,而通过参考写入组的数据块,编码块可以被简单地与写入组相关联。
在示例中,考虑到块具有使用双重复制的第一数据保护方案和使用4+1擦除编码的第二数据保护方案,使得每个方案针对任何一个块的不可用性具有单个冗余。块可以被分组为集合,4个块组成一个集合,并且擦除码方案可以被应用以形成编码块(例如,奇偶校验块),从而针对4个块组成的每个集合,产生5个块,而不是针对复制方案,产生4个块和4个副本(即,总共8个块)。需要注意的是,该技术根据策略允许基于满足针对块的相同冗余级别的有能力的保护方案的集合逐个块地选择保护方案(例如,4+1EC或双重复制)。例如,面向性能的策略可以选择双重复制方案,在该双重复制方案中,块的未编码拷贝始终可用,而无需进行奇偶校验计算。另一方面,面向存储空间的策略可以选择EC方案以消除复本,从而更有效地使用存储。说明性地,来自上述双重复制方案的4个副本和来自4+1EC方案的5个块(总共9个块)可以被消耗以存储4个数据块。这样,为了维持单个故障冗余,重复块中的四个可以被消除,从而在维持针对单个故障有相同数据完整性保证的同时减少存储节点的存储空间。在一个实施例中,策略可以被管理员在创建卷时选择。
当应用存储空间效率策略时,即使在擦除码的冗余级别大于用于复制的冗余级别时,也可能会发生其他冗余信息节省。例如,考虑上述使用双重复制的4个块组成的集合(总共8个块,有4个是冗余块)来防止出现任何单个随机故障。相同的4个块可以采用4+2EC方案(总共6个块,有2个奇偶校验块)来防止出现任何两个随机故障。尽管数据完整性保证可能会增加(即,2个块可能会发生故障),但可能需要少2个块。说明性地,10个块最初被存储:4个原始数据块、通过复制方案的4个复本和通过EC方案的2个奇偶校验块。此后,复本中的4个可以被消除,留下6个块被EC方案使用(即,4个数据块和2个奇偶校验块),比复制方案单独使用的块具有更高级别的数据完整性。对于更大的擦除编码方案,诸如基于里德-所罗门码的8+3EC,节省可能更加明显:双重复制方案需要16个块(8个数据块+8个冗余块),而8+3EC(8个数据块+3个奇偶校验块)方案仅采用11个块。因此,支持3个随机故障所需的块数减少了7个,而以前只有1个随机故障是可能的。
说明性地,容器以优化擦除编码过程的方式被指派给容器组。例如,在三重复制数据保护方案的情况下,其中每个容器的三个复本版本(原始复本0、主复本1和辅助复本2)被生成,则容器组中的容器被指派使得容器的原始复本0版本跨多个不同块服务被指派,容器的主复本1版本被指派到不同的块服务,并且容器的辅助复本2版本被指派到另一不同的块服务。数据块可以根据基于复制的数据保护方案被存储在容器中,直到足够数量的块可用于所选择的擦除编码部署为止。不同块服务中用作主复本的一个块服务(主复制块服务)协调擦除编码过程,并从每个容器中选择是候选的数据块来进行擦除编码。主复本块服务与保持未编码的数据块一起形成写入组,并生成一个或多个编码奇偶校验块,例如,主编码奇偶校验块和辅助编码奇偶校验块。如本领域技术人员所知的,多种擦除编码算法可以被采用,诸如里德-所罗门。编码奇偶校验块可以与用于生成编码块的每个数据块的块标识符一起被存储。每个复本块服务为数据块的未编码拷贝更新其元数据映射,以指向(即,引用)在存储设备上的编码数据块(例如,主编码奇偶校验块和辅助编码奇偶校验块)位置,使得对数据块的任何读取请求都可以返回编码块。需要注意的是,编码块可以被枚举(即,主、辅助等)以支持非对称擦除编码方案。在存储和更新针对编码块的映射之后,主复本块服务可以在维持复本0的同时释放写入组中的数据块的未编码附加复本所占用的存储空间。
为了在提高可用存储空间的同时满足数据完整性保证(即,减少重复数据块的不必要的存储),存储节点根据当前适用的数据保护方案针对数据块执行定期的垃圾收集以增加存储。存储节点的片服务管理片文件中每个卷的元数据,并在垃圾收集时间针对每个数据保护方案生成列表或布隆过滤器。布隆过滤器标识当前与数据保护方案相关联的数据块,并且块服务使用布隆过滤器来确定针对它们管理的任何数据块的数据保护方案是否可能已改变。
如果针对数据块的(多个)适用数据保护方案已改变,则块服务根据当前适用的方案来优化(例如,减少冗余信息)数据块的存储,以维持先前与已改变的块相关联的数据完整性级别。即,当冗余方案被改变时,与已改变的块相关联的数据的相同冗余水平被改变。例如,数据块可能先前已经与双重复制方案和三重复制方案都相关联。为了符合三重复制方案,数据块的原始拷贝和两个拷贝(即复本0、复本1和复本2)已被存储。如果三重复制方案不再适用于数据块,则数据块的第三拷贝可以被移除,仅保留复本0和1被存储,以符合剩余双重复制方案的数据完整性保证。
图6和图7图示了用于在提高针对集群的可用存储空间的同时提供多个数据保护方案的示例工作流。应该注意,工作流用表示操作阶段的一系列字母A-G来注释。尽管针对(多个)工作流进行了排序,但是这些阶段图示了一个示例以帮助理解本公开,并且不应被用来限制权利要求书。落入权利要求书范围内的主题可以关于顺序和一些操作而变化。需要注意的是,随着存储节点被添加到集群中(即,集群被扩展),数据块和冗余信息(例如,奇偶校验块和复本)可以在集群内被重新平衡,因为容器在经扩展的集群中被重新指派。
参照图6的示例工作流600,每个存储节点200a-c分别包括片服务360a-c和块服务610-630。每个块服务610-630分别托管容器1-0、容器1-1和容器1-2,其中每个容器被指派给其对应的块服务并由其对应的块服务管理。在阶段A之前,数据块A和数据块B从一个或多个客户端120被接收,以存储在存储节点200a-c中。来自客户端的写入请求包括数据块,并标识要在其上存储数据的卷。存储节点200a的片服务360a用作管理(原始)片服务,并处理来自客户端的请求(即,面向客户端的片服务)。片服务360a管理在跨存储节点200b、200c被复制到片服务360b和360c的片文件607a和片文件607b(统称为片文件607)中的元数据。说明性地,片文件与卷具有一对一关系(即,关联):片文件607a存储针对卷1的元数据,并且片文件607b存储针对卷2的元数据。当针对特定卷接收到请求时,片服务360a相应地更新对应的片文件。例如,块B与针对卷2的写入请求一起被接收,因此片服务360a通过指示块B与卷2相关联来相应地更新片文件607b。片服务360a还向片服务360b和360c通知片文件的更新,并提供针对该更新的元数据。
响应于对块B的写入请求,片服务360a准备块B以供对应的块服务610存储。如前所述,数据块由根据容器指派表470被指派给每个块服务的容器来存储。如所指出的,数据块可以基于针对数据块的块ID 506的前导位(即,容器字段508的前导位)被指派给容器。同样如前所述,块ID可以基于数据块的密码散列而生成,并且然后数据块被存储在与容器字段508的容器标识符相对应的容器中。例如,假设块B具有块ID,该块ID具有容器字段508中为“1”的前导位,因此其被指派给容器1-0,然后容器1-0被指派给块服务610。注意,作为去重的结果,单个数据块可能与多个卷相关联。说明性地,如片文件607中所指示,块A与卷1和卷2都相关联,但是仅在容器1-0中存储一次,以便保留存储空间。在一个实施例中,块被与块ID 506一起存储,使得块服务通过确定具有相同散列标识符的块已经被存储来避免存储该块的重复拷贝。
根据该技术,数据块可以具有多个适用的数据保护方案。数据保护方案可以包括如图6所示的双重复制(复制)和三重复制、以及如图7所示的擦除编码或其他技术,以实现数据耐久性。如片文件607所指示,数据保护方案可以按照每个卷为基础来配置,例如,卷1配置有三重复制数据保护方案,而卷2配置有双重复制数据保护方案。属于多个卷的单个数据块(诸如块A)可以具有变化的数据保护方案,因此具有变化的数据保护要求。本文描述的技术确保了每个数据块都受到使用该数据块的任何一个卷所配置的最高级别保护方案(即具有最高故障容限的最大数据完整性保证)的保护。例如,属于配置有双重复制方案的卷2和配置有三重复制方案的卷1的数据块受到三重复制方案的保护,该方案提供了更大的保护,因为它可以容忍两个故障,而不仅仅是一个故障。结果,如卷1的三重复制方案所要求的,块A总共被存储了三次,即使也包括块A的卷2仅需要两重复制。说明性地,然而,根据卷2的双重保护方案,块B仅被存储两次。
为了支持数据保护方案,容器的复本被生成并且跨集群的块服务被指派。在一个实施例中,容器可以包含来自多个卷的数据块,其中每个容器也被配置为支持可用的最高级别数据保护方案,即使最高保护方案当前没被容器中的任何数据块利用。也就是说,容器基于数据保护能力被全局地(即,跨集群)指派给块服务,即使当前没有卷或数据正在使用最高级别数据保护。例如,在图6中,最高级别保护方案是三重复制,因此,除了托管数据块的复本0拷贝的容器外,每个容器的两个复本被创建并被指派给块服务。说明性地由块服务610维持的容器1-0托管块A和块B的未编码版本/复本0拷贝。说明性地由块服务620维持的容器1-1托管如由“托管复本”记号“容器1-1”的“-1”所指示的数据块的复本1(R1)拷贝。类似地,说明性地由块服务630维持的容器1-2托管如由托管复本记号“容器1-2”的“-2”所指示的数据块的复本2(R2)拷贝。具体而言,容器1-1托管块A和块B的R1拷贝,并且容器1-2托管块A的R2拷贝。需要注意的是,容器指派服务(未示出)可以指派容器(即,创建和修改容器指派表470),使得容器跨不同的故障域而被定位,诸如,例如,不同的SSD、不同的存储节点和/或不同的节点机箱。
说明性地,在阶段A,片服务360a接收指示块A应该被从卷1中删除的命令609。片服务360a通过移除卷1和块A之间的映射来相应地更新片文件607a,如由图6中的X所指示。更新的片文件607a(即,元数据更新)跨适当的片服务被复制。片服务可以延迟向块服务的命令传输,以删除块A的原始拷贝或任何拷贝,以避免小的随机删除操作对性能的影响。相反,块服务的输入/输出(I/O)性能(例如,SSD 270的I/O性能)可以通过为计划的垃圾收集时段保存删除操作来改善,从而对SSD的写入可以被联动。
说明性地,在阶段B,片服务开始执行垃圾收集以移除未使用的数据块。垃圾收集可以被定期执行,诸如每小时一次或每天一次。在启动垃圾收集过程之前,片服务可以使用垃圾收集应该被执行的共识协议进行通信。在一个实施例中,在当前I/O请求负载超过负载阈值或超过仍然可用的存储空间量的空间阈值时(即,垃圾收集不那么必要),片服务可以反对开始垃圾收集。相反,当可用存储空间量降至最小空间阈值以下时,片服务可以请求在预计的定期垃圾收集时间以外进行垃圾收集。在一个实施例中,作为垃圾收集过程的一部分,片服务检查(即,遍历或跨越)片文件607以标识当前由集群的卷使用的数据块并生成块清单608。说明性地,块清单608包括针对所采用的每个数据保护方案的块的列表,例如,针对双重复制块的列表和针对三重复制块的列表。可替代地,块清单608可以包含其他数据结构,诸如布隆过滤器或块ID的范围,以指示正在使用哪些块,使得未使用的块可以通过垃圾收集而被移除以提高存储效率。块清单608还可以包括正在使用的块的主列表,而不管相关联的数据保护方案如何。
说明性地,在阶段A,块A未从卷1映射,这是唯一需要对块A进行三重复制的卷。由于片服务在阶段B期间遍历片文件607,因此块A未被包括在三重复制的块的列表中,并且仅被包括在双重复制的块的列表中。在生成块清单608之后,片服务可以将块清单608发布到块服务。在一个实施例中,片服务进行的发布可以通过将针对块清单608的存储位置发送到块服务或向块服务通知和提供块清单608以执行垃圾收集来实现。
在阶段C,块服务继续进行垃圾收集过程。使用块清单608,每个块服务将存储在其指派的容器中的数据块的块ID与块清单608进行比较,以确定数据块是否仍在使用中因此是否要删除。块服务基于与当前正在分析的容器相关联的数据保护方案来检查列表。例如,块服务630将存储在容器1-2中的数据块的块ID与针对三重复制块的块清单608的块ID进行比较,因为容器1-2是容器1的复本2因此仅包含三重复制的块。块服务620将块1-1的块ID与块清单608中的双重复制列表和三重复制列表进行比较,以确定块是否仍在使用,因为块1-1可以托管针对两种数据保护方案的块。
可替代地,在一些实施方式中,片服务可以生成块清单608,使得所有三重复制的块也被列出在针对双重复制块的清单中,因为三重复制的块也固有地是双重复制的。在这样的实施方式中,块服务620可以仅针对双重复制的块来检查列表。类似地,托管数据块的主(原始)拷贝的块服务610可以检查块清单608中的两个列表(即,双重和三重复制的块列表),或者可以检查块的主列表(未描绘)。如果针对存储的数据块的块ID未在块清单608的适当列表中找到,则块服务可以删除或释放不再使用的数据块的存储空间。
说明性地,作为阶段C的垃圾收集过程的一部分,由于块A不再需要被三重复制,因此块服务630从复本2容器1-2中删除块A。为了增加可用的存储空间,该技术被配置为以仍然满足任何适用的数据保护方案的有效方式来存储数据块。作为阶段A的命令609的结果,块A被从需要双重复制保护方案的卷1移除,但仍被包括在配置有三重复制方案的卷2中。由于块A的复本2拷贝不被要求要符合双重复制方案,因此块A被从提供第三复本的容器1-2移除。需要注意的是,按其双重复制方案的要求,块A的复本0和复本1拷贝保留被存储以供卷2使用。如果块A稍后通过客户端请求被从卷2删除,则块A将不再被任何卷使用,因此,块A将由块服务610和块服务620在稍后的垃圾收集中从集群移除。
如所指出的,在一些实施方式中,数据块可以用其适用的数据保护方案来标记。在一个实施例中,每个数据块可以与数据保护位掩码相关联,其中未断言的前哨值(例如“0”)指示对应的数据保护方案不适用,而断言的前哨值(例如“1”)指示对应的数据保护方案适用。说明性地,位掩码的第一位可以对应于双重复制,第二位对应于三重复制,第三位对应于4+1擦除编码方案,并且第四位对应于4+2擦除编码方案。因此,与双重和三重复制相关联的数据块将具有例如“1100”的掩码。这种数据保护位掩码可以由块服务针对存储在其指派的容器中的每个数据块来维持。例如,在阶段C,在确定块A不再被需要进行三重复制之后,块服务610可以更新与块A相关联的位掩码以反映保护方案的改变。同样,块服务620可以更新与块A的复本1拷贝相关联的位掩码。
在一个实施例中,片服务可以跨存储节点复制片文件607,使得每个片服务具有关于所有存储的块和相关联的卷/数据保护方案映射的信息。可替代地,片服务可以不复制片文件607,或者可以仅基于对应卷的数据保护方案复制在一个或多个片文件中的内容/信息。例如,片文件607b中与卷2有关的信息可以不被复制到片服务360c,因为卷2仅被双重复制。作为附加示例,每个片服务可以仅存储和管理针对指派的卷的片文件信息,例如,卷1可以被指派给片服务360a并且卷2可以被指派给片服务360b。在此,每个片服务可以基于可用于其的片文件信息来单独生成其自己的块清单608,并将其唯一的块清单传送给跨集群的存储节点的所有块服务。因此,每个块服务可以接收双重复制的块清单和三重复制的块清单的三个版本。
参照图7的示例工作流700,块服务610-640托管容器0-3,即,容器被指派给它们对应的块服务并由其对应的块服务管理。如本文所使用的,容器组标识从中选择数据块以进行擦除编码的容器(容器ID)。容器组中容器的数量对应于擦除编码方案的输入数据块的数量;例如,4+2EC方案(如工作流700中所述)使用四个容器。因此,容器组指派705指定四个容器ID:容器0、容器1、容器2和容器3。说明性地,容器组指派705还指定主要(主)复本块服务650和辅助复本块服务660存储针对每个容器的复本。如指派记号“650:1”和“650:2”所指示,主复本块服务650存储(托管)针对容器组中每个容器的复本1,并且辅助复本块服务660托管针对容器组中每个容器的复本2。容器组指派705可以由集群100的主/管理器(“集群主/管理器”)或处理容器指派的并被保持在动物园管理员数据库450内的容器组指派表(未示出)中的其他服务(例如,未描绘的容器指派服务)来生成。需要注意的是,容器指派服务确保(i)针对容器组选择的容器的每个原始复本0版本被指派给不同的块服务(例如,容器0-3跨块服务610-640被指派)、(ii)容器的主复本1版本被指派给相同的块服务(例如,所有复本1指派给主复本块服务650)、以及(iii)容器的辅助复本2版本被指派给相同的块服务(例如,所有复本2被指派给辅助复本块服务660)。
说明性地,容器指派服务也可以按照使容器跨不同故障域被定位的方式来指派容器。例如,每个容器可以被指派给不同的固态驱动(SSD)、不同的存储节点和/或不同的存储节点机箱或可以从中选择。此外,容器指派服务可以确保没有块服务托管同一容器的多个复本。容器指派服务使容器组指派705可分别用于所有块服务,包括主复本块服务650和辅助复本块服务660。如所指出的,块服务650托管主编码复本并因此用作使用容器组指派605来协调擦除编码过程的主复本块服务650,而块服务660托管辅助编码复本并用作辅助复本块服务660。
片文件607反映了针对数据块AD的卷和数据保护方案信息,这些数据块被指派给在卷1和卷2上配置的擦除编码数据保护方案。然而,块A也配置为由三重复制方案保护,如图3所指示。本文描述的技术允许根据策略对保护方案进行优先级排序,诸如基于复制的数据保护方案优先于擦除编码方案。换句话说,如果数据块具有适用的基于复制的保护方案,则该数据块可能不会被擦除编码。当在发生故障的情况下重构信息时,即数据块的复本0拷贝不再可用的读取时,擦除编码可能导致更慢的降级读取。在这种情况下,擦除编码需要重建丢失的数据块,这比简单地读取丢失的数据块的未编码拷贝要耗费更多的时间(需要读取其他数据块以及奇偶校验以执行重构)。因此,基于复制的冗余方案的使用假定重构所导致的EC方案的更慢降级读取对于存储在该卷上的数据可能是无法接受的性能影响。结果,由于块A与复制方案相关联,所以块A可能不会被用于擦除编码,并且在阶段A之前,没有足够的块数量来满足4+2擦除编码方案。
在阶段A,响应于接收到指示块A应该被从卷3删除的命令709,片服务360更新片文件607的片文件3以指示数据块A不再与卷3相关联。块A因此被从卷3删除,结果,该数据块可用于擦除编码。在一个实施例中,擦除编码可以在随后的垃圾收集或回收时段期间被执行。协调擦除编码过程的主复本块服务650将其块标识符与片服务所生成的基于数据保护方案的块清单进行比较。在更新块A以指示其唯一适用的数据保护方案是擦除编码之后,块服务650确定有来自容器组中的每个容器的可用数据块用于擦除编码,并且在阶段B、C和D中执行擦除编码过程。在可能的情况下,执行擦除编码会增加可用的存储空间,因为针对块A-D的未编码拷贝(即,复本)可以被移除。需要注意的是,尽管仍然有一个以上的复制方案与块相关联,但是该块的恢复可以基于关于应采用哪种恢复方案的策略(例如,擦除码恢复和复本恢复)来确定。
在阶段B,主复本块服务650将数据块A-D标识为可用于擦除编码,并与块A-D形成写入组。块服务650可以分析与标识适用的数据保护方案的每个块相关联的数据保护位掩码,以确定块可以被擦除编码。在阶段C,块服务650生成编码块P并将其写入自己的存储中,并且生成编码块Q并将其写入辅助复本块服务660。主复本块服务650读取其数据块A-D的未编码拷贝并且使用擦除编码算法来处理这些未编码拷贝以生成编码奇偶校验块P、Q。主复本块服务650利用映射更新针对数据块A、B、C、D的例如相应映射片段的元数据条目,除了针对数据块的现有位置映射以外,该映射还指向块服务650的BSD上的编码奇偶校验块P。辅助复本块服务660类似地更新其针对数据块的映射,以包括编码奇偶校验块Q在块服务660的BSD上的位置。编码奇偶校验块还与写入组中的数据块的块ID一起被存储,即,被用于生成编码奇偶校验块的数据块A-D。在阶段D,主复本块服务650从块服务650删除数据块A、B、C、D的未编码拷贝,并且辅助复本块服务660从块服务660删除数据块A、B、C、D的未编码拷贝。由于编码块P、Q已被创建,所以数据块A、B、C、D现在受到4+2擦除编码方案的保护,并且即使在两次故障之后仍然可以被读取(恢复)。结果,数据块的未编码拷贝可以被删除以释放存储空间。
图8是图示了符合存储服务300中的多个数据保护方案的用于数据块的垃圾收集的方法的操作的流程图(框800)。在一个实施例中,该操作可以由块服务610-660来执行。广泛地说,块服务可以针对存储在其一个或多个指派的容器中的每个数据块标识当前适用的数据保护方案。如果确定针对数据块的适用的数据保护方案已改变,则块服务可以通过删除不必要的拷贝或对数据块以及其他数据块进行擦除编码以允许释放(即,增加)先前由数据块的未编码拷贝占用的存储空间来减少数据块的存储开销。
在框802中,块服务接收诸如布隆过滤器之类的数据结构,其标识针对每个适用的数据保护方案仍在使用的数据块,并且针对每个选择的数据块(框804),确定当前被指派给所选择的块的(多个)数据保护方案(框806)。在框808中,块服务使用所选择的数据块的标识符(块ID)针对(多个)数据保护方案搜索对应的数据结构。在判定框810中,做出关于(多个)数据保护方案中的任何数据保护方案是否不再适用于所选择的数据块的确定。如果否,则该方法返回框804;否则,在框812中,根据改变的数据保护要求来优化(例如,减少)所选择的数据块的存储。在判定框814中,做出是否有任何附加数据块以供选择的确定,如果有,则该方法返回到框804。否则,该方法在框816中结束。
上面在图6至图8中描述的实施例图示了一些操作,这些操作可以确保可用存储空间的最大化而不会违反一个或多个适用的数据保护方案(“DPS”)。可以根据确保所有适用的DPS都满足的一个或多个操作规则来处理上面未考虑的其他情况,例如,擦除编码的数据块与基于复制的DPS关联的情况。
通常,可以按照不违反任何DPS的数据完整性保证的方式采用垃圾收集。例如,如果同一块被存储在双重复制卷和三重复制卷上,则要求存在该块的至少三个拷贝。即,数据完整性保证了针对DPS的故障冗余级别(例如,在k次故障的情况下无数据丢失)。片服务可以针对所有读取和写入操作指定数据的DPS。DPS的规范可以允许块服务执行附加错误检查。说明性地,本文描述的技术使存储数据块的未编码拷贝优选于存储块的编码奇偶校验拷贝;这样的优先级排序为客户提供了针对被存储在具有基于复制的DPS的卷上的数据的改进型降级读取性能。在一个实施例中,针对一个DPS创建写入组,这简化了编码、垃圾收集和容器同步,同时减少了用编码块存储所需的DPS信息。另外,最大化存储空间或在具有不同数量的编码拷贝的写入组之间执行去重会增加垃圾收集期间的写入放大。
当执行写入请求时,如果不存在块的现有未编码拷贝,则托管数据块的未编码拷贝的块服务可以写入未编码拷贝。如果不存在与写入请求的指定DPS匹配的块的现有编码拷贝,并且不存在块的现有未编码拷贝,则托管块的编码拷贝的块服务可以写入未编码拷贝。如果未编码块的位掩码未设置适当的位,则托管数据块的未编码拷贝的块服务可以为未编码块设置(DPS)位掩码的DPS位。类似地,如果未编码块的DPS位掩码没有设置适当的位并且编码块不存在,则托管块的编码奇偶校验拷贝的块服务可以为未编码块设置DPS位。
在一个实施例中,当执行擦除编码操作时,当根据DPS的块的复本计数大于所有基于块的复制的方案的最大复本计数时,主复本块服务可以对未编码数据块进行编码。即,如果针对与卷相关联的故障冗余级别存在数量过多的复本,则可以将多余数量的未编码数据块重新部署为已编码(即奇偶校验)块,而不是将其标记为未用于最终垃圾收集。
说明性地,各种规则可以适用于发起垃圾收集过程。当块服务已从针对所有DPS的所有片服务接收到与DPS关联的最终布隆过滤器时,块服务可以开始垃圾收集。如果针对数据块的所有编码拷贝已完成针对卷的DPS改变,则片服务可将最终布隆过滤器发送给针对与基于擦除编码的DPS相关的块的未编码拷贝的块服务。在确定数据块是否可以被删除或回收时,其他规则可以应用。如果块未用于写入组的DPS,则该块服务可以丢弃该块。如果块未被任何DPS使用,或者针对所有块的DPS的最大编码/未编码复本计数小于当前复本计数,则块服务可以丢弃未编码的奇偶校验块。
另外,块服务在读取操作期间可以遵循某些规则。说明性地,如果未编码拷贝存在,则托管数据块的拷贝的块服务可以返回未编码拷贝。如果不存在块的未编码拷贝,则存储块的编码拷贝的块服务可以返回编码拷贝。然而,如果编码拷贝的DPS与读取请求中指示的DPS不兼容,则编码拷贝可能不会被返回。例如,如果4+2DPS方案在读取请求中被指定,则4+1编码拷贝可能不会被返回。如果针对编码拷贝的DPS具有大于或等于读取请求中指定的适用DPS的编码复本计数(例如,擦除编码方案的k值,诸如5+3方案中的3),则编码拷贝可以被返回。
前面的描述已经针对特定实施例。然而,显而易见的是,可以对所描述的实施例进行其他变型和修改,从而获得它们的一些或全部优点。例如,明确地设想,本文描述的组件和/或元件可以被实现为被编码在有形(非瞬态)计算机可读介质(例如,磁盘、电子存储器和/或CD)上的软件,该有形计算机可读介质具有在计算机、硬件、固件或其组合上执行的程序指令。因此,该描述仅以示例的方式进行,而不旨在限制本文的实施例的范围。因此,随附权利要求书的目的是涵盖落入本文实施例的精神和范围内的所有这种变型和修改。
Claims (20)
1.一种方法,包括:
生成针对由具有存储节点的集群的分布式存储系统支持的多个数据保护方案中的每个数据保护方案的、将数据块相关联的数据结构,所述数据保护方案中的每个数据保护方案具有数据完整性保证;
使用所述数据结构确定第一数据保护方案针对第一数据块而被采用,其中所述第一数据保护方案具有第一数据完整性保证;
使用所述数据结构,确定除了所述第一数据保护方案以外,第二数据保护方案与所述第一数据块相关联,其中所述第二数据保护方案具有所述第一数据完整性保证;以及
基于策略,应用以下中的一项:(1)根据所述第二数据保护方案减少针对所述第一数据块的所述集群的所述存储节点中的冗余信息的存储,以及(2)维持所述第一块的冗余信息的存储以提高性能,其中所述第一数据保护方案是复制并且所述第二数据保护方案是第一擦除编码。
2.根据权利要求1所述的方法,其中根据所述第二数据保护方案减少针对所述第一数据块的冗余信息的存储还包括:删除所述第一数据块的一个或多个拷贝。
3.根据权利要求2所述的方法,其中维持冗余信息的存储以提高性能避所述第一擦除编码的奇偶校验计算。
4.根据权利要求1所述的方法,其中生成针对由所述存储系统支持的多个数据保护方案中的每个数据保护方案的、将所述数据块相关联的所述数据结构还包括:生成针对相关联的所述数据保护方案被应用至的数据块的布隆过滤器。
5.根据权利要求1所述的方法,其中所述数据保护方案是以每卷为基础而被配置的,其中生成标识针对所述多个数据保护方案中的每个数据保护方案的数据块的所述数据结构还包括:确定哪些卷利用所述第一数据块。
6.根据权利要求1所述的方法,还包括:更新与所述第一数据块相关联的数据保护位掩码,以指示所述第一数据保护方案和所述第二数据保护方案中的一个从与所述第一数据块的关联中被移除。
7.根据权利要求1所述的方法,还包括:
使用所述数据结构确定第三数据保护方案与所述第一数据块相关联,其中所述第三数据保护方案具有大于所述第一数据完整性保证的第二数据完整性保证;其中所述第三数据保护方案是第二擦除编码;以及
基于所述策略,根据所述第三数据保护方案减少针对所述第一数据块的冗余信息的所述存储。
8.根据权利要求1所述的方法,还包括:
根据散列跨所述集群的所述节点分布来自所述第一数据保护方案和所述第二数据保护方案的冗余信息。
9.根据权利要求1所述的方法,其中所述第一块被包括在与所述第一数据保护方案相关联的第一卷中,并且被包括在与所述第二数据保护方案相关联的第二卷中。
10.根据权利要求1所述的方法,还包括:
通过添加存储节点扩展所述集群;
在经扩展的所述集群内重新平衡所述第一数据块和针对所述第一数据块的所述冗余信息。
11.一种系统,包括:
存储节点的集群,每个存储节点包括被耦合到处理器的存储设备,所述处理器执行指令,所述指令被配置为:
生成针对支持所述存储节点的多个数据保护方案中的每个数据保护方案的、将数据块相关联的数据结构,所述数据保护方案中的每个所述数据保护方案具有数据完整性保证;
使用所述数据结构确定第一数据保护方案和第二数据保护方案针对第一数据块而被采用,其中所述第一数据保护方案具有与所述第二数据保护方案相同的数据完整性保证,其中所述第一数据保护方案是复制并且所述第二数据保护方案是擦除编码;
基于策略,应用以下中的一项:
(1)根据针对包括所述第一块的块组的所述擦除编码生成一个或多个编码块,并且标记为所述块组的维持所述数据完整性保证不必要的未使用复本;以及
(2)维持所述第一块的未编码复本的存储,以提高性能并且维持所述数据完整性保证。
12.根据权利要求11所述的系统,其中用于根据所述块组的所述擦除编码来应用一个或多个编码块的生成的所述指令还被配置为回收维持所述数据完整性保证不必要的所述块组的所述未使用复本。
13.根据权利要求11所述的方法,其中被配置为生成针对由所述存储系统支持的多个数据保护方案中的每个数据保护方案的、将数据块相关联的所述数据结构的所述指令还被配置为生成针对相关联的所述数据保护方案被应用至的数据块的布隆过滤器。
14.根据权利要求11所述的系统,其中所述数据保护方案是以每卷为基础而被配置的,其中被配置为生成标识针对所述多个数据保护方案中的每个数据保护方案的数据块的所述数据结构的所述程序指令还被配置为确定哪些卷利用所述第一数据块。
15.根据权利要求11所述的系统,其中所述程序指令还被配置为更新与所述第一数据块相关联的数据保护位掩码,以指示所述第一数据保护方案从与所述第一数据块的关联中被移除。
16.根据权利要求11所述的系统,其中所述第一块被包括在与所述第一数据保护方案相关联的第一卷中,并且被包括在与所述第二数据保护方案相关联的第二卷中。
17.根据权利要求11所述的系统,还包括:
附加存储节点,被添加来扩展所述集群,其中所述程序指令还被配置为在经扩展的所述集群内重新平衡所述第一数据块和所述编码块。
18.根据权利要求11所述的系统,其中所述程序指令还被配置为:
将所述数据块存储在所述集群的第一存储节点中,所述第一存储节点根据被应用于所述数据块的散列函数而被选择。
19.根据权利要求19所述的系统,其中所述程序指令还被配置为:
将所述编码块中的至少一个编码块存储在所述集群的第二存储节点中,所述第二存储节点根据被应用于所述编码块中的所述至少一个编码块的所述散列函数而被选择。
20.一种非瞬态计算机可读介质,包含用于由分布式存储系统的集群中的存储节点的处理器执行的可执行程序指令,所述程序指令被配置为:
生成针对由所述分布式存储系统支持的多个数据保护方案中的每个数据保护方案的、将数据块相关联的数据结构,所述数据保护方案中的每个数据保护方案具有数据完整性保证;
使用所述数据结构确定第一数据保护方案针对第一数据块而被采用,其中所述第一数据保护方案具有第一数据完整性保证;
使用所述数据结构,确定除了所述第一数据保护方案以外,第二数据保护方案与所述第一数据块相关联,其中所述第二数据保护方案具有所述第一数据完整性保证;以及
基于策略,应用以下中的一项:(1)根据所述第二数据保护方案减少针对所述第一数据块的所述集群的所述存储节点中的冗余信息的存储,以及(2)维持冗余信息的存储以提高性能,其中所述第一数据保护方案是复制并且所述第二数据保护方案是第一擦除编码。
Applications Claiming Priority (3)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US201862745483P | 2018-10-15 | 2018-10-15 | |
US62/745,483 | 2018-10-15 | ||
PCT/US2019/056236 WO2020081512A1 (en) | 2018-10-15 | 2019-10-15 | Improving available storage space in a system with varying data redundancy schemes |
Publications (1)
Publication Number | Publication Date |
---|---|
CN112889033A true CN112889033A (zh) | 2021-06-01 |
Family
ID=68426866
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201980067615.7A Pending CN112889033A (zh) | 2018-10-15 | 2019-10-15 | 提高具有变化的数据冗余方案的系统中的可用存储空间 |
Country Status (5)
Country | Link |
---|---|
US (2) | US11461015B2 (zh) |
EP (1) | EP3867759A1 (zh) |
JP (1) | JP7312251B2 (zh) |
CN (1) | CN112889033A (zh) |
WO (1) | WO2020081512A1 (zh) |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN114780021A (zh) * | 2022-03-25 | 2022-07-22 | 北京百度网讯科技有限公司 | 副本修复方法、装置、电子设备及存储介质 |
Families Citing this family (13)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US11262912B2 (en) * | 2017-11-13 | 2022-03-01 | Weka.IO Ltd. | File operations in a distributed storage system |
US11171671B2 (en) * | 2019-02-25 | 2021-11-09 | Samsung Electronics Co., Ltd. | Reducing vulnerability window in key value storage server without sacrificing usable capacity |
US10853188B2 (en) * | 2019-04-26 | 2020-12-01 | EMC IP Holding Company LLC | System and method for data retention in a decentralized system |
CN110096237B (zh) * | 2019-04-30 | 2022-02-08 | 北京百度网讯科技有限公司 | 副本处理方法及节点、存储系统、服务器、可读介质 |
US11171666B2 (en) * | 2019-11-26 | 2021-11-09 | Paul Joseph Nowoczynski | Method for efficient erasure coded group management in shared nothing storage clusters |
US11449278B2 (en) * | 2020-09-04 | 2022-09-20 | Netapp, Inc. | Methods for accelerating storage operations using computational network and storage components and devices thereof |
CN114327239A (zh) * | 2020-09-27 | 2022-04-12 | 伊姆西Ip控股有限责任公司 | 存储和访问数据的方法、电子设备和计算机程序产品 |
US11561856B2 (en) * | 2020-12-10 | 2023-01-24 | Nutanix, Inc. | Erasure coding of replicated data blocks |
US20220391359A1 (en) * | 2021-06-07 | 2022-12-08 | Netapp, Inc. | Distributed File System that Provides Scalability and Resiliency |
US11704027B2 (en) * | 2021-11-12 | 2023-07-18 | Western Digital Technologies, Inc. | Optimizing recovery of recurrent blocks using bloom filter |
US11934280B2 (en) | 2021-11-16 | 2024-03-19 | Netapp, Inc. | Use of cluster-level redundancy within a cluster of a distributed storage management system to address node-level errors |
US11934656B2 (en) * | 2022-04-11 | 2024-03-19 | Netapp, Inc. | Garbage collection and bin synchronization for distributed storage architecture |
US11941297B2 (en) * | 2022-04-11 | 2024-03-26 | Netapp, Inc. | Garbage collection and bin synchronization for distributed storage architecture |
Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101834898A (zh) * | 2010-04-29 | 2010-09-15 | 中科院成都信息技术有限公司 | 一种网络分布式编码存储方法 |
CN102349053A (zh) * | 2009-01-09 | 2012-02-08 | 网络存储技术公司 | 用于冗余性保护的聚集体的系统和方法 |
CN104902009A (zh) * | 2015-04-27 | 2015-09-09 | 浙江大学 | 一种基于可擦除编码和链式备份的分布式存储系统 |
US20170161148A1 (en) * | 2015-12-02 | 2017-06-08 | Netapp, Inc. | Detection of and recovery from silent data loss in an erasure-coded storage system |
CN106921393A (zh) * | 2017-03-02 | 2017-07-04 | 湖南城市学院 | 一种基于计算机取证的数字证据完整性保存控制系统 |
Family Cites Families (45)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
WO1998012621A1 (fr) * | 1996-09-20 | 1998-03-26 | Hitachi, Ltd. | Sous-systeme a piles de disques |
JP2004126850A (ja) | 2002-10-01 | 2004-04-22 | Hitachi Ltd | ディスクアレイ装置 |
US7873782B2 (en) | 2004-11-05 | 2011-01-18 | Data Robotics, Inc. | Filesystem-aware block storage system, apparatus, and method |
JP4464378B2 (ja) | 2006-09-05 | 2010-05-19 | 株式会社日立製作所 | 同一データを纏める事で格納領域を節約する計算機システム、ストレージシステム及びそれらの制御方法 |
US8392791B2 (en) | 2008-08-08 | 2013-03-05 | George Saliba | Unified data protection and data de-duplication in a storage system |
US9098519B2 (en) | 2008-09-16 | 2015-08-04 | File System Labs Llc | Methods and apparatus for distributed data storage |
JP2011013992A (ja) | 2009-07-03 | 2011-01-20 | Hitachi Ltd | ディスクアレイのデータ保護技術 |
US8589640B2 (en) | 2011-10-14 | 2013-11-19 | Pure Storage, Inc. | Method for maintaining multiple fingerprint tables in a deduplicating storage system |
US8683296B2 (en) | 2011-12-30 | 2014-03-25 | Streamscale, Inc. | Accelerated erasure coding system and method |
US8930612B2 (en) | 2012-05-31 | 2015-01-06 | Seagate Technology Llc | Background deduplication of data sets in a memory |
US8799746B2 (en) | 2012-06-13 | 2014-08-05 | Caringo, Inc. | Erasure coding and replication in storage clusters |
US9535802B2 (en) | 2013-01-31 | 2017-01-03 | Technion Research & Development Foundation Limited | Management and recovery of distributed storage of replicas |
US9201733B2 (en) | 2013-03-13 | 2015-12-01 | Futurewei Technologies, Inc. | Systems and methods for data repair |
US9021296B1 (en) * | 2013-10-18 | 2015-04-28 | Hitachi Data Systems Engineering UK Limited | Independent data integrity and redundancy recovery in a storage system |
GB2519815A (en) | 2013-10-31 | 2015-05-06 | Ibm | Writing data cross storage devices in an erasure-coded system |
US20160253114A1 (en) | 2013-11-14 | 2016-09-01 | Hitachi, Ltd. | Method and apparatus for optimizing data storage in heterogeneous environment |
US9959284B2 (en) | 2014-01-10 | 2018-05-01 | Appex Networks Holding Limited | System and method for synchronizing history data for compression and decompression |
US9727437B2 (en) | 2014-02-18 | 2017-08-08 | Quantum Corporation | Dynamically controlling erasure code distribution in an object store |
US9772789B1 (en) | 2014-03-25 | 2017-09-26 | EMC IP Holding Company LLC | Alignment fixing on a data protection system during continuous data replication to deduplicated storage |
US10372685B2 (en) | 2014-03-31 | 2019-08-06 | Amazon Technologies, Inc. | Scalable file storage service |
KR101533340B1 (ko) * | 2014-04-09 | 2015-07-06 | 인하대학교 산학협력단 | 클라우드 스토리지 시스템에서 데이터 접근빈도와 소거 코드를 이용한 데이터 복제 방법 |
CN103944981B (zh) | 2014-04-14 | 2017-03-22 | 中国科学院计算技术研究所 | 一种基于纠删码技术改进的云存储系统及实现方法 |
US8850108B1 (en) | 2014-06-04 | 2014-09-30 | Pure Storage, Inc. | Storage cluster |
US9367243B1 (en) | 2014-06-04 | 2016-06-14 | Pure Storage, Inc. | Scalable non-uniform storage sizes |
CN106662981B (zh) * | 2014-06-27 | 2021-01-26 | 日本电气株式会社 | 存储设备、程序和信息处理方法 |
US9817750B2 (en) | 2014-07-03 | 2017-11-14 | Pure Storage, Inc. | Profile-dependent write placement of data into a non-volatile solid-state storage |
US9858325B1 (en) | 2014-09-29 | 2018-01-02 | Amazon Technologies, Inc. | Consolidating data in storage host groupings |
US9595979B2 (en) * | 2015-01-20 | 2017-03-14 | International Business Machines Corporation | Multiple erasure codes for distributed storage |
US9710165B1 (en) | 2015-02-18 | 2017-07-18 | Pure Storage, Inc. | Identifying volume candidates for space reclamation |
US9921910B2 (en) | 2015-02-19 | 2018-03-20 | Netapp, Inc. | Virtual chunk service based data recovery in a distributed data storage system |
US9626245B2 (en) | 2015-02-20 | 2017-04-18 | Netapp, Inc. | Policy based hierarchical data protection |
US9817715B2 (en) | 2015-04-24 | 2017-11-14 | Netapp, Inc. | Resiliency fragment tiering |
US9697079B2 (en) | 2015-07-13 | 2017-07-04 | International Business Machines Corporation | Protecting data integrity in de-duplicated storage environments in combination with software defined native raid |
US10761758B2 (en) * | 2015-12-21 | 2020-09-01 | Quantum Corporation | Data aware deduplication object storage (DADOS) |
WO2017107095A1 (en) | 2015-12-23 | 2017-06-29 | Intel Corporation | Technologies for adaptive erasure code |
CN105630423B (zh) | 2015-12-25 | 2018-11-27 | 华中科技大学 | 一种基于数据缓存的纠删码集群存储扩容方法 |
US9792043B2 (en) | 2016-01-13 | 2017-10-17 | Netapp, Inc. | Methods and systems for efficiently storing data |
US10230398B2 (en) | 2016-08-19 | 2019-03-12 | Samsung Electronics Co., Ltd. | Erasure code data protection and recovery computation system and method |
US10452477B2 (en) | 2016-08-26 | 2019-10-22 | Netapp, Inc. | Multiple node repair using high rate minimum storage regeneration erasure code |
CN107797884A (zh) * | 2016-10-28 | 2018-03-13 | 湖南大学 | 一种基于复制和纠删码自适应切换的云存储容错方法 |
US10452290B2 (en) | 2016-12-19 | 2019-10-22 | Pure Storage, Inc. | Block consolidation in a direct-mapped flash storage system |
US10484015B2 (en) | 2016-12-28 | 2019-11-19 | Amazon Technologies, Inc. | Data storage system with enforced fencing |
US10339016B2 (en) * | 2017-08-10 | 2019-07-02 | Rubrik, Inc. | Chunk allocation |
US20190042365A1 (en) * | 2018-09-26 | 2019-02-07 | Intel Corporation | Read-optimized lazy erasure coding |
JP6957431B2 (ja) * | 2018-09-27 | 2021-11-02 | 株式会社日立製作所 | Hci環境でのvm/コンテナおよびボリューム配置決定方法及びストレージシステム |
-
2019
- 2019-10-15 WO PCT/US2019/056236 patent/WO2020081512A1/en unknown
- 2019-10-15 CN CN201980067615.7A patent/CN112889033A/zh active Pending
- 2019-10-15 JP JP2021520585A patent/JP7312251B2/ja active Active
- 2019-10-15 US US16/601,978 patent/US11461015B2/en active Active
- 2019-10-15 EP EP19797922.2A patent/EP3867759A1/en active Pending
-
2022
- 2022-09-16 US US17/932,753 patent/US20230013281A1/en active Pending
Patent Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN102349053A (zh) * | 2009-01-09 | 2012-02-08 | 网络存储技术公司 | 用于冗余性保护的聚集体的系统和方法 |
CN101834898A (zh) * | 2010-04-29 | 2010-09-15 | 中科院成都信息技术有限公司 | 一种网络分布式编码存储方法 |
CN104902009A (zh) * | 2015-04-27 | 2015-09-09 | 浙江大学 | 一种基于可擦除编码和链式备份的分布式存储系统 |
US20170161148A1 (en) * | 2015-12-02 | 2017-06-08 | Netapp, Inc. | Detection of and recovery from silent data loss in an erasure-coded storage system |
CN106921393A (zh) * | 2017-03-02 | 2017-07-04 | 湖南城市学院 | 一种基于计算机取证的数字证据完整性保存控制系统 |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN114780021A (zh) * | 2022-03-25 | 2022-07-22 | 北京百度网讯科技有限公司 | 副本修复方法、装置、电子设备及存储介质 |
Also Published As
Publication number | Publication date |
---|---|
JP2022512064A (ja) | 2022-02-02 |
US20230013281A1 (en) | 2023-01-19 |
JP7312251B2 (ja) | 2023-07-20 |
WO2020081512A1 (en) | 2020-04-23 |
US20200117372A1 (en) | 2020-04-16 |
US11461015B2 (en) | 2022-10-04 |
EP3867759A1 (en) | 2021-08-25 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US11461015B2 (en) | Available storage space in a system with varying data redundancy schemes | |
US20200117362A1 (en) | Erasure coding content driven distribution of data blocks | |
US10372537B2 (en) | Elastic metadata and multiple tray allocation | |
US9367241B2 (en) | Clustered RAID assimilation management | |
US10133511B2 (en) | Optimized segment cleaning technique | |
US8832363B1 (en) | Clustered RAID data organization | |
US10949312B2 (en) | Logging and update of metadata in a log-structured file system for storage node recovery and restart | |
US9891860B1 (en) | Managing copying of data in storage systems | |
CN109313538B (zh) | 内联去重 | |
CN107209714B (zh) | 分布式存储系统及分布式存储系统的控制方法 | |
JP2014532227A (ja) | ストレージシステムにおける可変長符号化 | |
US11175989B1 (en) | Pooling blocks for erasure coding write groups | |
US20210334241A1 (en) | Non-disrputive transitioning between replication schemes | |
US10242021B2 (en) | Storing data deduplication metadata in a grid of processors | |
KR102460568B1 (ko) | 대형 키 밸류 객체들을 저장하는 시스템 및 방법 | |
US20220414102A1 (en) | Tracking utilization of data blocks in a storage system | |
US11514181B2 (en) | Bin syncing technique for multiple data protection schemes | |
US11194501B2 (en) | Standby copies withstand cascading fails | |
US11868248B2 (en) | Optimization for garbage collection in a storage system | |
US11223681B2 (en) | Updating no sync technique for ensuring continuous storage service in event of degraded cluster state |
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 |