基于RAID5的数据存储方法、装置、恢复方法及固态硬盘与流程

    专利2022-07-08  163


    本发明涉及数据存储安全技术领域,尤其涉及一种基于raid5的数据存储方法、装置、恢复方法及固态硬盘。



    背景技术:

    ssd固态硬盘是用固态电子存储芯片阵列制成的硬盘。而raid5是ssd固态硬盘采用的一种存储解决方案。raid5可以为系统提供数据安全保障,当raid5的一个磁盘数据损坏后,利用剩下的数据和相应的奇偶校验信息去恢复被损坏的数据,如果损坏的磁盘数据超过一个时,则无法恢复数据。而raid1是通过磁盘数据镜像实现数据冗余,在成对的独立磁盘上产生互为备份的数据,虽然能解决多个磁盘数据损毁的问题,但是在采用同等磁盘数量的前提下降低了磁盘的有效容量,在拥有同等容量的前提下增大了磁盘成本。因此,需要一种能够提高数据存储安全性的基于raid5的数据存储方法。



    技术实现要素:

    本发明提供了基于raid5的数据存储方法、装置、恢复方法及固态硬盘,旨在解决背景技术中提及的技术问题。

    本发明首先提供了一种基于raid5的数据存储方法,所述方法包括以下步骤:

    根据预设的存储单元容量将数据信息分割为多个数据块;

    将所述数据块横向依次写入行列分布的所述存储单元;

    当每行倒数第二个所述存储单元被所述数据块存储后,根据该行所有所述数据块生成行校验数据,并将所述行校验数据写入该行最后一个所述存储单元中;

    当倒数第二行的所有所述存储单元均被写入时,根据每列的所有所述数据块生成列校验数据,并将所述列校验数据写入最后一行上与该列对应的所述存储单元中。

    进一步的,所述存储单元可以为die、block、page和cell中的任一项。

    本发明还提供了一种基于raid5的数据存储方法,所述方法包括以下步骤:

    根据预设的存储单元容量将数据信息分割为多个数据块;

    将所述数据块竖向依次写入行列分布的所述存储单元;

    当每列倒数第二个所述存储单元被所述数据块存储后,根据该列所有所述数据块生成列校验数据并写入该列最后一个所述存储单元中;

    当倒数第二列的所有所述存储单元均被写入时,根据每行的所有所述数据块生成列校验数据,并将所述行校验数据写入最后一列上与该行对应的所述存储单元中。

    进一步的,所述存储单元可以为die、block、page和cell中的任一项。

    本发明还提供了一种基于raid5的数据恢复方法,所述数据信息通过上述的数据存储方法进行存储,所述数据恢复方法包括以下步骤:

    当同一行所述存储单元组成的条带上存在至少两个失效数据块时,检测所述失效数据块对应的列存储单元组成的条带,选择仅存在单个所述失效数据块的列条带修复;

    当同一列所述存储单元组成的条带上存在至少两个失效数据块时,检测所述失效数据块对应的行存储单元组成的条带,选择仅存在单个所述失效数据块的行条带修复。

    进一步的,当存在超过1个所述条带可以进行修复,优先选择raid数据量少的那个条带。

    本发明还提供了一种基于raid5的第一数据存储装置,包括:

    数据划分模块,用于根据预设的存储单元容量将数据信息分割为多个数据块;

    数据写入模块,用于将所述数据块横向依次写入行列分布的所述存储单元;

    行校验写入模块,用于当每行倒数第二个所述存储单元被所述数据块存储后,根据该行所有所述数据块生成行校验数据,并将所述行校验数据写入该行最后一个所述存储单元中;

    列校验写入模块,用于当倒数第二行的所有所述存储单元均被写入时,根据每列的所有所述数据块生成列校验数据,并将所述列校验数据写入最后一行上与该列对应的所述存储单元中。

    本发明还提供了一种基于raid5的第二数据存储装置,包括:

    数据划分模块,用于根据预设的存储单元容量将数据信息分割为多个数据块;

    数据写入模块,用于将所述数据块横向依次写入行列分布的所述存储单元;

    列校验写入模块,当每列倒数第二个所述存储单元被所述数据块存储后,根据该列所有所述数据块生成列校验数据并写入该列最后一个所述存储单元中;

    行校验写入模块,用于当倒数第二列的所有所述存储单元均被写入时,根据每行的所有所述数据块生成列校验数据,并将所述行校验数据写入最后一列上与该行对应的所述存储单元中。

    本发明还提供了一种固态硬盘,包括上述的基于raid5的第一数据恢复装置。

    本发明还提供了一种固态硬盘,包括上述的基于raid5的第二数据恢复装置。

    本公开实施例提供的技术方案可以包括以下有益效果:

    通过将数据存储入行列分布的存储单元,以使得每一数据块对应一个行条带和一个列条带,当采用raid5存储方案时,数据块失效可以通过行条带或者列条带进行恢复,提高存储的安全性,且应用此存储方法,可以恢复出较多的有效数据,避免现有的raid5方案无法对同一条带出现多个失效数据进行修复的问题。

    应当理解的是,以上的一般描述和后面的细节描述仅仅是示例性和解释性的,并不能限制本公开。

    附图说明

    图1是本发明提供的实施例1的基于raid5的数据存储方法的步骤流程图。

    图2是应用实施例1存储数据的写入框图。

    图3是实施例1的数据写入的流程图。

    图4是本发明提供的实施例1的基于raid5的数据存储装置的模块图。

    图5是本发明提供的实施例2的基于raid5的数据存储方法的步骤流程图。

    图6是应用实施例2存储数据的写入框图。

    图7是本发明提供的实施例2的基于raid5的数据存储装置的模块图。

    图8是本发明提供的一实施例的基于raid5的数据恢复方法的步骤流程图。

    图9是本发明提供的一实施例的未进行数据恢复前的存储状态图。

    图10是图9实施例进行数据恢复中的一状态图。

    图11是图9实施例进行数据恢复中的另一状态图。

    图12是图9实施例进行数据恢复中的结果图。

    具体实施方式

    下面详细描述本发明的实施例,所述实施例的示例在附图中示出,其中自始至终相同或类似的标号表示相同或类似的元件或具有相同或类似功能的元件。下面通过参考附图描述的实施例是示例性的,仅用于解释本发明,而不能解释为对本发明的限制。

    技术领域技术人员可以理解,除非特意声明,这里使用的单数形式“一”、“一个”、“所述”和“该”也可包括复数形式。应该进一步理解的是,本发明的说明书中使用的措辞“包括”是指存在所述特征、整数、步骤、操作,但是并不排除存在或添加一个或多个其他特征、整数、步骤、操作。

    本技术领域技术人员可以理解,除非另外定义,这里使用的所有术语(包括技术术语和科学术语),具有与本发明所属领域中的普通技术人员的一般理解相同的意义。还应该理解的是,诸如通用字典中定义的那些术语,应该被理解为具有与现有技术的上下文中的意义一致的意义,并且除非像这里一样被特定定义,否则不会用理想化或过于正式的含义来解释。

    本领域技术人员应当理解,本发明所称的“应用”、“应用程序”、“应用软件”以及类似表述的概念,是业内技术人员所公知的相同概念,是指由一系列计算机指令及相关数据资源有机构造的适于电子运行的计算机软件。除非特别指定,这种命名本身不受编程语言种类、级别,也不受其赖以运行的操作系统或平台所限制。理所当然地,此类概念也不受任何形式的终端所限制。

    实施例1

    请参阅图1-2,本发明首先提供了一种基于raid5的数据存储方法,所述方法包括以下步骤:

    s110:根据预设的存储单元容量将数据信息分割为多个数据块。

    s120:将所述数据块横向依次写入行列分布的所述存储单元。

    s130:当每行倒数第二个所述存储单元被所述数据块存储后,根据该行所有所述数据块生成行校验数据,并将所述行校验数据写入该行最后一个所述存储单元中。

    s140:当倒数第二行的所有所述存储单元均被写入时,根据每列的所有所述数据块生成列校验数据,并将所述列校验数据写入最后一行上与该列对应的所述存储单元中。

    如图3所示,数据写入流程:数据经过ssd的前端模块,对数据进行解析,然后通过axi总线将数据写入到dram中,然后固件会通过hostdma模块的srambm模块将数据写入到sram中,通过hostdma模块中的raidbm模块将拷贝的数据写入到raidengine模块中,并且raidengine模块会将数据分别写入到raidrowencoder模块和raidcolencoder模块中,自动异或数据以生成行校验数据和列校验数据;将校验数据写入sram中相应位置,并将完整的存储块写入到nandflash中。

    进一步的,本发明的一种实施例中,所述存储单元可以为die、block、page和cell中的任一项,根据需要选择不同的最小存储单元(可以是die、block等),均可实现上述的数据存储方法。

    本发明的一种实施例,所述数据存储方法还包括:

    当硬盘处于无垃圾回收的状态时,所有raidengine模块均用于做主机的写入操作的encode;当有垃圾回收的时候,一半raidengine模块用于主机写入encode,一半raidengine模块用于垃圾回收的decode操作;当无主机写入但有垃圾回收的时候,所有raidengine模块用于垃圾回收的decode操作。

    在一种实施例中,本发明还提供了一种基于raid5的第一数据存储装置100,所述装置存储有多条指令,所述指令适于由处理器加载并执行基于raid5的数据存储方法,包括:

    s110:根据预设的存储单元容量将数据信息分割为多个数据块。

    s120:将所述数据块横向依次写入行列分布的所述存储单元。

    s130:当每行倒数第二个所述存储单元被所述数据块存储后,根据该行所有所述数据块生成行校验数据,并将所述行校验数据写入该行最后一个所述存储单元中。

    s140:当倒数第二行的所有所述存储单元均被写入时,根据每列的所有所述数据块生成列校验数据,并将所述列校验数据写入最后一行上与该列对应的所述存储单元中。

    为了便于描述,将所述装置拆分为功能模块架构,如图3所示,包括:

    第一数据划分模块101,用于根据预设的存储单元容量将数据信息分割为多个数据块。

    第一数据写入模块102,用于将所述数据块横向依次写入行列分布的所述存储单元。

    第一行校验写入模块103,用于当每行倒数第二个所述存储单元被所述数据块存储后,根据该行所有所述数据块生成行校验数据,并将所述行校验数据写入该行最后一个所述存储单元中。

    第一列校验写入模块104,用于当倒数第二行的所有所述存储单元均被写入时,根据每列的所有所述数据块生成列校验数据,并将所述列校验数据写入最后一行上与该列对应的所述存储单元中。

    本发明还提供了一种固态硬盘,包括上述的基于raid5的第一数据恢复装置。

    实施例2

    请参阅图4,本发明还提供了一种基于raid5的数据存储方法,所述方法包括以下步骤:

    s210:根据预设的存储单元容量将数据信息分割为多个数据块。

    s220:将所述数据块竖向依次写入行列分布的所述存储单元。

    s230:当每列倒数第二个所述存储单元被所述数据块存储后,根据该列所有所述数据块生成列校验数据并写入该列最后一个所述存储单元中。

    s240:当倒数第二列的所有所述存储单元均被写入时,根据每行的所有所述数据块生成列校验数据,并将所述行校验数据写入最后一列上与该行对应的所述存储单元中。

    本发明还提供了一种基于raid5的第二数据存储装置200,所述装置存储有多条指令,所述指令适于由处理器加载并执行基于raid5的数据存储方法,包括:

    为了便于描述,将所述装置拆分为功能模块架构,如图7所示,包括:

    第一数据划分模块201,用于根据预设的存储单元容量将数据信息分割为多个数据块。

    第一数据写入模块202,用于将所述数据块横向依次写入行列分布的所述存储单元。

    第一列校验写入模块203,当每列倒数第二个所述存储单元被所述数据块存储后,根据该列所有所述数据块生成列校验数据并写入该列最后一个所述存储单元中。

    第一行校验写入模块204,用于当倒数第二列的所有所述存储单元均被写入时,根据每行的所有所述数据块生成列校验数据,并将所述行校验数据写入最后一列上与该行对应的所述存储单元中。

    本发明还提供了一种固态硬盘,包括上述的基于raid5的第二数据恢复装置。

    请参阅图8,本发明还提供了一种基于raid5的数据恢复方法,所述数据信息通过上述的数据存储方法或进行存储,所述数据恢复方法包括以下步骤:

    s301:当同一行所述存储单元组成的条带上存在至少两个失效数据块时,检测所述失效数据块对应的列存储单元组成的条带,选择仅存在单个所述失效数据块的列条带修复。

    s302:当同一列所述存储单元组成的条带上存在至少两个失效数据块时,检测所述失效数据块对应的行存储单元组成的条带,选择仅存在单个所述失效数据块的行条带修复。

    本实施例中步骤s301和s302同时存在,且可互相循环执行,直至不存在失效数据或者不存在可以修复的条带后,当读取操作只需要读取其中一个条带且该条带存在两个失效数据时,根据步骤s301和s302来实现数据恢复。

    在其他实施例中,读取操作针对于整个存储块(行列分布的存储单元之和),可以逐行逐列检测可修复的条带,而且每修复一次就重新扫描检测每行每列,直至不存在失效数据或者不存在可以修复的条带后。

    进一步的,本实施例中,当存在超过1个所述条带可以进行修复,优先选择raid数据量少的那个条带。

    如图9-12所示,出现故障的数据写入框图通过应用上述的数据恢复方法,按照图9-12的过程实现恢复存在多失效数据的条带。

    本公开实施例提供的技术方案可以包括以下有益效果:

    通过将数据存储入行列分布的存储单元,以使得每一数据块对应一个行条带和一个列条带,当采用raid5存储方案时,数据块失效可以通过行条带或者列条带进行恢复,提高存储的安全性,且应用此存储方法,可以恢复出较多的有效数据,避免现有的raid5方案无法对同一条带出现多个失效数据进行修复的问题。

    本申请的说明书和权利要求书中,词语“包括/包含”和词语“具有/包括”及其变形,用于指定所陈述的特征、数值、步骤或部件的存在,但不排除存在或添加一个或多个其他特征、数值、步骤、部件或它们的组合。

    本发明的一些特征,为阐述清晰,分别在不同的实施例中描述,然而,这些特征也可以结合于单一实施例中描述。相反,本发明的一些特征,为简要起见,仅在单一实施例中描述,然而,这些特征也可以单独或以任何合适的组合于不同的实施例中描述。

    以上所述仅为本发明的较佳实施例而已,并不用以限制本发明,凡在本发明的精神和原则之内所作的任何修改、等同替换和改进等,均应包括在本发明的保护范围之内。


    技术特征:

    1.一种基于raid5的数据存储方法,其特征在于,所述方法包括以下步骤:

    根据预设的存储单元容量将数据信息分割为多个数据块;

    将所述数据块横向依次写入行列分布的所述存储单元;

    当每行倒数第二个所述存储单元被所述数据块存储后,根据该行所有所述数据块生成行校验数据,并将所述行校验数据写入该行最后一个所述存储单元中;

    当倒数第二行的所有所述存储单元均被写入时,根据每列的所有所述数据块生成列校验数据,并将所述列校验数据写入最后一行上与该列对应的所述存储单元中。

    2.根据权利要求1所述的数据存储方法,其特征在于,所述存储单元可以为die、block、page和cell中的任一项。

    3.一种基于raid5的数据存储方法,其特征在于,所述方法包括以下步骤:

    根据预设的存储单元容量将数据信息分割为多个数据块;

    将所述数据块竖向依次写入行列分布的所述存储单元;

    当每列倒数第二个所述存储单元被所述数据块存储后,根据该列所有所述数据块生成列校验数据并写入该列最后一个所述存储单元中;

    当倒数第二列的所有所述存储单元均被写入时,根据每行的所有所述数据块生成列校验数据,并将所述行校验数据写入最后一列上与该行对应的所述存储单元中。

    4.根据权利要求1所述的数据存储方法,其特征在于,所述存储单元可以为die、block、page和cell中的任一项。

    5.一种基于raid5的数据恢复方法,其特征在于,所述数据信息通过如权利要求1-2中任一项的数据存储方法或者权利要求3-4中任一项的数据存储方法进行存储,所述数据恢复方法包括以下步骤:

    当同一行所述存储单元组成的条带上存在至少两个失效数据块时,检测所述失效数据块对应的列存储单元组成的条带,选择仅存在单个所述失效数据块的列条带修复;

    当同一列所述存储单元组成的条带上存在至少两个失效数据块时,检测所述失效数据块对应的行存储单元组成的条带,选择仅存在单个所述失效数据块的行条带修复。

    6.根据权利要求5所述的基于raid5的数据恢复方法,其特征在于,当存在超过1个所述条带可以进行修复,优先选择raid数据量少的那个条带。

    7.一种基于raid5的第一数据存储装置,其特征在于,包括:

    数据划分模块,用于根据预设的存储单元容量将数据信息分割为多个数据块;

    数据写入模块,用于将所述数据块横向依次写入行列分布的所述存储单元;

    行校验写入模块,用于当每行倒数第二个所述存储单元被所述数据块存储后,根据该行所有所述数据块生成行校验数据,并将所述行校验数据写入该行最后一个所述存储单元中;

    列校验写入模块,用于当倒数第二行的所有所述存储单元均被写入时,根据每列的所有所述数据块生成列校验数据,并将所述列校验数据写入最后一行上与该列对应的所述存储单元中。

    8.一种基于raid5的第二数据存储装置,其特征在于,包括:

    数据划分模块,用于根据预设的存储单元容量将数据信息分割为多个数据块;

    数据写入模块,用于将所述数据块横向依次写入行列分布的所述存储单元;

    列校验写入模块,当每列倒数第二个所述存储单元被所述数据块存储后,根据该列所有所述数据块生成列校验数据并写入该列最后一个所述存储单元中;

    行校验写入模块,用于当倒数第二列的所有所述存储单元均被写入时,根据每行的所有所述数据块生成列校验数据,并将所述行校验数据写入最后一列上与该行对应的所述存储单元中。

    9.一种固态硬盘,其特征在于,包括如权利要求7所述的基于raid5的第一数据恢复装置。

    10.一种固态硬盘,其特征在于,包括如权利要求8所述的基于raid5的第二数据恢复装置。

    技术总结
    本发明提供了一种基于RAID5的数据存储方法,所述方法包括以下步骤:根据预设的存储单元容量将数据信息分割为多个数据块;将所述数据块横向依次写入行列分布的所述存储单元;当每行倒数第二个所述存储单元被所述数据块存储后,根据该行所有所述数据块生成行校验数据,并将所述行校验数据写入该行最后一个所述存储单元中;当倒数第二行的所有所述存储单元均被写入时,根据每列的所有所述数据块生成列校验数据,并将所述列校验数据写入最后一行上与该列对应的所述存储单元中。

    技术研发人员:黄朝松
    受保护的技术使用者:深圳安捷丽新技术有限公司
    技术研发日:2020.12.14
    技术公布日:2021.03.12

    转载请注明原文地址:https://wp.8miu.com/read-23598.html

    最新回复(0)