基于ssd的raid系统中的校验数据的去重的制作方法_2

文档序号:9816378阅读:来源:国知局
可无需每当生成新校验数据时都重新写入 第三单个存储设备。这会导致每当新校验数据被确定时写入RAID设备的校验数据的量减 少。因此,可以实现用于存储校验数据的SSD的耗损的大幅减轻。此外,可以实现RAID设备所 消耗的功率量的大幅减少。
[0033] 给出上述示例仅用于示例的目的,不旨在限制。特别地,上述示例能够应用于包括 多于三个单个存储设备的RAID配置。此外,上述示例能够应用于在存储设备之间镜像数据, 基于条带化将数据写入存储设备,和/或两者的组合和/或其它配置的RAID配置。另外,本公 开的各个示例可以指的是固态存储、固态存储设备以及SSD和/或其它类型的存储设备。本 文所描述的至少一些实施例可以使用各种类型的固态技术(例如,闪存(Flash)、DRAM、相变 存储器、电阻RAM、铁电RAM、纳米RAM,等等)。此外,至少一些实施例能够应用于其中一个或 多个元件可以是非SSD型存储设备的多元件存储阵列。例如,通过一些实施例,RAID阵列可 以由旋磁盘存储和SSD存储的组合构成。
[0034] 图la示出了依照本公开的至少一些实施例布置的示例的系统100的框图。如图la 中能够看到的,系统100可以包括计算设备110和RAID设备120,它们经由连接130通信地耦 合。在一些示例中,连接130可以是因特网连接、光学连接、LAN连接、无线连接、PCIe连接、 eSATA连接、USB连接、Thunderbolt?连接、或者在计算设备110与RAID设备120之间传递数 据的任何其它适合的连接。在一些示例中,RAID设备120和计算设备110可以封装在同一壳 体(例如,外壳、箱体、机架,等等)中,包括集成在共同的电子设备内或者集成为共同的电子 设备。在一些示例中,RAID设备120和计算设备110可以封装在分立的壳体中。
[0035] RAID设备120可以包括RAID控制器140以及与RAID控制器140可操作地耦合的存储 驱动器阵列150。一般地,存储驱动器阵列150可由被配置为充当单个逻辑存储设备的任意 数量的单个存储设备构成。实际上,存储驱动器阵列150可以由至少三个单个存储驱动器构 成。例如,上述的方案,存储驱动阵列包括两个数据驱动器(例如,第一单个存储设备以及第 二单个存储设备)以及一个校验驱动器(例如,第三单个存储设备)。作为另一示例,存储驱 动器阵列150可以由四个数据驱动器和一个校验驱动器构成。上文描述了其它多种示例的 RAID配置以及将数据写入存储驱动器阵列150中的数据驱动器中的方法。可以提供任意实 际数量的示例的RAID配置。因此,本公开的余下部分假设存储驱动器阵列150包括数据存储 部151和校验数据存储部152。无意进一步区分在单个存储设备上数据存储部151与校验数 据存储部152的位置。然而,实际上,数据存储部151可实现在多个单个存储设备(例如,如上 所述的第一和第二单个存储设备)之间。类似地,校验数据存储部可以实现在一个以上的单 个存储设备之间。
[0036] 一般地,RAID控制器140可被配置为提供对RAID设备120的读/写访问。如图所示, RAID控制器140可以包括数据输入/输出(I/O)模块141,其被配置为提供对存储驱动器阵列 150的数据存储部151的读和/或写访问。例如,RAID控制器140可以从计算设备110接收数 据,该数据将存储在RAID设备120上并且可以利用数据I/O模块141使数据存储在数据存储 部151中。作为另一示例,RAID控制器140可以从计算设备110接收从RAID设备读数据的请求 并且可以利用数据I/O模块141将数据提供给计算设备110。在一些示例中,数据可以是文 档、图像、视频、档案文件或者一般地可以存储在存储驱动器阵列150上的任何数字文件和/ 或数据。例如,包括当前数据153和旧数据154的数据存储部151显示在图la中,处于如图2a 中所示和所描述接收新数据之前以及校验数据更新之前的状态。
[0037] RAID控制器140还可以包括校验数据保持(maint.)模块142。一般地,校验数据保 持模块142可被配置为实现错误保护方案(例如,上述的校验方案)。更特别地,校验数据保 持模块142可被配置为基于存储在数据存储部151中的数据来生成校验数据。例如,校验数 据保持模块142可被配置为基于当前数据153与旧数据154之间的X0R运算来确定当前校验 数据155。校验数据保持模块142还可以被配置为读校验数据(例如,当前校验数据155)和/ 或将校验数据(例如,当前校验数据155)写入存储驱动器阵列150的校验数据部152中。校验 数据保持模块142还可被配置为在出错(例如,数据损坏、驱动器故障等等)情况下重建数据 存储部151。例如,校验数据保持模块142可被配置为基于当前校验数据155与旧数据154之 间的X0R运算来恢复当前数据153。类似地,校验数据保持模块142可被配置为基于当前校验 数据155与当前数据153之间的X0R运算来恢复旧数据154。在示例中,数据I/O模块141和/或 校验数据保持模块142可通过硬件、软件、一个或多个可执行代码区块、硬件和软件的组合 等等或者它们的组合中的任一种来实现。
[0038] 作为生成当前校验数据155的部分,校验数据保持模块142可以被配置为将当前校 验数据155拆分成较小的片(例如,块)。例如,图lb示出了依照本公开的至少一些实施例布 置的拆分成四块156a、156b、156c和156d的当前校验数据155。校验数据保持模块142可进一 步配置为生成对应于每个块156的散列(例如,等Berkeley Software Distribution(BSD) checksum,Message-Digest Algorithm 2(MD2),Message-Digest Algorithm 4(MD4), Message-Digest Algorithm 5(MD5),Message-Digest Algorithm 6(MD6),等等)。例如,图 lc示出了依照本公开的至少一些实施例布置的块156a、156b、156c和156d以及对应的散列 值157a、157b、157c和157d。图lc进一步示出了分别对应于块156a、156b、156c和156d的指针 158&、15813、158(:和158(1。一般地,指针1583-158(1可以包括对应的块1563-156(1在存储驱动 器阵列150的当前校验数据存储部152内的位置(例如,地址值,等等)。例如,指针158a可以 包括对应于存储在校验数据存储部15 2中的当前校验数据15 5的块156a的位置的地址值。校 验数据保持模块142可被配置为将包括散列值157a-157d和指针158a-158d的数据存储在散 列表143中。例如,图la示出了散列表143。在一些示例中,类似图la所示的,散列表143可以 存储在RAID控制器140中的存储器位置上。在其它示例中,散列表143可以存储在存储驱动 器阵列150中,例如,存储在数据存储部151和/或校验数据存储部152中,存储在计算设备 110中,存储在分立的独立设备中,存储在不同的RAID设备和/或类似设备或其组合中。
[0039] 如所述的,RAID控制器140可以从计算设备110接收新数据,该新数据将存储在 RAID设备120中。因此,存储在存储驱动器阵列150的数据存储部151中的数据可能变化(例 如,当从计算设备110接收到新的和/或更新后的数据时)。例如,图2a示出了依照本公开的 至少一些实施例布置的图la的系统100,其中当前数据153和新数据201存储在存储驱动器 阵列150的数据存储部151中。因此,当前校验数据155可能不足以提供数据存储部151的容 错。更特别地,校验数据保持模块142可能不能够基于当前校验数据155来恢复当前数据153 和/或新数据201。校验数据保持模块142可配置为,响应于存储在数据存储部151中的数据 的变化,更新校验数据存储部152和散列表143。
[0040] -般地,校验数据保持模块142可被配置为基于当前数据153、新数据201和当前校 验数据155来确定新校验数据。校验数据保持模块142还可配置为更新校验数据存储部152 和散列表143以对应于如上所述的新校验数据(例如,对新校验数据去重)。例如,在一些实 施例中,校验数据保持模块142可以如下确定新校验数据:可以基于当前数据153与新数据 201之间的X0R运算来确定临时校验数据;可以基于当前校验数据155与所确定的临时校验 数据之间的X0R运算来确定新校验数据。图2b示出了依照本公开的至少一些实施例布置的 可由如上所述的校验数据保持模块142生成的新校验数据205。校验数据保持模块142还可 配置为将新校验数据205拆分成块。例如,图2b还示出了拆分成块207a,207b,207c,和207d 的新校验数据205。校验数据保持模块142还可配置为基于块207a-207d来确定散列。例如, 图2c示出了依照本公开的至少一些实施例布置的块207a,207b,207c,和207d以及分别对应 的散列值209a,209b,209c,和209d。校验数据保持模块142还可以配置为将对应于新校验数 据205的散列值(例如,散列值209a-209d)与对应于当前校验数据155的散列值(例如,存储 在散列表143中的散列值157a-157d)进行比较。例如,图2d示出了依照本公开的至少一些实 施例布置的与散列值157a-157d进行比较的散列值209a-209d。如图所示,散列值209a可类 似于散列值157d。另外,如图所示,散列值209c可类似于散列值157a。
[0041] 被识别为类似的散列值可表明对应的块包含相同的数据。例如,块207a和207c可 以与分别对应于散列值157d和157a的块156d和156a包含相同的数据。因此,对应于新校验 数据205的部分(例如,块)的当前校验数据155的部分(例如,块)无需重新写入校验数据存 储部152。例如,块207a和207c无需写入校验数据存储部152,因为它们已经由分别对应于散 列值157d和157a的块156d和156a表示。相反,校验数据保持模块142可配置为写入来自新校 验数据205的尚未存储在校验数据存储部152中的块207a-207d中的一个或多个,例如块 207b和207d,从而形成更新后的校验数据203。
[0042]除了识别作为当前校验数据155的一个或多个块156a_156d的重复的新校验数据 205的块207a-207d之外,校验数据保持模块142可配置为确定新校验数据205的具有相同散 列值209a-209d的块207a-207d。校验数据保持模块142可配置为写入被识别为彼此重复的 两个或多个块207a-207d中的一个。例如,图2c示出了散列值209b和209d可以彼此相同。因 此,块207b和207d彼此重复。因此,校验数据保持模块142可被配置为将块207b或207d写入 校验数据存储部152。
[0043]校验数据保持模块142还可以配置为更新散列表143。例如,图2e示出了依照本公 开的至少一些实施例布置的对应于新校验数据205的更新的散列表143。例如,图2e示出了 新校验数据205的块207a-20
当前第2页1 2 3 4 5 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1