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

文档序号:9816378阅读:335来源:国知局
基于ssd的raid系统中的校验数据的去重的制作方法
【专利说明】基于SSD的RAID系统中的校验数据的去重
【背景技术】
[0001 ]在一些计算应用中,多个存储设备(例如,机械存储设备,固态驱动(SSD)设备等) 可以被配置为充当单个逻辑存储设备。这种配置可称为独立磁盘冗余阵列(RAID)。各种 RAID配置可以利用称为"校验"的错误保护方案来提供一定的容错水平。一般地,使用校验 的RAID配置可以生成对应于存储在RAID中的数据的校验数据并且将校验数据存储在RAID 的校验部分中。校验数据可随后用于从影响RAID中存储的数据的错误(例如,数据损坏,驱 动故障等)中恢复。然而,为了保持容错性,每当新数据写入RAID时,校验数据需要重新生成 且重新写入RAID的校验部分中。在将校验数据存储在SSD设备上的RAID配置的情况下,将校 验数据连续地重新写入RAID中会导致SSD的耗损增加和/或RAID的功耗增加。
[0002] 发明概述
[0003] 本文详述的是将校验数据保持在RAID中的各种示例性的方法,其可具体实施为任 意多样的方法、装置、系统和/或计算机程序产品。
[0004] -些示例的方法可以包括:在RAID控制模块处,接收将数据单元写入所述RAID的 数据存储部的请求,其中所述RAID具有存储在数据存储部中的当前数据单元并且具有存储 在所述RAID的校验数据存储部中的当前校验数据;响应于写入所述数据单元的请求,至少 部分地基于所述数据单元与当前数据单元之间的异或(X0R)来确定临时数据;至少部分地 基于临时数据与当前校验数据之间的X0R运算来确定新校验数据;将所述新校验数据去重 以判定新校验数据的任意部分是否是当前校验数据的部分的重复;以及将所述新校验数据 的被判定为不是所述当前校验数据的部分的重复的部分写入所述RAID的校验数据存储部。
[0005] 本公开还描述了其中存储有指令的各种示例的机器可读非暂态存储介质,响应于 由一个或多个处理器执行,所述指令可操作地使RAID的独立磁盘冗余阵列(RAID)控制模块 能够响应于将特定数据单元写入RAID的请求而至少部分地基于特定数据单元与第一数据 单元之间的异或(X0R)运算来判定临时数据,所述RAID可以具有与第一数据单元相关联的 数据存储部,并且RAID具有与第一校验数据相关联的校验数据存储部;至少部分地基于临 时数据与第一校验数据之间的X0R运算来确定第二校验数据;对所述第二校验数据去重以 判定第二校验数据的任意部分是否是第一校验数据的部分的重复;以及将第二校验数据的 被判定为不是第一校验数据的部分的重复的部分写入RAID的校验数据存储部。
[0006] 本公开另外描述了示例的系统,其可以包括:独立磁盘冗余阵列(RAID),其具有存 储在数据存储部中的当前数据单元并且具有存储在RAID的校验数据存储部中的当前校验 数据;以及RAID控制模块,其与RAID通信耦合。在示例中,RAID控制模块包括数据输入/输出 模块,其能够可操作地实现接收将数据单元写入RAID的数据存储部的请求,所述RAID模块 还可以包括校验保持模块,校验保持模块配置为:响应于写入数据单元的请求而将数据单 元与当前校验数据进行比较来确定临时校验数据;将临时校验数据与当前校验数据进行比 较来确定新校验数据;将新校验数据拆分成多个新的校验数据块;构建散列表,该散列表将 多个第一散列值中的每一个与新的校验数据块中的不同的块相关联,以及将多个第二散列 值中的每一个与当前校验数据的不同的块相关联;以及基于多个第一散列值与多个第二散 列值的比较来确定新校验数据的包括数据单元的至少一部分的非重复块。
【附图说明】
[0007] 在说明书的权利要求中特别指出并清楚的要求保护主题。根据下面结合附图给出 的以下说明和随附权利要求书,本公开的前面的特征和其它特征将变得更加充分显而易 见。应当理解,这些附图仅描绘了根据本公开的多个实施例,并且因此不视为限制其范围。 通过利用附图,将通过额外的具体性和细节来描述本公开。
[0008] 在附图中:
[0009] 图la示出了包括RAID的示例的系统的框图;
[0010] 图lb示出了示例的当前校验数据和当前校验数据的块的框图;
[0011]图lc不出了不例的散列表的框图;
[0012]图2a示出了包括RAID的示例系统的框图;
[0013]图2b示出了示例的新校验数据和新校验数据的块的框图;
[0014]图2c示出了对应于新校验数据的块的示例的散列值的框图;
[0015]图2d示出了示例的校验数据去重的框图;
[0016]图2e示出了基于去重校验数据而更新的散列表的示例的框图;
[0017]图3示出了为RAID保持校验数据的示例方法的流程图;
[0018] 图4示出了示例的计算机程序产品;
[0019] 图5示出了全部依照本公开的至少一些实施例布置的示例的计算设备的框图。
[0020] 发明详述
[0021] 下面的说明书阐述了各个示例以及具体细节以提供对权利要求主题的全面理解。 权利要求主题可以在没有本文公开的一些或更多具体细节的情况下来实施。此外,在一些 情形下,为避免不必要地混淆权利要求,未对公知的方法、程序、系统、组件和/或电路进行 详细描述。在下面的详细说明中,将参考附图,附图构成了详细说明的一部分。在附图中,除 非上下文指出,否则相似的符号通常表示相似的组件。在详细说明、附图和权利要求中所描 述的示例性实施例不意在限制。可以使用其它实施例,并且可以做出其它改变,而不偏离本 文呈现的主题的精神或范围。如本文大致描述且如图中所图示的,本公开的方案能够以各 种不同配置来布置、替代、组合和设计,所有这些都在本文中明确地构思出且构成本公开的 部分。
[0022] 本公开尤其涉及与保持用于RAID的校验数据有关的方法、装置、系统和/或计算机 程序产品。
[0023] 一般地,RAID设备可包括构造为充当单一逻辑存储单元的多个存储设备。一般地, RAID设备可由两个以上单个存储设备构成且以各种配置来组织(例如,RAID 1,RAID 2, RAID 3,RAID 4,RAID 5,RAID 6,RAID 10,等等)。各种RAID配置可以提供一定的容错水平。 例如,上述的校验错误保护方案可以实现于一些RAID配置(例如,RAID 2,RAID 3,RAID 4, RAID 5,RAID 6,RAID 10,等等)中。
[0024] 一般地,校验错误保护方案可以通过根据存储在RAID中的数据确定校验数据来提 供容错性。校验数据可随后用于从影响存储在RAID中的数据的错误(例如,数据损坏、驱动 故障等)中恢复。作为示例,RAID设备可以包括第一、第二和第三单个的存储设备。RAID设备 可配置为将数据存储在第一和第二单个的存储设备上,并且将校验数据存储在第三单个存 储设备上。RAID设备可以基于存储在第一单个存储设备上的数据与存储在第二单个存储设 备上的数据之间的异或(XOR)运算来生成校验数据。RAID设备可以将该确定的校验数据存 储到第三单个存储设备中。RAID设备则可以利用存储在第三单个存储设备上的校验数据来 "恢复"存储在第一单个存储设备或第二单个存储设备上的数据。例如,假设第一单个存储 设备故障。可以基于存储在第二单个存储设备上的数据与存储在第三单个存储设备上的校 验数据之间的XOR运算来恢复存储在第一单个存储设备上的数据。
[0025]为了保持容错性,校验数据需要持续地再生成且存储在RAID设备中。更特别地,当 新数据写入(或者对现有数据做出改变)RAID设备时,可能需要重新生成校验数据。例如,使 用上述的RAID配置,如果存储在第一单个存储设备上的数据改变,则存储在第三单个存储 设备上的校验数据可能不再能用于恢复存储在第一单个存储设备或第二单个存储设备上 的数据。因此,需要确定新的校验数据(例如,基于存储在第一单个存储设备上的改变后的 数据与存储在第二单个存储设备上的数据之间的X0R运算)。该新的校验数据可以写入第三 单个存储设备,如上所述。
[0026]对于使用固态存储设备(SSD)来存储其校验数据的RAID设备,持续地或者以其它 方式将新校验数据多次写入RAID设备会导致用于存储校验数据的SSD中耗损增加。另外,用 于操作RAID设备的功率量会由于需要在写入新数据(或者现有数据改变)之前需要擦除SSD 上的数据以及由于大量校验数据写入SSD的频繁方式而增加。
[0027] 本公开的各个实施例可以提供将校验数据保持在RAID设备中。特别地,本公开的 一些实施例可利于保持校验数据,在校验数据中至少一些数据集无需每当存储在RAID设备 中的数据的变化发生时重新写入RAID设备。
[0028] 使用上述配置,提供下面的非限制示例以便进一步图示说明本公开的一些实施 例。如上所述,第一和第二单个存储设备可用于存储数据,而第三单个存储设备可用于存储 校验数据。作为将校验数据存储在RAID设备中的部分,校验数据可拆分成更小的片(块),并 且可以生成每个块的散列。
[0029] 在示例中,第一和第二单个存储设备中的数据可以组织成页。页可以具有特定尺 寸。校验数据的块可拆分成各种尺寸,例如一个或多个块可以是第一尺寸,该第一尺寸可以 基本上类似于第一和第二单个存储设备中的数据页。在示例中,一个或多个块可以具有小 于或等于第一尺寸的第二尺寸,诸如例如4千字节。散列表可用于存储散列且记录对应于每 个块的数据存储在第三单个存储设备上的位置(例如,存储器位置,等等)。
[0030] 当新数据写入RAID设备时,新的校验数据可通过如下方式确定:基于新数据与当 前数据之间的X0R运算来确定临时数据;以及基于临时数据与当前校验数据之间的X0R运算 来确定新的校验数据。例如,假设新数据写入第一单个存储设备。可以基于新数据(例如,现 在存储于第一单个存储设备上的数据)与当前数据(例如,存储在第二单个存储设备上的数 据)之间的X0R运算来确定临时数据。然后,可以基于临时数据与当前校验数据(例如,存储 在第三单个存储设备上的校验数据)之间的X0R运算来确定新校验数据。
[0031] 可以对新校验数据进行部分"去重",以确定不同于当前校验数据的部分的新校验 数据的部分。新校验数据的被确定为不同于当前校验数据的部分可以写入第三单个存储设 备。然而,新校验数据的与当前校验数据的部分相同的部分无需重新写入第三单个存储设 备。示例的去重过程可以包括将新校验数据拆分成块(例如,如上文结合当前校验数据所描 述的)。可以对于新校验数据的每个块生成散列并且将散列与存储在散列表中的当前校验 数据的散列进行比较。基于该比较,被发现对应于当前校验数据的块的新校验数据的任意 块无需写入第三单个存储设备。基于该比较,被发现不对应于当前校验数据的任意块的新 校验数据的块可以写入第三单个存储设备。也可以相应地更新散列表(例如,更新散列、更 新位置,等等)。
[0032] 因此,RAID设备中的校验数据可得以保持(例如,基于RAID设备中最新存储的数据 而保持最新),其中新校验数据的部分(例如,块)
当前第1页1 2 3 4 5 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1