CN112835738B - 一种条带数据存储结构的构建方法 - Google Patents

一种条带数据存储结构的构建方法 Download PDF

Info

Publication number
CN112835738B
CN112835738B CN202110193270.9A CN202110193270A CN112835738B CN 112835738 B CN112835738 B CN 112835738B CN 202110193270 A CN202110193270 A CN 202110193270A CN 112835738 B CN112835738 B CN 112835738B
Authority
CN
China
Prior art keywords
local
rack
group
data
blocks
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
Application number
CN202110193270.9A
Other languages
English (en)
Other versions
CN112835738A (zh
Inventor
胡燏翀
程良锋
姚乔日
柯兆康
徐佳
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Huazhong University of Science and Technology
Original Assignee
Huazhong University of Science and Technology
Priority date (The priority date 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 date listed.)
Filing date
Publication date
Application filed by Huazhong University of Science and Technology filed Critical Huazhong University of Science and Technology
Priority to CN202110193270.9A priority Critical patent/CN112835738B/zh
Publication of CN112835738A publication Critical patent/CN112835738A/zh
Priority to PCT/CN2021/100281 priority patent/WO2022174537A1/zh
Application granted granted Critical
Publication of CN112835738B publication Critical patent/CN112835738B/zh
Priority to US17/865,313 priority patent/US20220358008A1/en
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/07Responding to the occurrence of a fault, e.g. fault tolerance
    • G06F11/08Error detection or correction by redundancy in data representation, e.g. by using checking codes
    • G06F11/10Adding special bits or symbols to the coded information, e.g. parity check, casting out 9's or 11's
    • G06F11/1004Adding special bits or symbols to the coded information, e.g. parity check, casting out 9's or 11's to protect a block of data words, e.g. CRC or checksum
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/07Responding to the occurrence of a fault, e.g. fault tolerance
    • G06F11/08Error detection or correction by redundancy in data representation, e.g. by using checking codes
    • G06F11/10Adding special bits or symbols to the coded information, e.g. parity check, casting out 9's or 11's
    • G06F11/1076Parity data used in redundant arrays of independent storages, e.g. in RAID systems
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input 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/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0628Interfaces specially adapted for storage systems making use of a particular technique
    • G06F3/0638Organizing or formatting or addressing of data
    • G06F3/064Management of blocks
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F8/00Arrangements for software engineering
    • G06F8/60Software deployment
    • G06F8/65Updates
    • G06F8/658Incremental updates; Differential updates

Abstract

本发明提供了一种条带数据存储结构的构建方法,属于计算机的可靠数据存储领域,条带数据存储结构为:条带为(n,k,r,z),包括局部组和全局组;全局组包括一个机架,用于存储全局校验块;每个局部组中包含
Figure DDA0003566132710000011
个机架,每个机架中设置有不同的存储节点;不同存储节点处存储数据块或局部校验块,且每个机架中的数据块和局部校验块总数为c;其中,每个局部组存储有一个局部校验块和r个数据块;每个机架中的存储节点大于等于c;基于机架容错属性,c小于等于大条带的节点容错能力f;全局校验块的个数为f‑1;z为总机架数目。本发明支持n和k量级为百级的同时确保修复开销和存储开销较低的状态。

Description

一种条带数据存储结构的构建方法
技术领域
本发明属于计算机的可靠数据存储领域,更具体地,涉及一种条带数据存储结构的构建方法。
背景技术
随着计算机和互联网的快速发展,人类产生的数据总量呈现几何量级地爆炸增长。如何低成本且可靠地存储数据,成为业界亟待解决的问题。相较于传统的副本技术,纠删码作为一种具有高存储效率和高可靠性的存储冗余机制,被广泛应用于分布式存储系统中。
但是,相较于副本技术,纠删码会使得数据恢复时存在额外的计算和网络传输开销,即增大了数据的修复开销,且当编码条带越长时,修复开销越大。在这种情况下,之前的研究表明:通过挖掘存储系统中的局部性可以提高数据修复性能;校验块局部性,通过对条带中的数据块进行分组,为每一个组额外生成一个局部校验块,从而使得在单个数据块修复时可以利用局部校验块进行快速修复,但是校验块局部性的存储开销较大;拓扑局部性,通过将同一条带的不同数据块位于相同的机架内,使得数据块修复操作可以通过机架内部带宽快速进行而不需要进行跨机架的数据块传输。但是拓扑局部性与校验块局部性相比,修复开销还是较高。
传统的纠删码存储系统,一般配置编码条带的(n,k)不会很大,其中,k为数据块个数,n为数据块和校验块总数。例如在HDFS中(n,k)=(9,6),f4中为(14,10),Azure中为(16,12),Pelican中为(18,15)等。在这种情况下,n/k仍然较大,即分布式存储系统的存储开销仍然较大。通过设计更大的(n,k)参数,例如(132,128),使得n/k趋近于1,则可以极大地降低存储成本开销。但是,更大的(n,k)编码参数会增加了数据块的修复开销,因此设计新的局部性修复策略从而减小数据块的修复开销是具有十分重要的意义。
发明内容
针对现有技术的缺陷,本发明的目的在于提供一种大条带数据存储结构的构建方法,旨在解决现有的纠删码存储系统存储开销和修复开销比较大的问题。
为实现上述目的,本发明提供了一种条带数据存储结构,条带为(n,k,r,z),包括局部组和全局组;全局组包括一个机架,用于存储全局校验块;每个局部组中包含
Figure GDA0003566132700000021
个机架,每个机架中设置有不同的存储节点;不同存储节点处存储数据块或局部校验块,且每个机架中的数据块和局部校验块总数为c;
其中,每个局部组存储有一个局部校验块和r个数据块;每个机架中的存储节点大于等于c;基于机架容错属性,c小于等于大条带的节点容错能力f;n为一个条带内所有的数据块和校验块数目总和;k为大条带中的数据块;全局校验块的个数为f-1;z为总机架数目。
本发明提供的条带数据存储结构,支持多个条带同步采用多节点编码技术。
基于本发明提供的条带数据存储结构,本发明提供了条带数据存储结构的构建方法,包括以下步骤:
基于条带的参数,权衡条带的存储开销
Figure GDA0003566132700000022
和跨机架修复开销
Figure GDA0003566132700000023
设定每个局部组中的数据块;其中,参数包括一个条带内所有的数据块和校验块数目总和n,大条带中的数据块k和节点容错能力f;
考虑机架容错属性以及数据块修复开销,设定每个机架存放的数据块个数;
基于每个局部组中的数据块个数以及每个机架拥有的数据块个数,计算每个局部组中的机架个数;
采用Azure-LRC方法,每个局部组的所有数据块通过线性编码生成一个局部校验块;且通过柯西矩阵的RS编码计算全局组中的全局校验块;
其中,全局校验块放于同一个机架内的不同存储节点上。
优选地,构建局部校验块和全局校验块的方法为:
随机挑选一机架内的多个节点,将条带中的数据块划分为有序局部组;
以局部组为单元依次将所有局部组的数据块分发至同一个机架的节点上;
采用Azure-LRC方法,首个局部组的所有数据块通过线性编码生成局部组中的局部校验块和f-1个中间结果;其中,f-1个中间结果传递至下一个局部组;
采用Azure-LRC方法,下一局部组所在节点编码自身局部组中的数据块,生成对应的局部校验块,同时利用上一个局部组产生的f-1个中间结果生成新的f-1个中间结果;其中,下一局部组生成的f-1个中间结果传递至下下一局部组;
以此类推,直至所有局部组完成对应局部校验块,并将最后一个局部组产生的f-1个中间结果作为全局校验块;
将数据块、局部校验块和全局校验块分发至对应机架。
优选地,全局校验块的更新方法,包括以下步骤:
a.在更新的数据块所在的存储节点生成差值数据块;
b.通过跨机架传输将差值发送至全局组机架的任一存储节点;
c.利用差值更新步骤b中存储节点的全局校验块;
d.通过机架内部带宽将差值从步骤b中的存储节点传输至剩余全局校验块的存储节点;
e.利用差值更新剩余全局校验块。
优选地,局部校验块更换机架的方法为:
以局部组为单元,每个机架内部的数据块更新时,将对应机架的更新次数加1;
每隔预设时间段,比较局部组中每个机架的更新次数,将局部组中的局部校验块与更新最频繁的机架中任一数据块更换位置。
优选地,局部组内部的数据块修复方法为:
在局部组中失效数据块所在机架选择一个未失效的存储节点为requestor,其他每个机架中选择一个储存节点作为local repairer;
local repairer采集所在机架内所有相同条带的数据块和局部校验块,计算异或值,并将异或值传递至requestor;
requestor收集所在机架内除失效数据块外剩余的数据块和局部校验块,结合所有local repairer传递的异或值,解码获取失效数据块;
存储节点的修复方法为:
通过LRU双链表记录所有最近充当过requestor和local repairer的节点ID;
利用哈希表映射双链表中充当requestor和local repairer节点的真实地址;
当下次数据块修复时选择最近未充当requestor和local repairer的节点作为requestor和local repairer。
基于本发明提供的条带数据存储结构,本发明提供了相应的全局校验块的更新方法,包括以下步骤:
a.在更新的数据块所在的存储节点生成差值数据块;
b.通过跨机架传输将差值发送至全局组机架的任一存储节点;
c.利用差值更新步骤b中存储节点的全局校验块;
d.通过机架内部带宽将差值从步骤b中的存储节点传输至剩余全局校验块的存储节点;
e.利用差值更新剩余全局校验块。
基于本发明提供的条带数据存储结构,本发明提供了相应的局部校验块的更新方法,包括以下步骤:
以局部组为单元,每个机架内部的数据块更新时,将对应机架的更新次数加1;
每隔预设时间段,比较局部组中每个机架的更新次数,将局部组中的局部校验块与更新最频繁的机架中任一数据块更换位置。
基于本发明提供的条带数据存储结构,本发明提供了相应的局部组内部的数据块修复方法,包括以下步骤:
在局部组中失效数据块所在机架选择一个未失效的存储节点为requestor,其他每个机架中选择一个储存节点作为local repairer;
local repairer采集所在机架内所有相同条带的数据块和局部校验块,计算异或值,并将异或值传递至requestor;
requestor收集所在机架内除失效数据块外剩余的数据块和局部校验块,结合所有local repairer传递的异或值,解码获取失效数据块。
基于本发明提供的条带数据存储结构,本发明提供了相应的局部组内部的存储节点的修复方法,包括以下步骤:
通过LRU双链表记录所有最近充当过requestor和local repairer的节点ID;
利用哈希表映射双链表中充当requestor和local repairer节点的真实地址;
当下次数据块修复时选择最近未充当requestor和local repairer的节点作为requestor和local repairer。
总体而言,通过本发明所构思的以上技术方案与现有技术相比,具有以下有益效果:
本发明所提供的基于大条带的低开销数据可靠存储方法及结构,通过结合校验块局部性和拓扑局部性(一个局部组中包含多个机架,多个机架内包含多个存储节点),从而能够有效降低数据块的修复开销,使得修复开销和存储开销均相比于现有技术有所降低。
本发明提供的通过分析配置数据块修复参数r(权衡修复开销和存储开销获取的局部组数据块),实现存储开销和跨机架存储开销的权衡,为存储服务商提供不同场景下的最优参数配置。
本发明提供的条带数据存储结构,支持多个条带同步采用多节点编码技术(本发明中局部校验块和全局校验块的构建过程,支持多个条带同时进行,且可以采用同一机架上多个节点分别编码不同局部组的数据块),而现有技术采用所有数据块在同一节点编码,提高了大条带下的数据块编码效率。
本发明对局部校验块和全局校验块采用机架内部校验块更新的方式,提高了大条带下的数据块更新效率。具体为:全局校验块的更新将差值数据块进行一次跨机架传输至全局组机架的任一存储点,后续采用全局组机架内部带宽将差值传输至剩余全局校验块的存储节点,相比于现有技术实现全局校验块的更新均适用跨机架传输,提高了全局校验块的更新效率。而局部组校验块更新过程是每个预设时间段,将局部组中的局部校验块与更新最频繁的机架中任一数据块更换位置,同样减少了跨机架传输的次数,提升了局部校验块的更新效率。
现有技术中条带的(n,k)中n和k都不会很大,因为更大的n,k值无法同时兼容修复开销较低和存储开销较低,但是,本发明提供的条带数据存储结构和方法,不仅可以支持n,k的值为百量级,同时可以确保修复开销和存储开销均较低。
附图说明
图1是本发明提供的传统校验块局部性和拓扑局部性的技术方法部署图;
图2是本发明提供的大条带结构图;
图3是本发明实施例提供的局部组1修复数据块D1的流程图;
图4是本发明实施例提供的多节点编码示意图;
图5是本发明实施例提供的机架内部校验块更新示意图。
具体实施方式
为了使本发明的目的、技术方案及优点更加清楚明白,以下结合附图及实施例,对本发明进行进一步详细说明。应当理解,此处所描述的具体实施例仅仅用以解释本发明,并不用于限定本发明。
在介绍本发明之前,首先对应用校验块局部性和拓扑局部性的大条带部署方法进行简要介绍。如图1所示,校验块局部性方法,n=32,k=20,r=2,将条带中所有的数据块和校验块全部放置于不同的机架上;当机架1上D1数据块失效后,可以通过局部组1中的数据块D2和局部校验块P1[1-2]完成修复数据块D1,因此,总共跨机架传输2个数据块;拓扑局部性方法,n=33,k=20,z=8,将条带中所有的数据块和校验块全部均匀放置在8个机架上,且校验块全部放置在同一个机架,当机架1上D1数据块失效后,可以通过机架1中的内部带宽获取数据块D2和D3,同时剩余的每一个机架(除放置校验块的机架外)都需要计算本机架上该条带的所有数据块的异或值,然后传输给机架1,结合校验块机架传输给机架1的校验块Q1[1-20]可以完成修复数据块D1,因此总共跨机架传输7个数据块。
下面介绍本发明的技术方案:
本发明提供了一种条带数据存储结构,条带为(n,k,r,z),包括局部组和全局组;全局组包括一个机架,用于存储全局校验块;每个局部组中包含
Figure GDA0003566132700000071
个机架,每个机架中设置有不同的存储节点;不同存储节点处存储数据块或局部校验块,且每个机架中的数据块和局部校验块总数为c;
其中,每个局部组存储有一个局部校验块和r个数据块;每个机架中的存储节点大于等于c;基于机架容错属性,c小于等于大条带的节点容错能力f;n为一个条带内所有的数据块和校验块数目总和;k为大条带中的数据块;全局校验块的个数为f-1;z为总机架数目。
本发明提供的条带数据存储结构,支持多个条带同步采用多节点编码技术。
基于本发明提供的条带数据存储结构,本发明提供了条带数据存储结构的构建方法,包括以下步骤:
基于条带的参数,权衡条带的存储开销
Figure GDA0003566132700000081
和跨机架修复开销
Figure GDA0003566132700000082
设定每个局部组中的数据块;其中,参数包括一个条带内所有的数据块和校验块数目总和n,大条带中的数据块k和节点容错能力f;考虑机架容错属性以及数据块修复开销,设定每个机架存放的数据块个数;
基于每个局部组中的数据块个数以及每个机架拥有的数据块个数,计算每个局部组中的机架个数;
采用Azure-LRC方法,每个局部组的所有数据块通过线性编码生成一个局部校验块;且通过柯西矩阵的RS编码计算全局组中的全局校验块;
其中,全局校验块放于同一个机架内的不同存储节点上。
优选地,构建局部校验块和全局校验块的方法为:
随机挑选一机架内的多个节点,将条带中的数据块划分为有序局部组;
以局部组为单元依次将所有局部组的数据块分发至同一个机架的节点上;
采用Azure-LRC方法,首个局部组的所有数据块通过线性编码生成局部组中的局部校验块和f-1个中间结果;其中,f-1个中间结果传递至下一个局部组;
采用Azure-LRC方法,下一局部组所在节点编码自身局部组中的数据块,生成对应的局部校验块,同时利用上一个局部组产生的f-1个中间结果生成新的f-1个中间结果;其中,下一局部组生成的f-1个中间结果传递至下下一局部组;
以此类推,直至所有局部组完成对应局部校验块,并将最后一个局部组产生的f-1个中间结果作为全局校验块;
将数据块、局部校验块和全局校验块分发至对应机架。
优选地,全局校验块的更新方法,包括以下步骤:
a.在更新的数据块所在的存储节点生成差值数据块;
b.通过跨机架传输将差值发送至全局组机架的任一存储节点;
c.利用差值更新步骤b中存储节点的全局校验块;
d.通过机架内部带宽将差值从步骤b中的存储节点传输至剩余全局校验块的存储节点;
e.利用差值更新剩余全局校验块。
优选地,局部校验块更换机架的方法为:
以局部组为单元,每个机架内部的数据块更新时,将对应机架的更新次数加1;
每隔预设时间段,比较局部组中每个机架的更新次数,将局部组中的局部校验块与更新最频繁的机架中任一数据块更换位置。
优选地,局部组内部的数据块修复方法为:
在局部组中失效数据块所在机架选择一个未失效的存储节点为requestor,其他每个机架中选择一个储存节点作为local repairer;
local repairer采集所在机架内所有相同条带的数据块和局部校验块,计算异或值,并将异或值传递至requestor;
requestor收集所在机架内除失效数据块外剩余的数据块和局部校验块,结合所有local repairer传递的异或值,解码获取失效数据块;
存储节点的修复方法为:
通过LRU双链表记录所有最近充当过requestor和local repairer的节点ID;
利用哈希表映射双链表中充当requestor和local repairer节点的真实地址;
当下次数据块修复时选择最近未充当requestor和local repairer的节点作为requestor和local repairer。
基于本发明提供的条带数据存储结构,本发明提供了相应的全局校验块的更新方法,包括以下步骤:
a.在更新的数据块所在的存储节点生成差值数据块;
b.通过跨机架传输将差值发送至全局组机架的任一存储节点;
c.利用差值更新步骤b中存储节点的全局校验块;
d.通过机架内部带宽将差值从步骤b中的存储节点传输至剩余全局校验块的存储节点;
e.利用差值更新剩余全局校验块。
基于本发明提供的条带数据存储结构,本发明提供了相应的局部校验块的更新方法,包括以下步骤:
以局部组为单元,每个机架内部的数据块更新时,将对应机架的更新次数加1;
每隔预设时间段,比较局部组中每个机架的更新次数,将局部组中的局部校验块与更新最频繁的机架中任一数据块更换位置。
基于本发明提供的条带数据存储结构,本发明提供了相应的局部组内部的数据块修复方法,包括以下步骤:
在局部组中失效数据块所在机架选择一个未失效的存储节点为requestor,其他每个机架中选择一个储存节点作为local repairer;
local repairer采集所在机架内所有相同条带的数据块和局部校验块,计算异或值,并将异或值传递至requestor;
requestor收集所在机架内除失效数据块外剩余的数据块和局部校验块,结合所有local repairer传递的异或值,解码获取失效数据块。
基于本发明提供的条带数据存储结构,本发明提供了相应的局部组内部的存储节点的修复方法,包括以下步骤:
通过LRU双链表记录所有最近充当过requestor和local repairer的节点ID;
利用哈希表映射双链表中充当requestor和local repairer节点的真实地址;
当下次数据块修复时选择最近未充当requestor和local repairer的节点作为requestor和local repairer。
实施例
本发明结合校验块局部性和拓扑局部性方法,下面结合具体的实施方式,进一步描述本发明的技术方案:
(1)构建大条带(26,20,5,9)的步骤,具体如下:
如图2所示,本实施例构建拥有20个数据块,需要具备的节点容错能力为3的大条带;
权衡大条带的存储开销和跨机架修复开销,设定每个局部组中拥有5个数据块;
为了使数据块修复开销最小,设置每个机架拥有存放于不同的存储节点的3个数据块;
基于每个局部组中的数据块个数以及每个机架拥有的数据块个数,计算出每个局部组中有2个机架;
选择Azure-LRC方法,每个局部组的5个数据块通过线性编码生成一个局部校验块;且通过柯西矩阵的RS编码计算全局组中的2个全局校验块,其中,2个全局校验块放在同一个机架内的不同存储节点上,构成全局组。
(2)修复数据块的步骤
如图3所示,以局部组1内部的单个数据块D1修复说明修复数据块的步骤:首先在该局部组中失效数据块在所在机架1选择一存储节点N1 作为requestor,用于收集本机架内剩余的2个数据块块D2和D3,结合机架2上的local repairer获取的异或值,解码得到的失效单个数据块D1;其中,异或值的获取方法为:在机架2中选择一个节点N4作为localrepairer,采集该机架内所有相同条带的数据块D5和局部校验块P1[1-5],并计算异或值P1[1-5]-D4-D5
针对节点修复,采用对单个数据块修复中使用的一个requestor和多个localrepairer进行合理的调度和配置;具体如下:通过LRU双链表记录所有最近充当requestor和local repairer的节点ID;利用哈希表映射双链表中的节点ID和节点真实地址,使得配置节点时的节点查找开销为O(1)时间复杂度。
(3)编码数据块的步骤
编码数据块主要针对局部校验块和全局校验块的生成。传统的编码数据块是在一个节点上对一个条带的k个数据块进行集中编码;当k过大时,会造成编码性能的快速下降。因此,本实施例中,如图四所示,可以利用同一个机架内的4个节点N1、N2、N3和N4进行并行编码;将大条带中的64个数据块划分为4个有序局部组,以局部组为单元依次将所有局部组的数据块分发到同一个机架的4个节点上,将本地所存储的首个局部组的数据块编码生成局部校验块和2个中间结果,其中,2个中间结果转发至下一个局部组所在的节点;下一个局部组所在的节点不仅编码本局部组的数据块生成局部校验块,同时结合接收到的2个中间结果生成新的2个中间结果,并继续转发给下一个局部组所在的节点,直至遍历所有的局部组,得到2个全局校验块Q1[1-64]和Q2[1-64];分发4个节点中各个局部组的数据块、局部校验块和全局校验块到对应的机架内。
(4)更新校验块的步骤
如图五所示,针对全局校验块更新,首先在更新的数据块D1所在的存储节点生成差值数据块D1’-D1;然后通过跨机架发送到全局组的机架的一个存储节点,更新该存储节点的全局校验块Q1[1-64],同时通过机架内带宽发送差值数据块至剩余全局校验块的存储节点;剩余全局校验块节点接收差值数据块,更新全局校验块完成更新;
针对局部校验块更新,构建局部组的机架频率元数据,每当数据块更新时,将该数据块对应的存储节点的机架的更新次数加1,一段时间后,通过将局部校验块与更新最频繁的机架中的随机数据块进行位置调换,实现在机架内部进行局部校验块的更新。
本发明与现有技术相比,存在以下优势:
本发明所提供的基于大条带的低开销数据可靠存储方法及结构,通过结合校验块局部性和拓扑局部性(一个局部组中包含多个机架,多个机架内包含多个存储节点),从而能够有效降低数据块的修复开销,使得修复开销和存储开销均相比于现有技术有所降低。
本发明提供的通过分析配置数据块修复参数r(权衡修复开销和存储开销获取的局部组数据块),实现存储开销和跨机架存储开销的权衡,为存储服务商提供不同场景下的最优参数配置。
本发明提供的条带数据存储结构,支持多个条带同步采用多节点编码技术(本发明中局部校验块和全局校验块的构建过程,支持多个条带同时进行,且可以采用同一机架上多个节点分别编码不同局部组的数据块),而现有技术采用所有数据块在同一节点编码,提高了大条带下的数据块编码效率。
本发明对局部校验块和全局校验块采用机架内部校验块更新的方式,提高了大条带下的数据块更新效率。具体为:全局校验块的更新将差值数据块进行一次跨机架传输至全局组机架的任一存储点,后续采用全局组机架内部带宽将差值传输至剩余全局校验块的存储节点,相比于现有技术实现全局校验块的更新均适用跨机架传输,提高了全局校验块的更新效率。而局部组校验块更新过程是每个预设时间段,将局部组中的局部校验块与更新最频繁的机架中任一数据块更换位置,同样减少了跨机架传输的次数,提升了局部校验块的更新效率。
现有技术中条带的(n,k)中n和k都不会很大,因为更大的n,k值无法同时兼容修复开销较低和存储开销较低,但是,本发明提供的条带数据存储结构和方法,不仅可以支持n,k的值为百量级,同时可以确保修复开销和存储开销均较低。
本领域的技术人员容易理解,以上所述仅为本发明的较佳实施例而已,并不用以限制本发明,凡在本发明的精神和原则之内所作的任何修改、等同替换和改进等,均应包含在本发明的保护范围之内。

Claims (6)

1.一种条带数据存储结构的构建方法,其特征在于,包括以下步骤:
基于条带的参数,权衡条带的存储开销
Figure FDA0003566132690000011
和跨机架修复开销
Figure FDA0003566132690000012
设定每个局部组中的数据块;其中,参数包括一个条带内所有的数据块和校验块数目总和n,大条带中的数据块k和节点容错能力f;
考虑机架容错属性以及数据块修复开销,设定每个机架存放的数据块个数;
基于每个局部组中的数据块个数以及每个机架拥有的数据块个数,计算每个局部组中的机架个数;
采用Azure-LRC方法,每个局部组的所有数据块通过线性编码生成一个局部校验块;且通过柯西矩阵的RS编码计算全局组中的全局校验块;
其中,全局校验块放于同一个机架内的不同存储节点上;
条带数据存储结构为:
条带为(n,k,r,z),包括局部组和全局组;全局组包括一个机架,用于存储全局校验块;每个局部组中包含
Figure FDA0003566132690000013
个机架,每个机架中设置有不同的存储节点;不同存储节点处存储数据块或局部校验块,且每个机架中的数据块和局部校验块总数为c;
其中,每个局部组存储有一个局部校验块和r个数据块;每个机架中的存储节点大于等于c;基于机架容错属性,c小于等于大条带的节点容错能力f;n为一个条带内所有的数据块和校验块数目总和;k为大条带中的数据块;全局校验块的个数为f-1;z为总机架数目。
2.根据权利要求1所述的构建方法,其特征在于,条带数据存储结构支持多个条带同步采用多节点编码技术。
3.根据权利要求2所述的构建方法,其特征在于,构建局部校验块和全局校验块的方法为:
随机挑选一机架内的多个节点,将条带中的数据块划分为有序局部组;
以局部组为单元依次将所有局部组的数据块分发至同一个机架的节点上;
采用Azure-LRC方法,首个局部组的所有数据块通过线性编码生成局部组中的局部校验块和f-1个中间结果;其中,f-1个中间结果传递至下一个局部组;
采用Azure-LRC方法,下一局部组所在节点编码自身局部组中的数据块,生成对应的局部校验块,同时利用上一个局部组产生的f-1个中间结果生成新的f-1个中间结果;其中,下一局部组生成的f-1个中间结果传递至下下一局部组;
以此类推,直至所有局部组完成对应局部校验块,并将最后一个局部组产生的f-1个中间结果作为全局校验块;
将数据块、局部校验块和全局校验块分发至对应机架。
4.根据权利要求1或3所述的构建方法,其特征在于,所述全局校验块的更新方法,包括以下步骤:
a.在更新的数据块所在的存储节点生成差值数据块;
b.通过跨机架传输将差值发送至全局组机架的任一存储节点;
c.利用差值更新步骤b中存储节点的全局校验块;
d.通过机架内部带宽将差值从步骤b中的存储节点传输至剩余全局校验块的存储节点;
e.利用差值更新剩余全局校验块;
所述局部校验块更换机架的方法为:
以局部组为单元,每个机架内部的数据块更新时,将对应机架的更新次数加1;
每隔预设时间段,比较局部组中每个机架的更新次数,将局部组中的局部校验块与更新最频繁的机架中任一数据块更换位置。
5.根据权利要求1所述的构建方法,其特征在于,局部组内部的数据块修复方法,包括以下步骤:
在局部组中失效数据块所在机架选择一个未失效的存储节点为requestor,其他每个机架中选择一个储存节点作为local repairer;
local repairer采集所在机架内所有相同条带的数据块和局部校验块,计算异或值,并将异或值传递至requestor;
requestor收集所在机架内除失效数据块外剩余的数据块和局部校验块,结合所有local repairer传递的异或值,解码获取失效数据块。
6.根据权利要求1所述的构建方法,其特征在于,局部组内部的存储节点修复方法包括以下步骤:
通过LRU双链表记录所有最近充当过requestor和local repairer的节点ID;
利用哈希表映射双链表中充当requestor和local repairer节点的真实地址;
当下次数据块修复时选择最近未充当requestor和local repairer的节点作为requestor和local repairer。
CN202110193270.9A 2021-02-20 2021-02-20 一种条带数据存储结构的构建方法 Active CN112835738B (zh)

Priority Applications (3)

Application Number Priority Date Filing Date Title
CN202110193270.9A CN112835738B (zh) 2021-02-20 2021-02-20 一种条带数据存储结构的构建方法
PCT/CN2021/100281 WO2022174537A1 (zh) 2021-02-20 2021-06-16 一种条带数据存储结构及其构建、修复和更新方法
US17/865,313 US20220358008A1 (en) 2021-02-20 2022-07-14 Wide stripe data storage and constructing, repairing and updating method thereof

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN202110193270.9A CN112835738B (zh) 2021-02-20 2021-02-20 一种条带数据存储结构的构建方法

Publications (2)

Publication Number Publication Date
CN112835738A CN112835738A (zh) 2021-05-25
CN112835738B true CN112835738B (zh) 2022-05-20

Family

ID=75934030

Family Applications (1)

Application Number Title Priority Date Filing Date
CN202110193270.9A Active CN112835738B (zh) 2021-02-20 2021-02-20 一种条带数据存储结构的构建方法

Country Status (3)

Country Link
US (1) US20220358008A1 (zh)
CN (1) CN112835738B (zh)
WO (1) WO2022174537A1 (zh)

Families Citing this family (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN112835738B (zh) * 2021-02-20 2022-05-20 华中科技大学 一种条带数据存储结构的构建方法
CN113687975B (zh) * 2021-07-14 2023-08-29 重庆大学 数据处理方法、装置、设备及存储介质
CN115878366A (zh) * 2021-09-28 2023-03-31 华为技术有限公司 一种基于纠删码的编码方法以及相关设备
JP7443404B2 (ja) * 2022-01-21 2024-03-05 株式会社日立製作所 ストレージシステム
CN114281270B (zh) * 2022-03-03 2022-05-27 山东云海国创云计算装备产业创新中心有限公司 一种数据存储方法、系统、设备以及介质

Family Cites Families (16)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN107817952B (zh) * 2013-01-25 2021-02-19 株式会社日立制作所 存储系统
US9600365B2 (en) * 2013-04-16 2017-03-21 Microsoft Technology Licensing, Llc Local erasure codes for data storage
US9870284B2 (en) * 2015-05-27 2018-01-16 International Business Machines Corporation First responder parities for storage array
CN105302500B (zh) * 2015-11-24 2018-04-10 中国科学技术大学 一种基于动态条带构造的分布式编码方法
US10417094B1 (en) * 2016-07-13 2019-09-17 Peer Fusion, Inc. Hyper storage cluster
CN106844098B (zh) * 2016-12-29 2020-04-03 中国科学院计算技术研究所 一种基于十字交叉纠删编码的快速数据恢复方法及系统
CN108170555B (zh) * 2017-12-21 2021-07-20 浙江大华技术股份有限公司 一种数据恢复方法及设备
CN112313628A (zh) * 2018-06-01 2021-02-02 微软技术许可有限责任公司 利用重叠的本地重构代码的擦除编码
CN108958656B (zh) * 2018-06-27 2021-01-08 北京计算机技术及应用研究所 基于raid5固态硬盘阵列的动态条带系统设计方法
KR102109015B1 (ko) * 2018-10-23 2020-05-11 네이버 주식회사 부분 접속 복구가 가능하고 중복 인코딩이 용이한 데이터 저장 방법 및 시스템
CN109491835B (zh) * 2018-10-25 2022-04-12 哈尔滨工程大学 一种基于动态分组码的数据容错方法
CN110231999B (zh) * 2019-05-29 2020-05-19 华中科技大学 提升基于局部修复编码的存储系统可靠性的方法及装置
CN110347526B (zh) * 2019-06-28 2020-12-18 华中科技大学 提升分布式存储集群中lrc码修复性能的方法、装置及系统
CN111444042B (zh) * 2020-03-24 2023-10-27 哈尔滨工程大学 一种基于纠删码的区块链数据存储方法
CN112835738B (zh) * 2021-02-20 2022-05-20 华中科技大学 一种条带数据存储结构的构建方法
CN113626250A (zh) * 2021-07-08 2021-11-09 华中科技大学 一种基于纠删码的条带合并方法及系统

Also Published As

Publication number Publication date
WO2022174537A1 (zh) 2022-08-25
US20220358008A1 (en) 2022-11-10
CN112835738A (zh) 2021-05-25

Similar Documents

Publication Publication Date Title
CN112835738B (zh) 一种条带数据存储结构的构建方法
CN108540520B (zh) 基于部分重复码的局部性修复编码及节点故障修复方法
CN103944981B (zh) 一种基于纠删码技术改进的云存储系统及实现方法
CN107219997B (zh) 一种用于验证数据一致性的方法及装置
US9998538B2 (en) Dispersed storage with coordinated execution and methods for use therewith
US10140178B2 (en) Verifying a status level of stored encoded data slices
US10620830B2 (en) Reconciling volumelets in volume cohorts
CN103209210B (zh) 一种提高基于纠删码的存储集群恢复性能的方法
CN103746774B (zh) 一种高效数据读取的容错编码方法
CN103106124B (zh) 一种基于纠删码集群存储系统的交叉重构方法
CN103067525A (zh) 一种基于特征码的云存储数据备份方法
WO2023103213A1 (zh) 一种分布式数据库的数据存储方法和装置
CN109491835A (zh) 一种基于动态分组码的数据容错方法
CN108536396B (zh) 一种基于网络编码的存储扩展方法
CN111614720A (zh) 针对集群存储系统单点失效修复的跨集群流量优化方法
CN109194444A (zh) 一种基于网络拓扑的平衡二叉树修复方法
CN112543920B (zh) 数据重构的方法、装置、计算机设备、存储介质及系统
CN107153661A (zh) 一种基于hdfs系统的数据的存储、读取方法及其装置
CN113258936B (zh) 一种基于循环移位的双重编码的构造方法
CN108923960A (zh) 一种基于代理协助再生码的存储节点修复方法
US20230208916A1 (en) Testing A Storage Unit In A Storage Network
CN111741038B (zh) 数据传输方法和数据传输装置
CN107026912A (zh) 嵌入式通信设备数据传输方法
CN113157715B (zh) 纠删码数据中心机架协同更新方法
WO2023082556A1 (zh) 一种面向内存键值纠删码的混合数据更新方法及存储系统

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
GR01 Patent grant
GR01 Patent grant