CN104885056B - 高效高可用性存储系统 - Google Patents
高效高可用性存储系统 Download PDFInfo
- Publication number
- CN104885056B CN104885056B CN201380068637.8A CN201380068637A CN104885056B CN 104885056 B CN104885056 B CN 104885056B CN 201380068637 A CN201380068637 A CN 201380068637A CN 104885056 B CN104885056 B CN 104885056B
- Authority
- CN
- China
- Prior art keywords
- submatrix
- encoder matrix
- data block
- server
- row
- 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.)
- Active
Links
Classifications
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L67/00—Network arrangements or protocols for supporting network services or applications
- H04L67/01—Protocols
- H04L67/10—Protocols in which an application is distributed across nodes in the network
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L67/00—Network arrangements or protocols for supporting network services or applications
- H04L67/01—Protocols
- H04L67/10—Protocols in which an application is distributed across nodes in the network
- H04L67/1097—Protocols in which an application is distributed across nodes in the network for distributed storage of data in networks, e.g. transport arrangements for network file system [NFS], storage area networks [SAN] or network attached storage [NAS]
-
- 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
- G06F11/1092—Rebuilding, e.g. when physically replacing a failing disk
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L67/00—Network arrangements or protocols for supporting network services or applications
- H04L67/01—Protocols
- H04L67/10—Protocols in which an application is distributed across nodes in the network
- H04L67/104—Peer-to-peer [P2P] networks
- H04L67/1074—Peer-to-peer [P2P] networks for supporting data block transmission mechanisms
- H04L67/1078—Resource delivery mechanisms
- H04L67/108—Resource delivery mechanisms characterised by resources being split in blocks or fragments
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L69/00—Network arrangements, protocols or services independent of the application payload and not provided for in the other groups of this subclass
- H04L69/40—Network arrangements, protocols or services independent of the application payload and not provided for in the other groups of this subclass for recovering from a failure of a protocol instance or entity, e.g. service redundancy protocols, protocol state redundancy or protocol service redirection
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2211/00—Indexing scheme relating to details of data-processing equipment not covered by groups G06F3/00 - G06F13/00
- G06F2211/10—Indexing scheme relating to G06F11/10
- G06F2211/1002—Indexing scheme relating to G06F11/1076
- G06F2211/1009—Cache, i.e. caches used in RAID system with parity
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2211/00—Indexing scheme relating to details of data-processing equipment not covered by groups G06F3/00 - G06F13/00
- G06F2211/10—Indexing scheme relating to G06F11/10
- G06F2211/1002—Indexing scheme relating to G06F11/1076
- G06F2211/1028—Distributed, i.e. distributed RAID systems with parity
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2211/00—Indexing scheme relating to details of data-processing equipment not covered by groups G06F3/00 - G06F13/00
- G06F2211/10—Indexing scheme relating to G06F11/10
- G06F2211/1002—Indexing scheme relating to G06F11/1076
- G06F2211/105—On the fly coding, e.g. using XOR accumulators
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2211/00—Indexing scheme relating to details of data-processing equipment not covered by groups G06F3/00 - G06F13/00
- G06F2211/10—Indexing scheme relating to G06F11/10
- G06F2211/1002—Indexing scheme relating to G06F11/1076
- G06F2211/1057—Parity-multiple bits-RAID6, i.e. RAID 6 implementations
-
- Y—GENERAL TAGGING OF NEW TECHNOLOGICAL DEVELOPMENTS; GENERAL TAGGING OF CROSS-SECTIONAL TECHNOLOGIES SPANNING OVER SEVERAL SECTIONS OF THE IPC; TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
- Y10—TECHNICAL SUBJECTS COVERED BY FORMER USPC
- Y10S—TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
- Y10S707/00—Data processing: database and file management or data structures
- Y10S707/99951—File or database maintenance
- Y10S707/99952—Coherency, e.g. same view to multiple users
- Y10S707/99955—Archiving or backup
Landscapes
- Engineering & Computer Science (AREA)
- Computer Networks & Wireless Communication (AREA)
- Signal Processing (AREA)
- Theoretical Computer Science (AREA)
- Computer Security & Cryptography (AREA)
- Quality & Reliability (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Error Detection And Correction (AREA)
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
- Information Transfer Between Computers (AREA)
Abstract
一种用于构成数据保护组一部分的服务器,所述服务器包括:存储器;收发器,用于接收来自其他设备的存储数据文件的请求;处理器,其与所述存储器及所述收发器耦合,用于:获取所述存储数据文件的请求;将所述数据文件写入所述存储器的容器;当所述容器存满时编码容器内容,生成多个编码块;其中,所述收发器还用于将所述多个编码块在数据保护组的对等服务器中分发。
Description
相关申请案交叉申请
本发明要求2013年5月24日提交的作者为Guangyu Shi等人、发明名称为“高效高可用性存储系统”的第13/902,343号的美国非临时申请案的在先申请优先权,其要求2012年12月31日提交的作者为Guangyu Shi等人、发明名称为“构建高效高可用性存储系统的方法”的第61/747,747号美国临时专利申请案的在先申请优先权,该在先申请的内容以引入的方式并入本文中。
背景技术
数据冗余保证了数据在一个或多个存储节点出现故障的情况下的可用性。为了提供容错功能,许多企业存储系统(例如,网络附加存储(NAS)和存储区域网络(SAN))以及云存储系统(例如,对象存储和键值存储)采用了数据冗余机制。数据冗余可以分为两类:基于副本的和基于纠删编码的数据冗余。传统的三副本法,一个数据内容有三个副本,且将它们存储在三个存储节点中,这使成本增至三倍。例如,当该方法应用于具有100个节点的分布式存储系统时,若超过两个服务器出现故障,某些数据很可能变得不可用。
企业存储中,传统纠删编码的实现可以包括RAID(独立磁盘冗余阵列)、里德-所罗门以及柯西里德-所罗门纠删编码。纠删编码用符号“N+M”来表示N个数据块和通过编码N个数据块生成的M个冗余块。即,N个数据块可以编码生成总共N+M个块。编码的额外成本可以定义为M/N。例如,在100个节点的系统中实现“8+2”编码仍然有一定的可能发生数据不可用。
可能需要更大规模地运行纠删编码,比如使用100个服务器进行“80+20”编码。此时,在额外磁盘使用率为25%的情况下,即使100个服务器中有20个发生故障,该系统也可以保障100%的数据可用性。实现这样一个系统面临的一个重大挑战可能是:计算复杂度随着规模呈线性增长。因此,为了提高不足以进行大规模实施的传统系统的效率,需要开发最优软件纠删编码/解码运算与并行数据恢复。
发明内容
在一个实施例中,本发明包括用于构成数据保护组一部分的服务器,其中,该服务器包括存储器;收发器,用于接收来自其他设备的存储数据文件的请求;处理器,其与所述存储器及所述收发器耦合,用于:获取所述存储数据文件的请求;将所述数据文件写入所述存储器的容器;当所述容器存满时编码容器内容,生成多个编码块;其中,所述收发器还用于将所述多个编码块在数据保护组的对等服务器中分发。
在另一个实施例中,公开了一种装置,包括:存储器,用于存储数据块以及用于编码所述数据块的编码矩阵;缓存;处理器,其与所述缓存及所述存储器耦合,且所述处理器用于:确定所述编码矩阵的大小;确定所述数据块的子矩阵的大小,使得所述编码矩阵的大小和所述子矩阵的大小之和小于所述缓存的大小;请求将所述数据块的所述子矩阵和所述编码矩阵从所述存储器写入所述缓存,其中,所述缓存用于存储所述数据块的所述子矩阵和所述编码矩阵;通过选择所述数据块的所述子矩阵中的至少两个行并对所述至少两个行进行二进制运算来计算一部分编码块,其中,所述至少两个行是根据所述编码矩阵的第一子矩阵中的元素选择的。
在又一个实施例中,公开了一种用于构成数据保护组一部分的服务器,其中,所述服务器包括:收发器,用于向至少一个位置节点请求故障服务器的容器列表;处理器,其与所述收发器耦合,用于:选择容器列表的一部分以备恢复,其中,所述收发器还用于向所述数据保护组中的多个服务器发送多个请求,所述请求是针对所述列表的一部分中的一个容器对应的所有编码块的。
在又一个实施例中,公开了一种方法,包括:生成一个包括起始节点和多个节点的图,其中,所述多个节点中的每个节点对应用于编码容器中数据的编码矩阵的不同行,从所述起始节点到所述多个节点中的每个节点之间的边是所述编码矩阵的对应行中的1的个数;将多个节点中的节点对间的边添加到所述图中,其中,所述多个节点中的每对节点的第一节点到第二节点间的边是所述编码矩阵中对应的两个行之间的不同位的数量;根据所述图确定最小生成树;基于所述最小生成树调整所述编码矩阵。
以下结合附图和权利要求对以上以及其他特征做更清晰明了的详细描述。
附图说明
为了更透彻地理解本发明,现参阅结合附图和具体实施方式而描述的以下简要说明,其中的相同参考标号表示相同部分。
图1为一实施例提供的数据保护组(DPG)架构;
图2为一实施例提供的纠删编码方法的流程图;
图3为一实施例提供的柯西里德-所罗门纠删编码矩阵运算的示意图;
图4示出了一实施例提供的服务器架构;
图5为一实施例提供的基于最小生成树的优化方法的流程图;
图6示出了一实施例提供的DPG架构中的并行数据恢复;
图7为一实施例提供的并行数据恢复的方法的流程图。
具体实施方式
首先应理解,尽管下文提供一项或多项实施例的说明性实施方案,但所公开的系统和/或方法可使用任何数目的技术来实施,无论该技术是当前已知还是现有的。本发明决不应限于下文所说明的说明性实施方案、附图和技术,包括本文所说明并描述的示例性设计和实施方案,而是可在所附权利要求书的范围以及其等效物的完整范围内修改。
本发明公开了构建高效高可用性存储系统的系统、方法以及装置。描述了用于在使用大量服务器的数据存储系统中存储数据以及恢复丢失数据的架构和机制。提出了通过单指令多数据(SIMD)法,缓存友好的改进法,指令级并行运算以及基于最小生成树的优化方法优化纠删编码与解码运算的方法。另外,并行数据恢复机制可以在减小恢复窗口长度的情况下实现。高效的矩阵运算可以实现空前规模(如,“80+20”)的高性能软件柯西里德-所罗门纠删编码与解码。大规模纠删编码方法以及相关的架构可以通过低成本取得更高的数据可用性。
图1为一实施例提供的应用纠删编码的数据保护组(DPG)架构100。所述架构100可以包括多个存储服务器110,以及至少一个位置节点130。所述架构100可以在具有数据冗余要求的存储系统(如,网络附加存储(NAS)、对象存储以及键值存储)中实现。四个所述存储服务器110可以构成DPG 105,并存储数据备份。虽然为了便于说明,只示出了四个存储服务器110,但是该系统中可以使用任意数量的服务器。
容器120可以是DPG 105中的服务器分配的具有固定大小限度的某些存储空间(与存储器中的地址空间相对应)。所述容器120可以存储多个文件直至其存满。一旦所述容器120达到了其数据存储的限度,所述容器120会封闭,并准备进行纠删编码。所述容器120可以散布到编码块125上,以及分发到DPG的其他服务器中。
位置节点130可以存储所述服务器的标识符(ID)或地址以及组员信息。例如,ID为1到100的所有服务器可以存储在一个DPG中。可以在位置节点130中找到该信息,位置节点130可以是集中式存储库,也可以是分布式存储库。位置节点130也可以存储DPG中的所述容器与相应的编码块的映射信息。
若客户端想要将文件写入存储系统,客户端请求可以根据预定义的协议,包括但不限于:随机选择、随机轮询选择以及基于哈希的负载均衡选择,到达一个或多个所述服务器。例如,请求可以到达存储服务器2110。所述服务器可以将数据流存储在相应的容器(例如,容器120)中。一旦所述容器到达了其限度,服务器2110可以封闭容器120,并接着纠删编码。服务器2110可以运行纠删编码,例如此处提出的柯西里德-所罗门纠删编码,之后,将编码块125分发到同一个DPG(例如,DPG 105)的其他对端中。服务器2110可以使用预定义的规则或查询位置节点130以寻找其他对端。成功将编码块散布到其他对端中后,服务器2110可以记录从编码容器120到位置节点130的映射。即,服务器2110可以告知位置节点130其负责容器120。所述映射可以包括发送给位置节点的容器ID和服务器ID对。
再例如,DPG可以包括100个服务器,每个服务器都有80兆字节(MB)的容器大小限度。在对容器进行了“80+20”编码后,可以将数据划分为1MB的块,并在所述100个服务器对应的100个编码容器中按照,例如,每个服务器一个块的标准,进行分发。所述容器中的数据可以划分为80个块,而其他20个块可以是冗余校验和的结果。可以将所述容器分布在服务器中以使容错性最大化;然而,在另一个实施例中,可以在较少的服务器上存储多个容器。
图2是一实施例提供的运行纠删编码的方法的流程图200。流程图200的步骤可以在具有至少一个DPG、多个服务器以及至少一个位置节点的数据存储系统中实施,如包括服务器110和位置节点130的DPG 105。该流程图从框210开始,其中,服务器(例如,图1中的服务器2110)可以接收来自客户端请求的数据。可以根据本领域普通技术人员所知的协议(包括但不限于随机选择、随机轮询选择以及基于哈希的负载均衡选择)选择所述特定的服务器。其次,在框220中,所述服务器可以将获得的数据存储在相应的容器中,例如,图1中的容器120。输入的数据可以存储在所述容器中直至其存满。当达到所述容器的所述大小限度,在框230中继续该方法,其中,所述服务器可以封闭所述容器,准备进行纠删编码。在框240中,所述服务器可以对所述容器中存储的数据进行纠删编码,例如此处提出的柯西里德-所罗门纠删编码。编码后,在框250中,所述服务器可以查询位置节点(例如,位置节点130),以找到DPG中的其他对等服务器,。在框260中,所述服务器可以将纠删编码获得的编码块(例如,编码块125)分发给对等服务器。所述方法到框270结束,其中,所述服务器将编码块和服务器位置(例如,容器ID和服务器ID对)的映射信息记录在位置节点中。
图3示出了一实施例提供的柯西里德-所罗门纠删编码矩阵运算300。所述纠删编码运算300包括矩阵A 310,矩阵B 320,矩阵C 330以及运算符(OP)315。矩阵A 310可以是索引矩阵,其每个元素都是二进制的,例如,或者为1或者为0。可以根据本领域普通技术人员所理解的柯西里德-所罗门编码原理建立矩阵A 310。矩阵B 320可以表示容器(例如,容器120)中存储的原始数据。可以通过将容器划分为整数个块建立矩阵B,每个所述块构成B的子矩阵。B的子矩阵在图3中由bij表示。矩阵C 330可以是编码的内容,该内容是矩阵A和B的乘积。除了加法运算可以由异或(XOR)运算替换以外,OP 315表示可能与矩阵乘法相同的运算符。(XOR是本领域普通技术人员所知的二进制运算,其中,若x和y是不同的二进制数字,xXOR y的结果是1;否则,结果是0。若x和y是等长的二进制向量,x XOR y产生了一个向量,其中,1的个数是x和y的不同位的数量。)这些运算可以在DPG中进行,例如图1中的DPG 105。例如,矩阵B可以包含服务器110的容器120中的原始数据。服务器,例如,服务器2110,可以将数据划分到矩阵B的子矩阵中。编码矩阵A可以应用于矩阵B以获得矩阵C中的编码数据。此操作之后,可以对矩阵B和C进行划分,以在DPG 105中的所述服务器110中进行分发。矩阵A可以是预定义的矩阵,指示B的哪行会进行XOR运算。
图4是适用于实施此处所公开的组件,例如,存储服务器110或位置节点130,的一个或多个实施例的服务器340的架构图。所述服务器340包括配置的如图4所示中央处理器(CPU)354、随机存取存储器(RAM)346、二级存储设备344以及收发器(或发射器/接收器)352。所述CPU 354包括所示配置的处理器342、一个或多个寄存器350(图4中的整数n可以是任意正整数,如二的幂)以及缓存348。虽然示出的是单个处理器,所述处理器342可以实现为一个或多个通用处理器、内核(例如,多核处理器)、现场可编程门阵列(FPGA)、专用集成电路(ASIC)和/或数字信号处理器(DSP)。所述处理器342可以实现或者可以用于执行DPG、存储服务器或位置节点的任何功能,例如流程图200、500以及700所示的全部或部分方法。所述处理器342可以是或者可以包括算术逻辑单元(ALU)。所述处理器342可以与所述寄存器350、缓存348、RAM 346以及二级存储器344进行通信,至少在某种程度上对这些元件进行控制。
二级存储器344通常包括一个或多个磁盘驱动或磁带驱动,用于数据的非易失性存储,并且在RAM 346不能容纳所有工作数据时用作溢出数据的存储设备。当选择执行载入RAM 346的程序时,所述二级存储器344可用于存储这些程序。访问RAM 346通常比访问二级存储器344快。快速内存组件(例如,RAM 346)可能价格昂贵,而较便宜的存储器,例如,硬盘驱动器(例如,二级存储器344)又比较慢。在根据价格和速度选择内存组件时,存储器上存在一个折衷。该种折衷进一步表现在缓存348和寄存器350的使用上。所述寄存器350在每存储单位成本最大的情况下提供了最快的存储器存取。其次,在缓存348的速度/成本的折衷中,缓存348在每单位成本较低的情况下比寄存器350的存储器存取速度慢(然而,缓存虽然较快,但是比每存储单位的RAM 346更贵)。
所述缓存348可以在纠删编码过程中容纳CPU 354中的数据。所述缓存348可以在上述纠删编码的矩阵运算中存储原始数据和编码数据。虽然仅示出一个缓存,但是所述CPU354内外可以设置有多个缓存(例如,多级缓存)。所述寄存器350可以用于为所述处理器342提供快速存储。进一步地,图4中的所述缓存348和寄存器350可以用于使用此处所公开的增强方法。所述缓存348可以在任意所述寄存器350中进行读写。
所述收发器352可以作为所述服务器340的输出和/或输入设备。所述收发器352的表现形式有调制解调器、调制解调器库、以太网卡、通用串行总线(USB)接口卡、串行接口、令牌环卡、光纤分布式数据接口(FDDI)卡、无线局域网(WLAN)卡、无线收发器卡如码分多址接入(CDMA)、全球移动通信系统(GSM)、长期演进(LTE)、全球微波接入互操作性(WiMAX)和/或其他空口协议无线收发器卡,以及其他知名网络设备。所述收发器352可以允许所述处理器342与互联网、一个或多个内联网、一个或多个其他服务器和/或DPG中的位置节点进行通信。
纠删编码可以通过单指令多数据(SIMD)法增强。作为传统指令的替代,所述CPU354可以支持的SIMD指令(例如,因特尔单指令多数据流扩展)可以在执行XOR运算时实现。所述SIMD法可能是有益的,因为它考虑了可以由处理器,如处理器342,执行的多数据位的并行处理。
也可以将纠删编码设计成缓存友好型的。例如,矩阵B 320可以是80MB,超过了CPU片内缓存的大小(例如1MB)。矩阵C 330可以是20MB,矩阵A 310可以是几万字节的。为了减少CPU数据缓存的丢失,矩阵A至C可以划分为块。A的大小及B(例如,b11)的每个块或者子矩阵的大小之和可以比所述CPU容纳的片内缓存(例如,缓存348)小。可以根据缓存行的大小(例如,16到256字节)和可用寄存器,如寄存器350,的大小,来确定B(b11,b12,……,b1n的行的长度)中各块的宽度。对a1和b11进行计算之后,两者的乘积可以保存在矩阵C中。因此,b11不再需要载入到CPU缓存中。
对于A矩阵中每行的块,中间结果可以暂时存储于寄存器中,处理完整行之后再移至矩阵C。例如,假设矩阵A的第一行有三个元素,记为:a1r11、a1r12和a1r13。这些元素可以指示b11的哪些行应该加在一起。例如,假设a1r11、a1r12和a1r13都是1,其表示B11中的所有三行都应一起进行XOR运算(意思是,可以在两个行之间进行XOR运算,XOR运算的结果再与第三行进行XOR运算)。可能会使用可用的源寄存器(例如,寄存器350),其可以用于载入b11的第一行,并存储XOR运算的结果。后续b11的每一行都可以重复这个步骤。最后,所述源寄存器(例如,寄存器350)的内容可以写入矩阵C中的c11里。
进一步地,指令级并行(ILP)技术可以作为编码增强方法实现。ILP中,在执行XOR运算前,尽可能多的内容可以载入到所有可用的SIMD寄存器中(例如,寄存器350)。例如,所有或许多指示为需要由矩阵A相加在一起的数据子矩阵的行能够载入所述寄存器。多个行对的XOR可以并行(例如,由处理器,如处理器342)执行。这样,使得CPU能够进行指令级并行优化,因为每个寄存器的载入和计算互不干扰。所需的控制指令的总数(例如,因特尔指令集指令,如比较(CMP)和跳转指令表(Jxx))可以通过共享减少。
上述公开的SIMD法、缓存友好的改进法以及ILP技术可以相互协同工作以优化编码。进一步地,也可以执行基于最小生成树的优化技术。例如,当执行矩阵运算时,矩阵C330的第一行的第一元素,C11,可以是矩阵A310的第一行和矩阵B 320的第一列的乘积。类似地,矩阵C 330的第二行的第一元素,C21,可以是矩阵A 310的第二行和矩阵B 320的第一列的乘积。由于XOR运算的独特特征,C21也可以根据C11计算。该计算可以额外减少XOR的次数。为了确定生成树,可以定义具有m+1个节点的图,其中m可以是矩阵A 310的行数。节点N1到Nm可以对应矩阵A 310的每一行,N0是图中的任意起始点。N0到N1,N2,……,Nm两两之间可以增加边。可以根据Nx表示的行中的1的个数将边增加到EN0Nx中。X可以对应特定的行数。之后,可以添加以及增加从N1到Nm的所有节点对之间的各边(例如,EN1N2)。距离可以定义为端点表示的两个行的XOR结果中的1的个数(例如,“Row1XOR Row2”中1的个数)。即,所述距离是两个行之间的不同位的数量。最小生成树可以根据该定义的图计算。该树可以描绘出最有效的路线以计算矩阵C 330中所有元素。可以根据所述生成树,通过重新排列A的行序以及重写一些元素,对矩阵A 310进行重新调整(例如,指示是否应该从之前计算的C的行进行计算)。因此,XOR运算的总次数可以是最少的。在将XOR的次数最小化之后,可以执行上述纠删编码、SIMD法、缓存友好的改进法以及ILP技术。所述基于最小生成树的优化法是可选的,且可以离线进行,或是仅在系统初始化阶段进行一次。这些纠删编码增强方法可以通过配置组件实现,如处理器342、缓存348以及服务器340中的寄存器350。
图5为一实施例提供的基于最小生成树的优化方法的流程图370。流程图370的步骤可以在服务器,如所述服务器340中实现。图4中的处理器342可以用于和所述缓存348、至少一个寄存器350以及其他内存组件共同执行本领域普通技术人员理解的优化方法。所述流程图从框372开始,其中,服务器可以接收来自客户端的数据。框374中,原始数据可以分散在矩阵B(例如,矩阵B 320)的子矩阵中。可以在框376中定义具有m+1个节点,N1到Nm的图,其中,m表示索引矩阵A(例如,矩阵A 310)中的行数。节点N0可以设置为所述图中的起始点。在框380中继续该方法,其中,可以定义在N0到N1,N2,……,Nm两两之间的边。可以根据相应行中1的个数将边增加到EN1Nx中。在框384中,可以添加以及增加从N1到Nm的所有对之间的各边。每个边距离可以定义为边的端点所指示的两个行的XOR结果中的1的个数。在框388中,可以基于定义的图中的最小距离,确定本领域普通技术人员理解的最小生成树。在框390中,可以根据最小生成树重新排列矩阵A的行和元素以生成新的编码矩阵。所述新编码矩阵可以用于通过此处所述的任意技术编码数据矩阵B。
图6示出了一实施例提供的DPG架构400中的并行数据恢复。所述架构400可以包括位置节点460和包括多个存储服务器的DPG 405,所述多个服务器包括服务器1410、服务器2420、服务器3430以及服务器4440。服务器5450可以作为任一所述服务器410-440发生故障时的备用存储器。若一个存储设备(例如服务器2420)发生故障,服务器5450可以加入DPG405中替换发生故障的服务器。为了便于说明,图6示出的服务器2420已经发生了故障。DPG 405中的其他对端可以为服务器5450提供恢复协助。例如,服务器1410可以查验位置节点460以获得服务器2420在发生故障(如实线1所示)前可能已经存储的容器的列表。然后,服务器1410可以基于预定义的规则选择所述列表的一部分(例如,10%)。然后,服务器1410可以向DPG 405中的其他对端中发送请求以得到相关的编码块,所述编码块可以用于恢复特定的(例如,实线2表示的)容器。得到编码块之后,服务器1410可以接着运行纠删解码。恢复的容器之后发送给服务器5450(如实线3所示)。服务器1410所执行的这些步骤可以在同一个DPG 405的其他对端中并行执行。如图6的虚线箭头所示,服务器3430可以实施所描述的与服务器1410相同的动作。因此,图6的实施例启动了并行数据恢复,其通过在发生存储器故障时同时使用多个服务器进行恢复来提高效率。虽然为了便于说明,图6中只示出了三个恢复协助对端,可以配置任意数目的恢复协助对端以匹配新服务器可以支持的最大写吞吐量。
图7为一实施例提供的并行数据恢复的方法的流程图500。流程图500的步骤可以在具有至少一个DPG、多个服务器以及至少一个位置节点的数据存储系统中实施。例如,所述方法流程图可以在包括位置节点460以及多个服务器,包括服务器1410、服务器2420、服务器3430、服务器4440以及服务器5450的DPG 405中执行。所述流程图从框510开始,其中,新服务器,例如服务器5450可以加入DPG中替换发生故障的服务器,例如服务器2420.在框520中,对等服务器(例如,服务器1410)可以查验位置节点(例如,位置节点460)以获得发生故障的服务器之前已经存储的容器的列表。在框530中,服务器可以基于预定义的规则选择所述列表的一部分以备恢复。之后,在框540中,服务器可以向DPG中的其他对等服务器(例如服务器3430和服务器4440)发送请求以获取用于恢复所选容器的编码块。接收到对端得到的编码块之后,在框550中继续所述方法,其中,服务器可以运行纠删解码。在框560中,该服务器可以将恢复的容器发送给新服务器(例如,服务器5450)。为了在恢复过程中提供最大吞吐量,此方法流程图500的步骤可以由多个服务器并行执行。
应理解,通过编程和/或加载可执行指令至图4中的服务器340,所述处理器342、RAM 346以及二级存储器344中的至少有一个会发生变化,将所述服务器340在某种程度上转变为一种具有本发明所公开的具有创新功能的特定机器或装置,如位置节点或服务器。对于电气工程和软件工程技术至关重要的是,能够按照公认的设计规则将功能转换为硬件实现方式,所述功能可通过将可执行软件加载到计算机来实现。在软件还是硬件中实现某一概念通常取决于对于待生产单元设计稳定性和数量的考虑,而并非考虑任何涉及从软件领域到硬件领域的转换问题。通常,经常变化的设计可以优先在软件中实现,因为重编硬件实施方式要比重编软件实施方式更加昂贵。通常,稳定性好且大批量生产的设计可以优先在硬件中实现,例如,在ASIC中,由于大批量生产的运行使得硬件实施比软件实施更廉价。通常,一项设计可以以软件的形式进行开发和测试,之后根据公认的设计规则转变为专用集成电路中等效的硬件实施方式,在专用集成电路中用硬件来控制所述软件的指令。按照相同的方式,由新型ASIC控制的机器即为一种特定机器或装置,同样地,已被编程和/或加载可执行指令的计算机可被视为一种特定的机器或装置。
本发明公开至少一项实施例,且所属领域的普通技术人员对所述实施例和/或所述实施例的特征作出的变化、组合和/或修改均在本发明公开的范围内。因组合、合并和/或省略所述实施例的特征而得到的替代性实施例也在本发明的范围内。在明确说明数字范围或限制的情况下,此类表达范围或限制可以被理解成包括在明确说明的范围或限制内具有相同大小的迭代范围或限制(例如,从约为1到约为10包括2、3、4等;大于0.10包括0.11、0.12、0.13等)。例如,只要公开具有下限Rl和上限Ru的数字范围,则明确公开了此范围内的任何数字。具体而言,在所述范围内的以下数字是明确公开的:R=Rl+k*(Ru–Rl),其中k为从1%到100%范围内以1%递增的变量,即,k为1%、2%、3%、4%、5%……50%、51%、52%……95%、96%、97%、98%、99%或100%。此外,由上文所定义的两个数字R定义的任何数字范围也是明确公开的。除非另有说明,否则术语“约”是指随后数字的±10%。相对于权利要求的任一元素使用术语“选择性地”意味着所述元素是需要的,或者所述元素是不需要的,两种替代方案均在所述权利要求的范围内。使用如“包括”、“包含”和“具有”等较广术语应被理解为提供对如“由……组成”、“基本上由……组成”以及“大体上由……组成”等较窄术语的支持。因此,保护范围不受上文所陈述的说明限制,而是由所附权利要求书界定,所述范围包含所附权利要求书的标的物的所有等效物。每一和每条权利要求作为进一步揭示内容并入说明书中,且所附权利要求书是本发明的实施例。对所述揭示内容中的参考进行的论述并非承认其为现有技术,尤其是具有在本申请案的在先申请优先权日期之后的公开日期的任何参考。本发明中所引用的所有专利、专利申请案和公开案的揭示内容特此以引用的方式并入本文本中,其提供补充本发明的示例性、程序性或其它细节。
虽然本发明多个具体实施例,但应当理解,所公开的系统和方法也可通过其它多种具体形式体现,而不会脱离本发明的精神或范围。本发明的实例应被视为说明性而非限制性的,且本发明并不限于本文本所给出的细节。例如,各种元件或部件可以在另一系统中组合或合并,或者某些特征可以省略或不实施。
此外,在不脱离本发明的范围的情况下,各种实施例中描述和说明为离散或单独的技术、系统、子系统和方法可以与其它系统、模块、技术或方法进行组合或合并。展示或论述为彼此耦合或直接耦合或通信的其它项也可以采用电方式、机械方式或其它方式通过某一接口、设备或中间部件间接地耦合或通信。其它变更、替换、更替示例对本领域技术人员而言是显而易见的,均不脱离此处公开的精神和范围。
Claims (12)
1.一种用于构成数据保护组一部分的服务器,其特征在于,所述服务器包括:
存储器;
收发器,用于接收来自其他设备的存储数据文件的请求;
处理器,其与所述存储器及所述收发器耦合,用于:
获取所述存储数据文件的请求;
将所述数据文件写入所述存储器的容器;
当所述容器存满时编码容器内容,生成多个编码块;
其中,所述收发器还用于:
将所述多个编码块在数据保护组的对等服务器中分发;
其中,所述服务器还包括缓存,所述容器内容构成数据块,且所述编码容器内容包括:
确定编码矩阵的大小;
确定所述数据块的子矩阵的大小,使得所述编码矩阵的大小和所述子矩阵的大小之和小于所述缓存的大小;
请求将所述数据块的所述子矩阵和所述编码矩阵从所述存储器写入所述缓存,其中,所述缓存用于存储所述数据块的所述子矩阵和所述编码矩阵;
通过选择并计算所述数据块的所述子矩阵中的至少两个行的异或(XOR)来计算一部分编码块,其中,所述至少两个行是根据所述编码矩阵的第一子矩阵中的元素选择的。
2.根据权利要求1所述的服务器,其特征在于,所述收发器还用于向至少一个位置节点发送消息以指示所述服务器负责所述容器中的数据。
3.根据权利要求1或2所述的服务器,其特征在于,所述编码容器内容还包括,针对大小等于或小于所述子矩阵的所述数据块的多个子矩阵中的每个子矩阵,编码所述选择的子矩阵以生成剩余编码块。
4.根据权利要求1所述的服务器,其特征在于,所述编码是柯西里德-所罗门编码。
5.一种装置,其特征在于,包括:
存储器,用于存储数据块以及用于编码所述数据块的编码矩阵;
缓存;
处理器,其与所述缓存及所述存储器耦合,且所述处理器用于:
确定所述编码矩阵的大小;
确定所述数据块的子矩阵的大小,使得所述编码矩阵的大小和所述子矩阵的大小之和小于所述缓存的大小;
请求将所述数据块的所述子矩阵和所述编码矩阵从所述存储器写入所述缓存,其中,所述缓存用于存储所述数据块的所述子矩阵和所述编码矩阵;
通过选择所述数据块的所述子矩阵中的至少两个行并对所述至少两个行进行二进制运算来计算一部分编码块,其中,所述至少两个行是根据所述编码矩阵的第一子矩阵中的元素选择的。
6.根据权利要求5所述的装置,还包括与所述处理器耦合的第一寄存器和第二寄存器,其中,所述计算一部分编码块包括:
从所述第一寄存器中提取所述数据块的所述子矩阵的第一行;
从所述第二寄存器中提取所述数据块的所述子矩阵的第二行,其中,所述第一行和所述第二行是根据所述编码矩阵的所述子矩阵中的元素选择的;
对所述第一行和所述第二行进行异或运算以产生一个结果;
将所述结果存储在所述第一寄存器中。
7.根据权利要求6所述的装置,其特征在于,所述处理器还用于:
根据所述编码矩阵的所述子矩阵的元素提取所述数据块的所述子矩阵的第三行;
计算所述结果和所述第三行的XOR以生成第二结果;
将所述第二结果写入所述第一寄存器。
8.根据权利要求5所述的装置,还包括至少四个与所述处理器耦合的寄存器,其中,所述数据块的所述子矩阵中的所述至少两个行包括至少四行,并存储在所述寄存器中,所述处理器还用于通过单指令多数据(SIMD)运算对所述至少四行进行XOR运算。
9.根据权利要求5所述的装置,其特征在于,所述处理器还用于:
针对大小等于或小于所述子矩阵的所述数据块的多个子矩阵中的每个子矩阵,编码所述选择的子矩阵以生成剩余编码块。
10.根据权利要求5所述的装置,其特征在于,所述对至少两个行的二进制运算包括对所述至少两个行的XOR运算。
11.一种方法,其特征在于,包括:
生成一个包括起始节点和多个节点的图,其中,所述多个节点中的每个节点对应于用于编码容器中的数据的编码矩阵的不同行,从所述起始节点到所述多个节点中的每个节点之间的边是所述编码矩阵的对应行中的1的个数;
将所述多个节点中的所有节点对之间的边添加到所述图中,其中,所述多个节点中的每对节点的第一节点到第二节点间的边是所述编码矩阵中对应的两个行之间的不同位的数量;
根据所述图确定最小生成树;
基于所述最小生成树调整所述编码矩阵;
其中,所述调整所述编码矩阵包括基于最小生成树根据成本重新排列所述编码矩阵的行序以生成新的编码矩阵;
其中,还包括:
通过所述新编码矩阵编码数据块以生成编码内容;
其中,所述通过所述新编码矩阵编码数据块包括:
确定用于编码数据块的编码矩阵的大小;
确定所述数据块的子矩阵的大小,使得所述编码矩阵的大小和所述子矩阵的大小之和小于缓存的大小;
请求将所述数据块的所述子矩阵和所述编码矩阵从存储器写入所述缓存,其中,所述缓存用于存储所述数据块的所述子矩阵和所述编码矩阵;
通过选择所述数据块的所述子矩阵中的至少两个行并对所述至少两个行进行二进制运算来计算一部分编码块,其中,所述至少两个行是根据所述编码矩阵的第一子矩阵中的元素选择的。
12.根据权利要求11所述的方法,其特征在于,还包括生成用于柯西里德-所罗门编码的所述编码矩阵。
Applications Claiming Priority (5)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US201261747747P | 2012-12-31 | 2012-12-31 | |
US61/747,747 | 2012-12-31 | ||
US13/902,343 | 2013-05-24 | ||
US13/902,343 US9037679B2 (en) | 2012-12-31 | 2013-05-24 | Efficient high availability storage systems |
PCT/CN2013/090939 WO2014101872A1 (en) | 2012-12-31 | 2013-12-30 | Efficient high availability storage systems |
Publications (2)
Publication Number | Publication Date |
---|---|
CN104885056A CN104885056A (zh) | 2015-09-02 |
CN104885056B true CN104885056B (zh) | 2018-05-11 |
Family
ID=51018533
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201380068637.8A Active CN104885056B (zh) | 2012-12-31 | 2013-12-30 | 高效高可用性存储系统 |
Country Status (4)
Country | Link |
---|---|
US (1) | US9037679B2 (zh) |
EP (1) | EP2920689B1 (zh) |
CN (1) | CN104885056B (zh) |
WO (1) | WO2014101872A1 (zh) |
Families Citing this family (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20150149528A1 (en) * | 2013-11-25 | 2015-05-28 | At&T Intellectual Property I, L.P. | Methods, Systems and Apparatus to Determine a Distributed Content Share Storage Scheme |
JP6542152B2 (ja) * | 2016-03-29 | 2019-07-10 | 東芝メモリ株式会社 | オブジェクトストレージ、コントローラおよびプログラム |
CN106227463B (zh) * | 2016-07-11 | 2019-06-14 | 苏州科达科技股份有限公司 | Raid、数据读写及其重建方法 |
US10445199B2 (en) * | 2016-12-22 | 2019-10-15 | Western Digital Technologies, Inc. | Bad page management in storage devices |
CN109918225B (zh) * | 2019-02-18 | 2023-05-09 | 麒麟软件有限公司 | 基于飞腾平台的raid6数据恢复优化方法 |
US11588749B2 (en) * | 2020-05-15 | 2023-02-21 | Cisco Technology, Inc. | Load balancing communication sessions in a networked computing environment |
Citations (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101868785A (zh) * | 2007-09-21 | 2010-10-20 | 惠普开发有限公司 | 生成数据存储系统的并行恢复策略 |
Family Cites Families (12)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20040117442A1 (en) * | 2002-12-10 | 2004-06-17 | Thielen Kurt R. | Handheld portable wireless digital content player |
US20050066230A1 (en) | 2003-09-23 | 2005-03-24 | Bean Robert George | Data reliabilty bit storage qualifier and logical unit metadata |
JP4215606B2 (ja) | 2003-09-24 | 2009-01-28 | 日本電気株式会社 | ディスクアレイ装置および記憶容量拡張方法ならびにプログラム |
US7577867B2 (en) | 2006-02-17 | 2009-08-18 | Emc Corporation | Cross tagging to data for consistent recovery |
JP2007226347A (ja) | 2006-02-21 | 2007-09-06 | Hitachi Ltd | 計算機システム、計算機システムの管理装置、及びデータのリカバリー管理方法 |
EP2158542B1 (en) * | 2006-04-04 | 2019-06-05 | Red Hat, Inc. | Storage assignment and erasure coding technique for scalable and fault tolerant storage system |
US9178535B2 (en) * | 2006-06-09 | 2015-11-03 | Digital Fountain, Inc. | Dynamic stream interleaving and sub-stream based delivery |
US7840522B2 (en) * | 2007-03-07 | 2010-11-23 | Microsoft Corporation | Supervised rank aggregation based on rankings |
KR20090003533A (ko) * | 2007-06-15 | 2009-01-12 | 엘지전자 주식회사 | 사용자 손수 저작물의 생성과 운용을 위한 방법 및 시스템 |
US8812614B2 (en) * | 2008-06-05 | 2014-08-19 | Qualcomm Incorporated | Data backup for a mobile computing device |
US8175584B2 (en) * | 2009-09-14 | 2012-05-08 | Texas Instruments Incorporated | System and method to facilitate downloading data at a mobile wireless device |
US8527699B2 (en) * | 2011-04-25 | 2013-09-03 | Pivot3, Inc. | Method and system for distributed RAID implementation |
-
2013
- 2013-05-24 US US13/902,343 patent/US9037679B2/en active Active
- 2013-12-30 EP EP13867762.0A patent/EP2920689B1/en active Active
- 2013-12-30 WO PCT/CN2013/090939 patent/WO2014101872A1/en active Application Filing
- 2013-12-30 CN CN201380068637.8A patent/CN104885056B/zh active Active
Patent Citations (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101868785A (zh) * | 2007-09-21 | 2010-10-20 | 惠普开发有限公司 | 生成数据存储系统的并行恢复策略 |
Also Published As
Publication number | Publication date |
---|---|
US20140189053A1 (en) | 2014-07-03 |
US9037679B2 (en) | 2015-05-19 |
EP2920689A1 (en) | 2015-09-23 |
EP2920689A4 (en) | 2016-02-10 |
EP2920689B1 (en) | 2020-12-23 |
WO2014101872A1 (en) | 2014-07-03 |
CN104885056A (zh) | 2015-09-02 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US11947423B2 (en) | Data reconstruction in distributed storage systems | |
CN104885056B (zh) | 高效高可用性存储系统 | |
US20200218610A1 (en) | Efficient computation of parity data in storage system implementing data striping | |
US20200250032A1 (en) | Flexible reliability coding for storage on a network | |
Rashmi et al. | Having Your Cake and Eating It Too: Jointly Optimal Erasure Codes for {I/O}, Storage, and Network-bandwidth | |
US20160336970A1 (en) | Multiple Erasure Codes for Distributed Storage | |
US20170083603A1 (en) | Co-derived data storage patterns for distributed storage systems | |
JP6487931B2 (ja) | データブロックを再構築する方法及び装置 | |
CN105335150A (zh) | 纠删码数据的快速编解码方法和系统 | |
US20200250034A1 (en) | Data storage methods and systems | |
WO2016130091A1 (en) | Methods of encoding and storing multiple versions of data, method of decoding encoded multiple versions of data and distributed storage system | |
Zhu et al. | Exploring node repair locality in fractional repetition codes | |
US20230049329A1 (en) | Systems, methods, and apparatus for processing data at a storage device | |
Bhuvaneshwari et al. | Review on LDPC codes for big data storage | |
US20230049602A1 (en) | Systems, methods, and apparatus for hierarchical aggregation for computational storage | |
Li et al. | Parallelism-aware locally repairable code for distributed storage systems | |
Samy et al. | Efficient data access in hybrid cloud storage | |
US10164655B2 (en) | Cache oblivious algorithm for butterfly code | |
Haiyang | Designing high-performance erasure coding schemes for next-generation storage systems | |
US20230046030A1 (en) | Systems, methods, and apparatus for data resizing for computational storage | |
US20230208439A1 (en) | Electronic device with erasure coding acceleration for distributed file systems and operating method thereof | |
Ye et al. | A Generic Construction for All Parameters in Minimum Storage Regenerating Codes | |
Su | Optimal pliable fractional repetition codes | |
Gajalwar et al. | Erasure Coding and Data Deduplication: A Comprehensive Survey | |
Yin et al. | P-Schedule: Erasure Coding Schedule Strategy in Big Data Storage System |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
EXSB | Decision made by sipo to initiate substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
GR01 | Patent grant | ||
GR01 | Patent grant |