CN116312726A - 一种数据存储方法、装置、电子设备和存储介质 - Google Patents

一种数据存储方法、装置、电子设备和存储介质 Download PDF

Info

Publication number
CN116312726A
CN116312726A CN202310549195.4A CN202310549195A CN116312726A CN 116312726 A CN116312726 A CN 116312726A CN 202310549195 A CN202310549195 A CN 202310549195A CN 116312726 A CN116312726 A CN 116312726A
Authority
CN
China
Prior art keywords
sub
stripe
initial
code
target
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.)
Granted
Application number
CN202310549195.4A
Other languages
English (en)
Other versions
CN116312726B (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.)
Suzhou Inspur Intelligent Technology Co Ltd
Original Assignee
Suzhou Inspur Intelligent Technology Co Ltd
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 Suzhou Inspur Intelligent Technology Co Ltd filed Critical Suzhou Inspur Intelligent Technology Co Ltd
Priority to CN202310549195.4A priority Critical patent/CN116312726B/zh
Publication of CN116312726A publication Critical patent/CN116312726A/zh
Application granted granted Critical
Publication of CN116312726B publication Critical patent/CN116312726B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • GPHYSICS
    • G11INFORMATION STORAGE
    • G11CSTATIC STORES
    • G11C29/00Checking stores for correct operation ; Subsequent repair; Testing stores during standby or offline operation
    • G11C29/04Detection or location of defective memory elements, e.g. cell constructio details, timing of test signals
    • G11C29/08Functional testing, e.g. testing during refresh, power-on self testing [POST] or distributed testing
    • G11C29/12Built-in arrangements for testing, e.g. built-in self testing [BIST] or interconnection details
    • G11C29/38Response verification devices
    • G11C29/42Response verification devices using error correcting codes [ECC] or parity check
    • YGENERAL 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
    • Y02TECHNOLOGIES OR APPLICATIONS FOR MITIGATION OR ADAPTATION AGAINST CLIMATE CHANGE
    • Y02DCLIMATE CHANGE MITIGATION TECHNOLOGIES IN INFORMATION AND COMMUNICATION TECHNOLOGIES [ICT], I.E. INFORMATION AND COMMUNICATION TECHNOLOGIES AIMING AT THE REDUCTION OF THEIR OWN ENERGY USE
    • Y02D10/00Energy efficient computing, e.g. low power processors, power management or thermal management

Landscapes

  • Detection And Correction Of Errors (AREA)

Abstract

本发明实施例提供了一种数据存储方法、装置、电子设备和存储介质,涉及计算机系统及存储技术领域;获取磁盘阵列的初始纠删码,依据初始第一子条带的数据码生成初始第一子条带的校验码;依据初始第二子条带的数据码生成初始第二子条带的校验码;依据初始第一子条带的数据码和初始第二子条带的校验码,生成目标第二子条带的校验码;依据目标第二子条带的校验码和初始第一子条带的校验码,生成目标第一子条带的校验码;确定初始第一子条带的数据码、初始第二子条带的数据码、目标第一子条带的校验码和目标第二子条带的校验码为目标纠删码;基于目标纠删码进行编码存储系统重建,以对数据进行存储。通过本发明实施例提高校验节点重建速度。

Description

一种数据存储方法、装置、电子设备和存储介质
技术领域
本发明涉及计算机系统及存储技术领域,特别是涉及一种数据存储方法、一种数据存储装置、一种电子设备和一种存储介质。
背景技术
面对海量数据的存储要求,为了提高存储系统的数据可靠性,保证数据收集节点能以很高的概率实现原始文件的重构,需要在存储原始数据的基础上,额外存储一定数量的冗余,使得在出现部分节点失效的情况下,系统仍然可以正常运行,数据收集节点仍然可以对原始文件实现解码恢复。同时,为了维持系统的可靠性,需要对失效的节点及时进行修复,因此,设计一个良好的节点修复机制十分重要。纠删码(Erasure Code)属于编码理论中的一种前向纠错技术,最早应用于通信领域以解决数据传输中的丢失与损耗这类问题。由于纠删码技术在防止数据丢失取得了较好的效果,因此被引入存储领域。但是当重建校验节点时,HitchHiker码等纠删码所需的网络流量和磁盘IO(input/output,输入输出)较大,导致重建校验节点的速度较慢。
发明内容
鉴于上述问题,提出了本发明实施例以便提供一种克服上述问题或者至少部分地解决上述问题的一种数据存储方法、一种数据存储装置、一种电子设备和一种存储介质。
在本发明的第一个方面,本发明实施例公开了一种数据存储方法,其特征在于,包括:
获取磁盘阵列的初始纠删码,所述初始纠删码包括初始第一子条带和初始第二子条带;
依据所述初始第一子条带的数据码生成所述初始第一子条带的校验码;依据所述初始第二子条带的数据码生成所述初始第二子条带的校验码;
依据所述初始第一子条带的数据码和所述初始第二子条带的校验码,生成目标第二子条带的校验码;
依据所述目标第二子条带的校验码和所述初始第一子条带的校验码,生成目标第一子条带的校验码;
确定所述初始第一子条带的数据码、所述初始第二子条带的数据码、所述目标第一子条带的校验码和所述目标第二子条带的校验码为目标纠删码;
基于所述目标纠删码进行编码存储系统重建,以对数据进行存储。
可选地,所述依据所述初始第一子条带的数据码生成所述初始第一子条带的校验码的步骤包括:
基于里德所罗门码编码,对所述初始第一子条带的数据码进行编码,生成所述初始第一子条带的校验码。
可选地,所述里德所罗门码编码为范德蒙矩阵,所述基于里德所罗门码编码,对所述初始第一子条带的数据码进行编码,生成所述初始第一子条带的校验码的步骤包括:
基于范德蒙矩阵,对所述初始第一子条带的数据码进行编码,得到全局校验码;
确定所述全局校验码为所述初始第一子条带的校验码。
可选地,所述依据所述初始第二子条带的数据码生成所述初始第二子条带的校验码的步骤包括:
基于里德所罗门码编码,对所述初始第二子条带的数据码进行编码,生成所述初始第二子条带的校验码。
可选地,所述里德所罗门码编码为范德蒙矩阵,所述基于里德所罗门码编码,对所述初始第二子条带的数据码进行编码,生成所述初始第二子条带的校验码的步骤包括:
基于范德蒙矩阵,对所述初始第二子条带的数据码进行编码,得到全局校验码;
确定所述全局校验码为所述初始第二子条带的校验码。
可选地,所述初始第一子条带的数据码的数量为k个,所述初始第二子条带的校验码的数量为m个;所述依据所述初始第一子条带的数据码和所述初始第二子条带的校验码,生成目标第二子条带的校验码的步骤包括:
依据所述初始第二子条带的m个校验码,将所述初始第一子条带的k个数据码进行分组,得到多组第一数据码组;
将所述多组第一数据码组与所述初始第二子条带的校验码进行异或运算,生成所述目标第二子条带的校验码。
其中,所述k和所述m为非零正整数,且所述k大于所述m。
可选地,所述依据所述初始第二子条带的m个校验码,将所述初始第一子条带的k个数据码进行分组的步骤包括:
将所述初始第一子条带的k个数据码划分为m-1组第一数据码组;其中前m-2组第一数据码组包括
Figure SMS_1
个所述初始第一子条带的数据码,第m-1组第一数据码组包括
Figure SMS_2
个所述初始第一子条带的数据码。
可选地,所述将所述多组第一数据码组与所述初始第二子条带的校验码进行异或运算,生成所述目标第二子条带的校验码的步骤包括:
将所述m-1组第一数据码组分别与所述初始第二子条带的第二个至第m个校验码进行异或运算,生成所述目标第二子条带的校验码。
可选地,将所述m-1组第一数据码组分别与所述初始第二子条带的第二个至第m个校验码进行异或运算,生成所述目标第二子条带的校验码的步骤包括:
所述m-1组第一数据码组分别与所述初始第二子条带的第二个至第m个校验码进行异或运算,生成m-1个目标第二子条带的校验码;
将所述m-1个目标第二子条带的校验码按照所述初始第二子条带的校验码的位置进行填入。
可选地,所述k为10。
可选地,所述m为4。
可选地,所述依据所述目标第二子条带的校验码和所述初始第一子条带的校验码,生成目标第一子条带的校验码的步骤包括:
将所述m-1个目标第二子条带的校验码与所述初始第一子条带的校验码进行异或运算,生成所述目标第一子条带的校验码。
可选地,所述将所述m-1个目标第二子条带的校验码与所述初始第一子条带的校验码进行异或运算,生成所述目标第一子条带的校验码的步骤包括:
将所述m-1个目标第二子条带的校验码与所述初始第一子条带的第一个校验码进行异或运算,生成异或值;
依据所述异或值和所述初始第一子条带的校验码,生成所述目标第一子条带的校验码。
可选地,所述依据所述异或值和所述初始第一子条带的校验码,生成所述目标第一子条带的校验码的步骤包括:
将所述异或值更新至所述初始第一子条带的第一个校验码,生成所述目标第一子条带的校验码。
可选地,所述目标纠删码包括:目标第一子条带和目标第二子条带,所述确定所述初始第一子条带的数据码、所述初始第二子条带的数据码、所述目标第一子条带的校验码和所述目标第二子条带的校验码为目标纠删码的步骤包括:
结合所述初始第一子条带的数据码和所述目标第一子条带的校验码确定所述目标第一子条带;
结合所述初始第二子条带的数据码和所述目标第二子条带的校验码确定所述目标第二子条带。
可选地,所述编码存储系统包括数据节点,所述基于所述目标纠删码进行编码存储系统重建的步骤包括:
依据所述目标纠删码对所述数据节点进行重建。
可选地,所述编码存储系统包括校验节点,所述基于所述目标纠删码进行编码存储系统重建的步骤包括:
依据所述目标纠删码对所述校验节点进行重建。
在本发明的第二个方面,本发明实施例公开了一种数据存储装置,包括:
获取模块,用于获取磁盘阵列卡的初始纠删码,所述初始纠删码包括初始第一子条带和初始第二子条带;
第一编码模块,用于依据所述初始第一子条带的数据码生成所述初始第一子条带的校验码;依据所述初始第二子条带的数据码生成所述初始第二子条带的校验码;
第二编码模块,用于依据所述初始第一子条带的数据码和所述初始第二子条带的校验码,生成目标第二子条带的校验码;
第三编码模块,用于依据所述目标第二子条带的校验码和所述初始第一子条带的校验码,生成目标第一子条带的校验码;
确定模块,用于确定所述初始第一子条带的数据码、所述初始第二子条带的数据码、所述目标第一子条带的校验码和所述目标第二子条带的校验码为目标纠删码;
重建模块,用于基于所述目标纠删码进行编码存储系统重建,以对数据进行存储。
在本发明的第三个方面,本发明实施例还公开了一种电子设备,包括处理器、存储器及存储在所述存储器上并能够在所述处理器上运行的计算机程序,所述计算机程序被所述处理器执行时实现如上所述的数据存储方法的步骤。
在本发明的第四个方面,本发明实施例还公开了一种计算机可读存储介质,所述计算机可读存储介质上存储计算机程序,所述计算机程序被处理器执行时实现如上所述的数据存储方法的步骤。
本发明实施例包括以下优点:
本发明实施例通过获取磁盘阵列卡的初始纠删码,所述初始纠删码包括初始第一子条带和初始第二子条带;依据所述初始第一子条带的数据码生成所述初始第一子条带的校验码;依据所述初始第二子条带的数据码生成所述初始第二子条带的校验码;依据所述初始第一子条带的数据码和所述初始第二子条带的校验码,生成目标第二子条带的校验码;依据所述目标第二子条带的校验码和所述初始第一子条带的校验码,生成目标第一子条带的校验码;确定所述初始第一子条带的数据码、所述初始第二子条带的数据码、所述目标第一子条带的校验码和所述目标第二子条带的校验码为目标纠删码;基于所述目标纠删码进行编码存储系统重建,以对数据进行存储。通过依据初始纠删码创建目标纠删码,采用所述目标纠删码进行系统重建,减少节点读取量,提高了校验节点的重建速度。
附图说明
图1是本发明的一种数据存储方法实施例的步骤流程图;
图2是本发明的另一种数据存储方法实施例的步骤流程图;
图3是本发明实施例的磁盘阵列卡架构图;
图4是本发明的另一种数据存储方法实施例的全局校验码编码过程示意图;
图5是本发明的另一种数据存储方法实施例的初始纠删码编码示例图;
图6是本发明的另一种数据存储方法实施例的目标纠删码编码示例图一;
图7是本发明的另一种数据存储方法实施例的目标纠删码编码示例图二;
图8是本发明的另一种数据存储方法实施例的编码切换示意图一;
图9是本发明的另一种数据存储方法实施例的编码切换示意图二;
图10是本发明的一种数据存储装置实施例的结构框图;
图11是本发明实施例提供的一种电子设备的结构框图;
图12是本发明实施例提供的一种存储介质的结构框图。
具体实施方式
为使本发明的上述目的、特征和优点能够更加明显易懂,下面结合附图和具体实施方式对本发明作进一步详细的说明。
参照图1,示出了本发明的一种数据存储方法实施例的步骤流程图,所述数据存储方法具体可以包括如下步骤:
步骤101,获取磁盘阵列卡的初始纠删码,所述初始纠删码包括初始第一子条带和初始第二子条带;
在本发明实施例中,可以先获取到磁盘阵列卡的初始纠删码,该初始纠删码可以为HitchHiker(顺路者)码,初始纠删码包括初始第一子条带和初始第二子条带两条子条带。初始第一子条带会具有对应的数据码和校验码。初始第二子条带会具有对应的数据码和校验码。
步骤102,依据所述初始第一子条带的数据码生成所述初始第一子条带的校验码;依据所述初始第二子条带的数据码生成所述初始第二子条带的校验码;
由于数据是已知的,即初始第一子条带的数据码和初始第二子条带的数据码是已知的,可以依据初始第一子条带的数据码生成初始第一子条带的校验码;依据初始第二子条带的数据码生成初始第二子条带的校验码;从而得到完整的初始纠删码。
步骤103,依据所述初始第一子条带的数据码和所述初始第二子条带的校验码,生成目标第二子条带的校验码;
对初始第一子条带的数据码和初始第二子条带的校验码异或运算,生成目标第二子条带的校验码。
步骤104,依据所述目标第二子条带的校验码和所述初始第一子条带的校验码,生成目标第一子条带的校验码;
对目标第二子条带的校验码和初始第一子条带的校验码进行异或运算,生成目标第一子条带的校验码。
步骤105,确定所述初始第一子条带的数据码、所述初始第二子条带的数据码、所述目标第一子条带的校验码和所述目标第二子条带的校验码为目标纠删码;
基于得到的目标第一子条带的校验码、目标第二子条带的校验码、初始第一子条带的数据码和初始第二子条带的数据码插入到指定位置组合,确定出目标纠删码,可见目标纠删码是基于初始纠删码的基础上改进生成。
步骤106,基于所述目标纠删码进行编码存储系统重建,以对数据进行存储。
采用目标纠删码对进行编码存储系统重建,,以对数据进行存储。具体的可以是对校验节点进行重建。
本发明实施例通过获取磁盘阵列卡的初始纠删码,所述初始纠删码包括初始第一子条带和初始第二子条带;依据所述初始第一子条带的数据码生成所述初始第一子条带的校验码;依据所述初始第二子条带的数据码生成所述初始第二子条带的校验码;依据所述初始第一子条带的数据码和所述初始第二子条带的校验码,生成目标第二子条带的校验码;依据所述目标第二子条带的校验码和所述初始第一子条带的校验码,生成目标第一子条带的校验码;确定所述初始第一子条带的数据码、所述初始第二子条带的数据码、所述目标第一子条带的校验码和所述目标第二子条带的校验码为目标纠删码;基于所述目标纠删码进行编码存储系统重建,以对数据进行存储。通过依据初始纠删码创建目标纠删码,采用所述目标纠删码进行系统重建,减少节点读取量,提高了校验节点的重建速度。
参照图2,示出了本发明的另一种数据存储方法实施例的步骤流程图,所述数据存储方法可以应用于磁盘阵列卡上,所述磁盘阵列卡架构图可以参照图3,纠删码编/解码的硬件加速模块:用于对原始数据块编码,生成校验数据块,以及当发生页错误、块错误或芯片故障时,对幸存的数据块进行解码运算,恢复丢失的数据。条带组织模块:在基于超级块管理的SSD中,以超级页的形式进行条带的划分。自适应容错模块:该模块定期检测超级块内的高磨损块数,然后根据该指标动态地应用具有不同容错能力的RS纠删码。双链表分区管理的写缓存模块在合适的时机启动纠删码的编码器,完成校验数据的生成;将用户数据和校验数据组织到同一条带中,保证用户数据和校验数据的一致性。数据恢复与重建模块为恢复出的数据提供了不同的重建布局方法。
所述数据存储方法具体可以包括如下步骤:
步骤201,获取磁盘阵列卡的初始纠删码,所述初始纠删码包括初始第一子条带和初始第二子条带;
在本发明实施例中,可以获取到磁盘阵列卡的初始纠删码,初始纠删码包括初始第一子条带和初始第二子条带。
步骤202,依据所述初始第一子条带的数据码生成所述初始第一子条带的校验码;依据所述初始第二子条带的数据码生成所述初始第二子条带的校验码;
针对于第一子条带和初始第二子条带,分别依据初始第一子条带的数据码生成初始第一子条带的校验码,依据初始第二子条带的数据码生成初始第二子条带的校验码。
在本发明的一可选实施例中,所述依据所述初始第一子条带的数据码生成所述初始第一子条带的校验码的步骤包括:
子步骤S2021,基于里德所罗门码编码,对所述初始第一子条带的数据码进行编码,生成所述初始第一子条带的校验码。
可以基于里德所罗门码(Reed-Solomon Code ,RS码)编码方式,对初始第一子条带的数据码进行编码,生成初始第一子条带的校验码。
具体地,可所述里德所罗门码编码为范德蒙矩阵,所述基于里德所罗门码编码,对所述初始第一子条带的数据码进行编码,生成所述初始第一子条带的校验码的步骤包括:基于范德蒙矩阵,对所述初始第一子条带的数据码进行编码,得到全局校验码;确定所述全局校验码为所述初始第一子条带的校验码。
在实际应用中,可以基于范德蒙矩阵,对初始第一子条带的数据码进行编码,得到全局校验码,将得到的全局校验码按照顺序依次放在初始第一子条带的校验码的位置上,确定出初始第一子条带的校验码。
在本发明的一可选实施例中,所述依据所述初始第二子条带的数据码生成所述初始第二子条带的校验码的步骤包括:
子步骤S2021,基于里德所罗门码编码,对所述初始第二子条带的数据码进行编码,生成所述初始第二子条带的校验码。
针对于初始第二子条带的校验码同理,可以基于里德所罗门码编码方式,对初始第二子条带的数据码进行编码,生成初始第二子条带的校验码。
具体地,所述里德所罗门码编码为范德蒙矩阵,所述基于里德所罗门码编码,对所述初始第二子条带的数据码进行编码,生成所述初始第二子条带的校验码的步骤包括:基于范德蒙矩阵,对所述初始第二子条带的数据码进行编码,得到全局校验码;确定所述全局校验码为所述初始第二子条带的校验码。
可以基于范德蒙矩阵,对初始第二子条带的数据码进行编码,得到全局校验码,将得到的全局校验码按照顺序依次放在初始第二子条带的校验码的位置上,确定出初始第二子条带的校验码。
举例而言,可以参照图4,利用范德蒙矩阵的RS纠删码进行编码,得到f1-f4即为全局校验码,分别针对初始第一子条带的数据码进行编码和初始第二子条带的数据码进行编码,如图5所示,得到初始第一子条带和初始第一子条带的数据码和校验码数据。
步骤202,依据所述初始第一子条带的数据码生成所述初始第一子条带的校验码;依据所述初始第二子条带的数据码生成所述初始第二子条带的校验码;
步骤203,依据所述初始第一子条带的数据码和所述初始第二子条带的校验码,生成目标第二子条带的校验码;
在本发明实施例中,可以依据初始第一子条带的数据码和初始第二子条带的校验码进行异或运算,生成目标第二子条带的校验码。
在本发明的一可选实施例中,所述初始第一子条带的数据码的数量为k个,所述初始第二子条带的校验码的数量为m个;所述依据所述初始第一子条带的数据码和所述初始第二子条带的校验码,生成目标第二子条带的校验码的步骤包括:
子步骤S2031,依据所述初始第二子条带的m个校验码,将所述初始第一子条带的k个数据码进行分组,得到多组第一数据码组;
首先,可以针对初始第一子条带的k个数据码,依据初始第二子条带的m个校验码进行分组,分成多组第一数据码组。多组第一数据码组中的任一组数据码组包括若干个数据码。
子步骤S2031,将所述多组第一数据码组与所述初始第二子条带的校验码进行异或运算,生成所述目标第二子条带的校验码。
再将多组第一数据码组分别与初始第二子条带的校验码进行异或运算,并放入对应的位置,生成目标第二子条带的校验码。
其中,所述k和所述m为非零正整数,且所述k大于所述m。k和m根据所在架构确定,本发明实施例对此不作限定。在本发明的一示例中,所述k为10。所述m为4。
进一步地,所述依据所述初始第二子条带的m个校验码,将所述初始第一子条带的k个数据码进行分组的步骤包括:将所述初始第一子条带的k个数据码划分为m-1组第一数据码组;其中前m-2组第一数据码组包括
Figure SMS_3
个所述初始第一子条带的数据码,第m-1组第一数据码组包括/>
Figure SMS_4
个所述初始第一子条带的数据码。
在实际应用中,可以首先将初始第一子条带的k数据码分成m-1组,前
Figure SMS_5
组中每份含有/>
Figure SMS_6
个初始第一子条带的数据码,第m-1组含有/>
Figure SMS_7
个初始第一子条带的数据码。
进一步地,所述将所述多组第一数据码组与所述初始第二子条带的校验码进行异或运算,生成所述目标第二子条带的校验码的步骤包括:将所述m-1组第一数据码组分别与所述初始第二子条带的第二个至第m个校验码进行异或运算,生成所述目标第二子条带的校验码。
在本发明实施例中,可以将m-1组第一数据码组分别与初始第二子条带的第二个至第m个校验码进行异或运算,并将结果放入对应位置生成目标第二子条带的校验码。
具体地,所述将所述m-1组第一数据码组分别与所述初始第二子条带的第二个至第m个校验码进行异或运算,生成所述目标第二子条带的校验码的步骤包括:所述m-1组第一数据码组分别与所述初始第二子条带的第二个至第m个校验码进行异或运算,生成m-1个目标第二子条带的校验码;将所述m-1个目标第二子条带的校验码按照所述初始第二子条带的校验码的位置进行填入。
在实际应用中,将m-1组第一数据码组分别与初始第二子条带的第二个至第m个校验码进行异或运算,即将m-1组第一数据码与分别与初始第二子条带的第二、第三……第m个校验码进行异或运算,生成第m-1个目标第二子条带的校验码;再将m-1个目标第二子条带的校验码按照初始第二子条带的校验码的位置进行填入,生成目标第二子条带的校验码。
参照图6,以(10,4)编码为例,此时数据盘数为k=10块,需要初始第一子条带中这10个数据码分成
Figure SMS_9
组,前/>
Figure SMS_13
组中数据块数为/>
Figure SMS_15
,分别为
Figure SMS_10
和/>
Figure SMS_12
,最后一组数据块数为/>
Figure SMS_14
即/>
Figure SMS_16
,这3组分别与/>
Figure SMS_8
进行异或,结果放置在/>
Figure SMS_11
所在的位置。
步骤204,依据所述目标第二子条带的校验码和所述初始第一子条带的校验码,生成目标第一子条带的校验码;
在本发明实施中,还可以依据目标第二子条带的校验码和初始第一子条带的校验码进行异或运算,生成目标第一子条带的校验码。
在本发明的一可选实施例中,所述依据所述目标第二子条带的校验码和所述初始第一子条带的校验码,生成目标第一子条带的校验码的步骤包括:
子步骤S2041,将所述m-1个目标第二子条带的校验码与所述初始第一子条带的校验码进行异或运算,生成所述目标第一子条带的校验码。
在本发明实施例中,将m-1个目标第二子条带的校验码与初始第一子条带的校验码进行异或运算,并将其填入到初始第一子条带的校验码对应的位置,生成目标第一子条带的校验码。
进一步地,所述将所述m-1个目标第二子条带的校验码与所述初始第一子条带的校验码进行异或运算,生成所述目标第一子条带的校验码的步骤包括:将所述m-1个目标第二子条带的校验码与所述初始第一子条带的第一个校验码进行异或运算,生成异或值;依据所述异或值和所述初始第一子条带的校验码,生成所述目标第一子条带的校验码。
可以将m-1个目标第二子条带的校验码与初始第一子条带的第一个校验码进行异或运算,生成异或值;再基于该异或值和初始第一子条带的校验码的结合,生成目标第一子条带的校验码。
具体地,所述依据所述异或值和所述初始第一子条带的校验码,生成所述目标第一子条带的校验码的步骤包括:将所述异或值更新至所述初始第一子条带的第一个校验码,生成所述目标第一子条带的校验码。
对于异或值和初始第一子条带的校验码的结合,可以是将异或值更新至初始第一子条带的第一个校验码,即将异或值放在初始第一子条带的第一个校验码的位置,初始第一子条带的其余校验码不变,生成目标第一子条带的校验码。
举例而言,可以参照图7,将第二个子条带的校验码
Figure SMS_17
与/>
Figure SMS_18
异或,得到的异或值放在初始第一个子条带的校验码/>
Figure SMS_19
的位置,生成目标第一子条带的校验码。
步骤205,确定所述初始第一子条带的数据码、所述初始第二子条带的数据码、所述目标第一子条带的校验码和所述目标第二子条带的校验码为目标纠删码;
得到目标第一子条带的校验码和目标第二子条带的校验码后,依据初始第一子条带的数据码、初始第二子条带的数据码、目标第一子条带的校验码和目标第二子条带的校验码进行结合得到目标纠删码。
具体地,所述目标纠删码包括:目标第一子条带和目标第二子条带,所述确定所述初始第一子条带的数据码、所述初始第二子条带的数据码、所述初始第一子条带的校验码和所述目标第二子条带的校验码为目标纠删码的步骤包括:结合所述初始第一子条带的数据码和所述初始第一子条带的校验码确定所述目标第一子条带;结合所述初始第二子条带的数据码和所述目标第二子条带的校验码确定所述目标第二子条带。
将初始第一子条带的数据码和初始第一子条带的校验码,进行结合,将结合后的数据确定为。目标第一子条带;将初始第二子条带的数据码和目标第二子条带的校验码进行结合,将结合后的数据确定为目标第二子条带。
步骤206,依据所述目标纠删码对所述校验节点进行重建。
在得到目标纠删码后,可以目标纠删码对校验节点进行重建。以图7所示的目标纠删码对校验节点进行重建的过程进行说明:当重建第一个校验节点时,目标纠删码需要读取第二子条带的
Figure SMS_21
共10个数据节点,并编码得到/>
Figure SMS_24
,然后读取/>
Figure SMS_27
Figure SMS_23
、/>
Figure SMS_26
进行异或即可得到/>
Figure SMS_28
,只读取了13个数据块,相较初始纠删码针对数据块的读取量节省了35%的量;当重建第二个校验节点时,目标纠删码需要读取/>
Figure SMS_31
共10个数据节点,并编码得到/>
Figure SMS_20
,然后读取
Figure SMS_25
、/>
Figure SMS_29
和/>
Figure SMS_30
进行异或可以得到/>
Figure SMS_22
,整个过程读取了13个数据块,相较初始纠删码针对数据块的读取量节省了35%的量;同理,当重建第三个、第四个校验节点时,数据块的读取量节省了35%,从而提高了针对校验节点的重建速度。
步骤207,依据所述目标纠删码对所述数据节点进行重建。
在得到目标纠删码后,可以目标纠删码对数据节点进行重建。以图7所示的目标纠删码对数据节点进行重建的过程进行说明:当重建第一个数据节点即
Figure SMS_32
和/>
Figure SMS_36
时,目标纠删码可以先读取/>
Figure SMS_37
恢复/>
Figure SMS_34
,进而求得/>
Figure SMS_35
. 再读取/>
Figure SMS_38
以及子条带b中的第12个子块/>
Figure SMS_39
后,进行异或运算即可恢复得到/>
Figure SMS_33
,整个过程读取了13个节点,重建速度较快。
此外,在本发明实施例中,还可以根据存储系统的需求,对初始纠删码和目标纠删码进行切换。参照图8,若对于(k,r)初始纠删码转换成目标纠删码,采用重新编码算法,则需要读取第一个、第二个子条带的所有数据块,通过RS编码生成第一、第二个子条带的校验块,并将结果发送到第二个子条带对应的节点,因此需要读取2k个数据块、传输(2k+2r)块。从图7可以看出,本发明提供的切换方式只需要读取r个数据块、传输r+1个数据块,通过异或即可实现,数据的读取量减少了2k-r块、数据的传输量减少了(2k+r-1)块。参照图9,将上述过程进行逆操作,即采用上述的逆过程,即可以将目标纠删码切换为初始纠删码。
本发明实施例通过获取初始纠删码,所述初始纠删码包括初始第一子条带和初始第二子条带;依据所述初始第一子条带的数据码生成所述初始第一子条带的校验码;依据所述初始第二子条带的数据码生成所述初始第二子条带的校验码;依据所述初始第一子条带的数据码和所述初始第二子条带的校验码,生成目标第二子条带的校验码;依据所述目标第二子条带的校验码和所述初始第一子条带的校验码,生成目标第一子条带的校验码;确定所述初始第一子条带的数据码、所述初始第二子条带的数据码、所述目标第一子条带的校验码和所述目标第二子条带的校验码为目标纠删码;依据所述目标纠删码对所述校验节点进行重建;依据所述目标纠删码对所述数据节点进行重建。通过依据初始纠删码创建目标纠删码,采用所述目标纠删码进行系统重建,减少节点读取量,提高了校验节点的重建速度。
需要说明的是,对于方法实施例,为了简单描述,故将其都表述为一系列的动作组合,但是本领域技术人员应该知悉,本发明实施例并不受所描述的动作顺序的限制,因为依据本发明实施例,某些步骤可以采用其他顺序或者同时进行。其次,本领域技术人员也应该知悉,说明书中所描述的实施例均属于优选实施例,所涉及的动作并不一定是本发明实施例所必须的。
参照图10,示出了本发明的一种数据存储装置实施例的结构框图,所述数据存储装置具体可以包括如下模块:
获取模块1001,用于获取初始纠删码,所述初始纠删码包括初始第一子条带和初始第二子条带;
第一编码模块1002,用于依据所述初始第一子条带的数据码生成所述初始第一子条带的校验码;依据所述初始第二子条带的数据码生成所述初始第二子条带的校验码;
第二编码模块1003,用于依据所述初始第一子条带的数据码和所述初始第二子条带的校验码,生成目标第二子条带的校验码;
第三编码模块1004,用于依据所述目标第二子条带的校验码和所述初始第一子条带的校验码,生成目标第一子条带的校验码;
确定模块1005,用于确定所述初始第一子条带的数据码、所述初始第二子条带的数据码、所述目标第一子条带的校验码和所述目标第二子条带的校验码为目标纠删码;
重建模块1006,用于基于所述目标纠删码进行编码存储系统重建。
在本发明的一可选实施例中,所述第一编码模块1002包括:
第一编码子模块,用于基于里德所罗门码编码,对所述初始第一子条带的数据码进行编码,生成所述初始第一子条带的校验码
在本发明的一可选实施例中,所述里德所罗门码编码为范德蒙矩阵,所述第一编码子模块包括:
第一编码单元,用于基于范德蒙矩阵,对所述初始第一子条带的数据码进行编码,得到全局校验码;
第一子条带的校验码确定单元,用于确定所述全局校验码为所述初始第一子条带的校验码。
在本发明的一可选实施例中,所述第一编码模块1002包括:
第二编码子模块,用于基于里德所罗门码编码,对所述初始第二子条带的数据码进行编码,生成所述初始第二子条带的校验码。
在本发明的一可选实施例中,所述里德所罗门码编码为范德蒙矩阵,所述第二编码子模块包括:
第二编码单元,用于基于范德蒙矩阵,对所述初始第二子条带的数据码进行编码,得到全局校验码;
第二子条带的校验码确定单元,用于确定所述全局校验码为所述初始第二子条带的校验码。
在本发明的一可选实施例中,所述初始第一子条带的数据码的数量为k个,所述初始第二子条带的校验码的数量为m个;所述第二编码模块1003包括:
分组子模块,用于依据所述初始第二子条带的m个校验码,将所述初始第一子条带的k个数据码进行分组,得到多组第一数据码组;
异或运算子模块,用于将所述多组第一数据码组与所述初始第二子条带的校验码进行异或运算,生成所述目标第二子条带的校验码。
其中,所述k和所述m为非零正整数,且所述k大于所述m。
在本发明的一可选实施例中,所述分组子模块包括:
分组单元,用于将所述初始第一子条带的k个数据码划分为m-1组第一数据码组;其中前m-2组第一数据码组包括
Figure SMS_40
个所述初始第一子条带的数据码,第m-1组第一数据码组包括/>
Figure SMS_41
个所述初始第一子条带的数据码。
在本发明的一可选实施例中,所述异或运算子模块包括:
异或运算单元,用于将所述m-1组第一数据码组分别与所述初始第二子条带的第二个至第m个校验码进行异或运算,生成所述目标第二子条带的校验码。
在本发明的一可选实施例中,所述异或运算单元包括:
目标第二子条带的校验码生成子单元,用于所述m-1组第一数据码组分别与所述初始第二子条带的第二个至第m个校验码进行异或运算,生成m-1个目标第二子条带的校验码;
填入子单元,用于将所述m-1个目标第二子条带的校验码按照所述初始第二子条带的校验码的位置进行填入。
在本发明的一可选实施例中,所述k为10。
在本发明的一可选实施例中,所述m为4。
在本发明的一可选实施例中,所述第三编码模块1004包括:
第二异或运算子模块,用于将所述m-1个目标第二子条带的校验码与所述初始第一子条带的校验码进行异或运算,生成所述目标第一子条带的校验码。
在本发明的一可选实施例中,所述第二异或运算子模块包括:
异或值生成单元,用于将所述m-1个目标第二子条带的校验码与所述初始第一子条带的第一个校验码进行异或运算,生成异或值;
目标第一子条带的校验码生成单元,用于依据所述异或值和所述初始第一子条带的校验码,生成所述目标第一子条带的校验码。
在本发明的一可选实施例中,所述目标第一子条带的校验码生成单元包括:
更新子单元,用于将所述异或值更新至所述初始第一子条带的第一个校验码,生成所述目标第一子条带的校验码。
在本发明的一可选实施例中,所述目标纠删码包括:目标第一子条带和目标第二子条带,所述确定模块1005包括:
第一结合子模块,用于结合所述初始第一子条带的数据码和所述目标第一子条带的校验码确定所述目标第一子条带;
第二结合子模块,用于结合所述初始第二子条带的数据码和所述目标第二子条带的校验码确定所述目标第二子条带。
在本发明的一可选实施例中,所述编码存储系统包括数据节点,所述重建模块1006包括:
第一重建子模块,用于依据所述目标纠删码对所述数据节点进行重建。
在本发明的一可选实施例中,所述述编码存储系统包括校验节点,所述重建模块1006包括:
第二重建子模块,用于依据所述目标纠删码对所述校验节点进行重建。
对于装置实施例而言,由于其与方法实施例基本相似,所以描述的比较简单,相关之处参见方法实施例的部分说明即可。
参照图11,本发明实施例还提供了一种电子设备,包括:
处理器1101和存储介质1102,所述存储介质1102存储有所述处理器1101可执行的计算机程序,当电子设备运行时,所述处理器1101执行所述计算机程序,以执行如本发明实施例任一项所述的数据存储方法。所述数据存储方法包括:
获取磁盘阵列卡的初始纠删码,所述初始纠删码包括初始第一子条带和初始第二子条带;
依据所述初始第一子条带的数据码生成所述初始第一子条带的校验码;依据所述初始第二子条带的数据码生成所述初始第二子条带的校验码;
依据所述初始第一子条带的数据码和所述初始第二子条带的校验码,生成目标第二子条带的校验码;
依据所述目标第二子条带的校验码和所述初始第一子条带的校验码,生成目标第一子条带的校验码;
确定所述初始第一子条带的数据码、所述初始第二子条带的数据码、所述目标第一子条带的校验码和所述目标第二子条带的校验码为目标纠删码;
基于所述目标纠删码进行编码存储系统重建,以对数据进行存储。
可选地,所述依据所述初始第一子条带的数据码生成所述初始第一子条带的校验码的步骤包括:
基于里德所罗门码编码,对所述初始第一子条带的数据码进行编码,生成所述初始第一子条带的校验码。
可选地,所述里德所罗门码编码为范德蒙矩阵,所述基于里德所罗门码编码,对所述初始第一子条带的数据码进行编码,生成所述初始第一子条带的校验码的步骤包括:
基于范德蒙矩阵,对所述初始第一子条带的数据码进行编码,得到全局校验码;
确定所述全局校验码为所述初始第一子条带的校验码。
可选地,所述依据所述初始第二子条带的数据码生成所述初始第二子条带的校验码的步骤包括:
基于里德所罗门码编码,对所述初始第二子条带的数据码进行编码,生成所述初始第二子条带的校验码。
可选地,所述里德所罗门码编码为范德蒙矩阵,所述基于里德所罗门码编码,对所述初始第二子条带的数据码进行编码,生成所述初始第二子条带的校验码的步骤包括:
基于范德蒙矩阵,对所述初始第二子条带的数据码进行编码,得到全局校验码;
确定所述全局校验码为所述初始第二子条带的校验码。
可选地,所述初始第一子条带的数据码的数量为k个,所述初始第二子条带的校验码的数量为m个;所述依据所述初始第一子条带的数据码和所述初始第二子条带的校验码,生成目标第二子条带的校验码的步骤包括:
依据所述初始第二子条带的m个校验码,将所述初始第一子条带的k个数据码进行分组,得到多组第一数据码组;
将所述多组第一数据码组与所述初始第二子条带的校验码进行异或运算,生成所述目标第二子条带的校验码。
其中,所述k和所述m为非零正整数,且所述k大于所述m。
可选地,所述依据所述初始第二子条带的m个校验码,将所述初始第一子条带的k个数据码进行分组的步骤包括:
将所述初始第一子条带的k个数据码划分为m-1组第一数据码组;其中前m-2组第一数据码组包括
Figure SMS_42
个所述初始第一子条带的数据码,第m-1组第一数据码组包括
Figure SMS_43
个所述初始第一子条带的数据码。
可选地,所述将所述多组第一数据码组与所述初始第二子条带的校验码进行异或运算,生成所述目标第二子条带的校验码的步骤包括:
将所述m-1组第一数据码组分别与所述初始第二子条带的第二个至第m个校验码进行异或运算,生成所述目标第二子条带的校验码。
可选地,将所述m-1组第一数据码组分别与所述初始第二子条带的第二个至第m个校验码进行异或运算,生成所述目标第二子条带的校验码的步骤包括:
所述m-1组第一数据码组分别与所述初始第二子条带的第二个至第m个校验码进行异或运算,生成m-1个目标第二子条带的校验码;
将所述m-1个目标第二子条带的校验码按照所述初始第二子条带的校验码的位置进行填入。
可选地,所述k为10。
可选地,所述m为4。
可选地,所述依据所述目标第二子条带的校验码和所述初始第一子条带的校验码,生成目标第一子条带的校验码的步骤包括:
将所述m-1个目标第二子条带的校验码与所述初始第一子条带的校验码进行异或运算,生成所述目标第一子条带的校验码。
可选地,所述将所述m-1个目标第二子条带的校验码与所述初始第一子条带的校验码进行异或运算,生成所述目标第一子条带的校验码的步骤包括:
将所述m-1个目标第二子条带的校验码与所述初始第一子条带的第一个校验码进行异或运算,生成异或值;
依据所述异或值和所述初始第一子条带的校验码,生成所述目标第一子条带的校验码。
可选地,所述依据所述异或值和所述初始第一子条带的校验码,生成所述目标第一子条带的校验码的步骤包括:
将所述异或值更新至所述初始第一子条带的第一个校验码,生成所述目标第一子条带的校验码。
可选地,所述目标纠删码包括:目标第一子条带和目标第二子条带,所述确定所述初始第一子条带的数据码、所述初始第二子条带的数据码、所述目标第一子条带的校验码和所述目标第二子条带的校验码为目标纠删码的步骤包括:
结合所述初始第一子条带的数据码和所述目标第一子条带的校验码确定所述目标第一子条带;
结合所述初始第二子条带的数据码和所述目标第二子条带的校验码确定所述目标第二子条带。
可选地,所述编码存储系统包括数据节点,所述基于所述目标纠删码进行编码存储系统重建的步骤包括:
依据所述目标纠删码对所述数据节点进行重建。
可选地,所述编码存储系统包括校验节点,所述基于所述目标纠删码进行编码存储系统重建的步骤包括:
依据所述目标纠删码对所述校验节点进行重建。
其中,存储器可以包括随机存取存储器(Random Access Memory,简称RAM),也可以包括非易失性存储器(non-volatile memory),例如至少一个磁盘存储器。可选的,存储器还可以是至少一个位于远离前述处理器的存储装置。
上述的处理器可以是通用处理器,包括中央处理器(Central Processing Unit,简称CPU)、网络处理器(Network Processor,简称NP)等;还可以是数字信号处理器(Digital Signal Processing,简称DSP)、专用集成电路(Application SpecificIntegrated Circuit,简称ASIC)、现场可编程门阵列(Field-Programmable Gate Array,简称FPGA)或者其他可编程逻辑器件、分立门或者晶体管逻辑器件、分立硬件组件。
参照图12,本发明实施例还提供了一种计算机可读存储介质1201,所述存储介质1201上存储有计算机程序,所述计算机程序被处理器运行时执行如本发明实施例任一项所述的数据存储方法。所述数据存储方法包括:
获取磁盘阵列卡的初始纠删码,所述初始纠删码包括初始第一子条带和初始第二子条带;
依据所述初始第一子条带的数据码生成所述初始第一子条带的校验码;依据所述初始第二子条带的数据码生成所述初始第二子条带的校验码;
依据所述初始第一子条带的数据码和所述初始第二子条带的校验码,生成目标第二子条带的校验码;
依据所述目标第二子条带的校验码和所述初始第一子条带的校验码,生成目标第一子条带的校验码;
确定所述初始第一子条带的数据码、所述初始第二子条带的数据码、所述目标第一子条带的校验码和所述目标第二子条带的校验码为目标纠删码;
基于所述目标纠删码进行编码存储系统重建,以对数据进行存储。
可选地,所述依据所述初始第一子条带的数据码生成所述初始第一子条带的校验码的步骤包括:
基于里德所罗门码编码,对所述初始第一子条带的数据码进行编码,生成所述初始第一子条带的校验码。
可选地,所述里德所罗门码编码为范德蒙矩阵,所述基于里德所罗门码编码,对所述初始第一子条带的数据码进行编码,生成所述初始第一子条带的校验码的步骤包括:
基于范德蒙矩阵,对所述初始第一子条带的数据码进行编码,得到全局校验码;
确定所述全局校验码为所述初始第一子条带的校验码。
可选地,所述依据所述初始第二子条带的数据码生成所述初始第二子条带的校验码的步骤包括:
基于里德所罗门码编码,对所述初始第二子条带的数据码进行编码,生成所述初始第二子条带的校验码。
可选地,所述里德所罗门码编码为范德蒙矩阵,所述基于里德所罗门码编码,对所述初始第二子条带的数据码进行编码,生成所述初始第二子条带的校验码的步骤包括:
基于范德蒙矩阵,对所述初始第二子条带的数据码进行编码,得到全局校验码;
确定所述全局校验码为所述初始第二子条带的校验码。
可选地,所述初始第一子条带的数据码的数量为k个,所述初始第二子条带的校验码的数量为m个;所述依据所述初始第一子条带的数据码和所述初始第二子条带的校验码,生成目标第二子条带的校验码的步骤包括:
依据所述初始第二子条带的m个校验码,将所述初始第一子条带的k个数据码进行分组,得到多组第一数据码组;
将所述多组第一数据码组与所述初始第二子条带的校验码进行异或运算,生成所述目标第二子条带的校验码。
其中,所述k和所述m为非零正整数,且所述k大于所述m。
可选地,所述依据所述初始第二子条带的m个校验码,将所述初始第一子条带的k个数据码进行分组的步骤包括:
将所述初始第一子条带的k个数据码划分为m-1组第一数据码组;其中前m-2组第一数据码组包括
Figure SMS_44
个所述初始第一子条带的数据码,第m-1组第一数据码组包括
Figure SMS_45
个所述初始第一子条带的数据码。
可选地,所述将所述多组第一数据码组与所述初始第二子条带的校验码进行异或运算,生成所述目标第二子条带的校验码的步骤包括:
将所述m-1组第一数据码组分别与所述初始第二子条带的第二个至第m个校验码进行异或运算,生成所述目标第二子条带的校验码。
可选地,将所述m-1组第一数据码组分别与所述初始第二子条带的第二个至第m个校验码进行异或运算,生成所述目标第二子条带的校验码的步骤包括:
所述m-1组第一数据码组分别与所述初始第二子条带的第二个至第m个校验码进行异或运算,生成m-1个目标第二子条带的校验码;
将所述m-1个目标第二子条带的校验码按照所述初始第二子条带的校验码的位置进行填入。
可选地,所述k为10。
可选地,所述m为4。
可选地,所述依据所述目标第二子条带的校验码和所述初始第一子条带的校验码,生成目标第一子条带的校验码的步骤包括:
将所述m-1个目标第二子条带的校验码与所述初始第一子条带的校验码进行异或运算,生成所述目标第一子条带的校验码。
可选地,所述将所述m-1个目标第二子条带的校验码与所述初始第一子条带的校验码进行异或运算,生成所述目标第一子条带的校验码的步骤包括:
将所述m-1个目标第二子条带的校验码与所述初始第一子条带的第一个校验码进行异或运算,生成异或值;
依据所述异或值和所述初始第一子条带的校验码,生成所述目标第一子条带的校验码。
可选地,所述依据所述异或值和所述初始第一子条带的校验码,生成所述目标第一子条带的校验码的步骤包括:
将所述异或值更新至所述初始第一子条带的第一个校验码,生成所述目标第一子条带的校验码。
可选地,所述目标纠删码包括:目标第一子条带和目标第二子条带,所述确定所述初始第一子条带的数据码、所述初始第二子条带的数据码、所述目标第一子条带的校验码和所述目标第二子条带的校验码为目标纠删码的步骤包括:
结合所述初始第一子条带的数据码和所述目标第一子条带的校验码确定所述目标第一子条带;
结合所述初始第二子条带的数据码和所述目标第二子条带的校验码确定所述目标第二子条带。
可选地,所述编码存储系统包括数据节点,所述基于所述目标纠删码进行编码存储系统重建的步骤包括:
依据所述目标纠删码对所述数据节点进行重建。
可选地,所述编码存储系统包括校验节点,所述基于所述目标纠删码进行编码存储系统重建的步骤包括:
依据所述目标纠删码对所述校验节点进行重建。
本说明书中的各个实施例均采用递进的方式描述,每个实施例重点说明的都是与其他实施例的不同之处,各个实施例之间相同相似的部分互相参见即可。
本领域内的技术人员应明白,本发明实施例的实施例可提供为方法、装置、或计算机程序产品。因此,本发明实施例可采用完全硬件实施例、完全软件实施例、或结合软件和硬件方面的实施例的形式。而且,本发明实施例可采用在一个或多个其中包含有计算机可用程序代码的计算机可用存储介质(包括但不限于磁盘存储器、CD-ROM、光学存储器等)上实施的计算机程序产品的形式。
本发明实施例是参照根据本发明实施例的方法、终端设备(系统)、和计算机程序产品的流程图和/或方框图来描述的。应理解可由计算机程序指令实现流程图和/或方框图中的每一流程和/或方框、以及流程图和/或方框图中的流程和/或方框的结合。可提供这些计算机程序指令到通用计算机、专用计算机、嵌入式处理机或其他可编程数据处理终端设备的处理器以产生一个机器,使得通过计算机或其他可编程数据处理终端设备的处理器执行的指令产生用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的装置。
这些计算机程序指令也可存储在能引导计算机或其他可编程数据处理终端设备以特定方式工作的计算机可读存储器中,使得存储在该计算机可读存储器中的指令产生包括指令装置的制造品,该指令装置实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能。
这些计算机程序指令也可装载到计算机或其他可编程数据处理终端设备上,使得在计算机或其他可编程终端设备上执行一系列操作步骤以产生计算机实现的处理,从而在计算机或其他可编程终端设备上执行的指令提供用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的步骤。
尽管已描述了本发明实施例的优选实施例,但本领域内的技术人员一旦得知了基本创造性概念,则可对这些实施例做出另外的变更和修改。所以,所附权利要求意欲解释为包括优选实施例以及落入本发明实施例范围的所有变更和修改。
最后,还需要说明的是,在本文中,诸如第一和第二等之类的关系术语仅仅用来将一个实体或者操作与另一个实体或操作区分开来,而不一定要求或者暗示这些实体或操作之间存在任何这种实际的关系或者顺序。而且,术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的过程、方法、物品或者终端设备不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种过程、方法、物品或者终端设备所固有的要素。在没有更多限制的情况下,由语句“包括一个……”限定的要素,并不排除在包括所述要素的过程、方法、物品或者终端设备中还存在另外的相同要素。
以上对本发明所提供的一种数据存储方法、装置、电子设备和存储介质,进行了详细介绍,本文中应用了具体个例对本发明的原理及实施方式进行了阐述,以上实施例的说明只是用于帮助理解本发明的方法及其核心思想;同时,对于本领域的一般技术人员,依据本发明的思想,在具体实施方式及应用范围上均会有改变之处,综上所述,本说明书内容不应理解为对本发明的限制。

Claims (20)

1.一种数据存储方法,其特征在于,包括:
获取磁盘阵列的初始纠删码,所述初始纠删码包括初始第一子条带和初始第二子条带;
依据所述初始第一子条带的数据码生成所述初始第一子条带的校验码;依据所述初始第二子条带的数据码生成所述初始第二子条带的校验码;
依据所述初始第一子条带的数据码和所述初始第二子条带的校验码,生成目标第二子条带的校验码;
依据所述目标第二子条带的校验码和所述初始第一子条带的校验码,生成目标第一子条带的校验码;
确定所述初始第一子条带的数据码、所述初始第二子条带的数据码、所述目标第一子条带的校验码和所述目标第二子条带的校验码为目标纠删码;
基于所述目标纠删码进行编码存储系统重建,以对数据进行存储。
2.根据权利要求1所述的方法,其特征在于,所述依据所述初始第一子条带的数据码生成所述初始第一子条带的校验码的步骤包括:
基于里德所罗门码编码,对所述初始第一子条带的数据码进行编码,生成所述初始第一子条带的校验码。
3.根据权利要求2所述的方法,其特征在于,所述里德所罗门码编码为范德蒙矩阵,所述基于里德所罗门码编码,对所述初始第一子条带的数据码进行编码,生成所述初始第一子条带的校验码的步骤包括:
基于范德蒙矩阵,对所述初始第一子条带的数据码进行编码,得到全局校验码;
确定所述全局校验码为所述初始第一子条带的校验码。
4.根据权利要求1所述的方法,其特征在于,所述依据所述初始第二子条带的数据码生成所述初始第二子条带的校验码的步骤包括:
基于里德所罗门码编码,对所述初始第二子条带的数据码进行编码,生成所述初始第二子条带的校验码。
5.根据权利要求4所述的方法,其特征在于,所述里德所罗门码编码为范德蒙矩阵,所述基于里德所罗门码编码,对所述初始第二子条带的数据码进行编码,生成所述初始第二子条带的校验码的步骤包括:
基于范德蒙矩阵,对所述初始第二子条带的数据码进行编码,得到全局校验码;
确定所述全局校验码为所述初始第二子条带的校验码。
6.根据权利要求1所述的方法,其特征在于,所述初始第一子条带的数据码的数量为k个,所述初始第二子条带的校验码的数量为m个;所述依据所述初始第一子条带的数据码和所述初始第二子条带的校验码,生成目标第二子条带的校验码的步骤包括:
依据所述初始第二子条带的m个校验码,将所述初始第一子条带的k个数据码进行分组,得到多组第一数据码组;
将所述多组第一数据码组与所述初始第二子条带的校验码进行异或运算,生成所述目标第二子条带的校验码;
其中,所述k和所述m为非零正整数,且所述k大于所述m。
7.根据权利要求6所述的方法,其特征在于,所述依据所述初始第二子条带的m个校验码,将所述初始第一子条带的k个数据码进行分组的步骤包括:
将所述初始第一子条带的k个数据码划分为m-1组第一数据码组;其中前m-2组第一数据码组包括
Figure QLYQS_1
个所述初始第一子条带的数据码,第m-1组第一数据码组包括
Figure QLYQS_2
个所述初始第一子条带的数据码。
8.根据权利要求7所述的方法,其特征在于,所述将所述多组第一数据码组与所述初始第二子条带的校验码进行异或运算,生成所述目标第二子条带的校验码的步骤包括:
将所述m-1组第一数据码组分别与所述初始第二子条带的第二个至第m个校验码进行异或运算,生成所述目标第二子条带的校验码。
9.根据权利要求8所述的方法,其特征在于,所述将所述m-1组第一数据码组分别与所述初始第二子条带的第二个至第m个校验码进行异或运算,生成所述目标第二子条带的校验码的步骤包括:
所述m-1组第一数据码组分别与所述初始第二子条带的第二个至第m个校验码进行异或运算,生成m-1个目标第二子条带的校验码;
将所述m-1个目标第二子条带的校验码按照所述初始第二子条带的校验码的位置进行填入。
10.根据权利要求6所述的方法,其特征在于,所述k为10。
11.根据权利要求6所述的方法,其特征在于,所述m为4。
12.根据权利要求9所述的方法,其特征在于,所述依据所述目标第二子条带的校验码和所述初始第一子条带的校验码,生成目标第一子条带的校验码的步骤包括:
将所述m-1个目标第二子条带的校验码与所述初始第一子条带的校验码进行异或运算,生成所述目标第一子条带的校验码。
13.根据权利要求12所述的方法,其特征在于,所述将所述m-1个目标第二子条带的校验码与所述初始第一子条带的校验码进行异或运算,生成所述目标第一子条带的校验码的步骤包括:
将所述m-1个目标第二子条带的校验码与所述初始第一子条带的第一个校验码进行异或运算,生成异或值;
依据所述异或值和所述初始第一子条带的校验码,生成所述目标第一子条带的校验码。
14.根据权利要求13所述的方法,其特征在于,所述依据所述异或值和所述初始第一子条带的校验码,生成所述目标第一子条带的校验码的步骤包括:
将所述异或值更新至所述初始第一子条带的第一个校验码,生成所述目标第一子条带的校验码。
15.根据权利要求1所述的方法,其特征在于,所述目标纠删码包括:目标第一子条带和目标第二子条带,所述确定所述初始第一子条带的数据码、所述初始第二子条带的数据码、所述目标第一子条带的校验码和所述目标第二子条带的校验码为目标纠删码的步骤包括:
结合所述初始第一子条带的数据码和所述目标第一子条带的校验码确定所述目标第一子条带;
结合所述初始第二子条带的数据码和所述目标第二子条带的校验码确定所述目标第二子条带。
16.根据权利要求1所述的方法,其特征在于,所述编码存储系统包括数据节点,所述基于所述目标纠删码进行编码存储系统重建的步骤包括:
依据所述目标纠删码对所述数据节点进行重建。
17.根据权利要求1所述的方法,其特征在于,所述编码存储系统包括校验节点,所述基于所述目标纠删码进行编码存储系统重建的步骤包括:
依据所述目标纠删码对所述校验节点进行重建。
18.一种数据存储装置,其特征在于,包括:
获取模块,用于获取磁盘阵列的初始纠删码,所述初始纠删码包括初始第一子条带和初始第二子条带;
第一编码模块,用于依据所述初始第一子条带的数据码生成所述初始第一子条带的校验码;依据所述初始第二子条带的数据码生成所述初始第二子条带的校验码;
第二编码模块,用于依据所述初始第一子条带的数据码和所述初始第二子条带的校验码,生成目标第二子条带的校验码;
第三编码模块,用于依据所述目标第二子条带的校验码和所述初始第一子条带的校验码,生成目标第一子条带的校验码;
确定模块,用于确定所述初始第一子条带的数据码、所述初始第二子条带的数据码、所述目标第一子条带的校验码和所述目标第二子条带的校验码为目标纠删码;
重建模块,用于基于所述目标纠删码进行编码存储系统重建,以对数据进行存储。
19.一种电子设备,其特征在于,包括处理器、存储器及存储在所述存储器上并能够在所述处理器上运行的计算机程序,所述计算机程序被所述处理器执行时实现如权利要求1至17中任一项所述的数据存储方法的步骤。
20.一种计算机可读存储介质,其特征在于,所述计算机可读存储介质上存储计算机程序,所述计算机程序被处理器执行时实现如权利要求1至17中任一项所述的数据存储方法的步骤。
CN202310549195.4A 2023-05-16 2023-05-16 一种数据存储方法、装置、电子设备和存储介质 Active CN116312726B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN202310549195.4A CN116312726B (zh) 2023-05-16 2023-05-16 一种数据存储方法、装置、电子设备和存储介质

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN202310549195.4A CN116312726B (zh) 2023-05-16 2023-05-16 一种数据存储方法、装置、电子设备和存储介质

Publications (2)

Publication Number Publication Date
CN116312726A true CN116312726A (zh) 2023-06-23
CN116312726B CN116312726B (zh) 2023-08-15

Family

ID=86803496

Family Applications (1)

Application Number Title Priority Date Filing Date
CN202310549195.4A Active CN116312726B (zh) 2023-05-16 2023-05-16 一种数据存储方法、装置、电子设备和存储介质

Country Status (1)

Country Link
CN (1) CN116312726B (zh)

Citations (8)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN110532126A (zh) * 2019-07-26 2019-12-03 西安交通大学 纠删码存储系统数据快速恢复方法、装置及存储介质
CN113296999A (zh) * 2021-05-20 2021-08-24 山东云海国创云计算装备产业创新中心有限公司 一种raid6编码方法及编码电路
CN113297000A (zh) * 2021-05-20 2021-08-24 山东云海国创云计算装备产业创新中心有限公司 一种raid编码电路及编码方法
CN114064347A (zh) * 2022-01-18 2022-02-18 苏州浪潮智能科技有限公司 一种数据存储方法、装置、设备及计算机可读存储介质
CN114138543A (zh) * 2021-11-30 2022-03-04 深信服科技股份有限公司 数据条带编码方法、系统、设备及介质
CN114546707A (zh) * 2022-01-17 2022-05-27 阿里巴巴(中国)有限公司 数据处理方法及装置
CN115080303A (zh) * 2022-07-26 2022-09-20 苏州浪潮智能科技有限公司 Raid6磁盘阵列的编码方法、解码方法、装置及介质
CN115268773A (zh) * 2022-07-18 2022-11-01 天翼云科技有限公司 一种纠删码数据存储方法、装置、设备及介质

Patent Citations (8)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN110532126A (zh) * 2019-07-26 2019-12-03 西安交通大学 纠删码存储系统数据快速恢复方法、装置及存储介质
CN113296999A (zh) * 2021-05-20 2021-08-24 山东云海国创云计算装备产业创新中心有限公司 一种raid6编码方法及编码电路
CN113297000A (zh) * 2021-05-20 2021-08-24 山东云海国创云计算装备产业创新中心有限公司 一种raid编码电路及编码方法
CN114138543A (zh) * 2021-11-30 2022-03-04 深信服科技股份有限公司 数据条带编码方法、系统、设备及介质
CN114546707A (zh) * 2022-01-17 2022-05-27 阿里巴巴(中国)有限公司 数据处理方法及装置
CN114064347A (zh) * 2022-01-18 2022-02-18 苏州浪潮智能科技有限公司 一种数据存储方法、装置、设备及计算机可读存储介质
CN115268773A (zh) * 2022-07-18 2022-11-01 天翼云科技有限公司 一种纠删码数据存储方法、装置、设备及介质
CN115080303A (zh) * 2022-07-26 2022-09-20 苏州浪潮智能科技有限公司 Raid6磁盘阵列的编码方法、解码方法、装置及介质

Also Published As

Publication number Publication date
CN116312726B (zh) 2023-08-15

Similar Documents

Publication Publication Date Title
CN107656832B (zh) 一种低数据重建开销的纠删码方法
US11531593B2 (en) Data encoding, decoding and recovering method for a distributed storage system
US10146618B2 (en) Distributed data storage with reduced storage overhead using reduced-dependency erasure codes
US10270468B2 (en) Method for file updating and version control for linear erasure coded and network coded storage
US7293222B2 (en) Systems and processes for fast encoding of hamming codes
US20140310571A1 (en) Local Erasure Codes for Data Storage
US9465692B2 (en) High reliability erasure code distribution
Shahabinejad et al. An efficient binary locally repairable code for hadoop distributed file system
CN108809506B (zh) 一种编码方法及装置
US8266495B2 (en) Systems and methods for performing concatenated error correction
KR20120058556A (ko) 인코딩 및 디코딩 프로세스들을 위해 심볼들의 영속적 비활성화에 의한 fec 코드들을 활용하는 방법 및 장치
US8549382B2 (en) Storage drive with LDPC coding
US20200319973A1 (en) Layered error correction encoding for large scale distributed object storage system
CN111090540B (zh) 基于纠删码的数据处理方法与装置
US20200083912A1 (en) Method and apparatus for processing rate matching of polar codes
JPWO2019130475A1 (ja) 通信路分極を用いた誤り訂正符号化方法および装置、復号方法および装置
CN101779379A (zh) 使用通用级联码(gcc)进行编码和解码
KR102475784B1 (ko) 1개의 서브-심볼의 선형 복구 스킴
CN103703446A (zh) 网络存储中抗拜占庭失效的数据重构、失效数据恢复方法及装置
CN116312726B (zh) 一种数据存储方法、装置、电子设备和存储介质
CN116312724B (zh) 一种适用于两校验编码存储系统数据存储方法和装置
CN116312725B (zh) 一种数据存储方法、装置、电子设备和存储介质
CN113168882B (zh) 一种编码方法、译码方法以及存储控制器
CN115061640B (zh) 一种容错分布存储系统、方法、电子设备及介质
CN108628697B (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