《用于多维独立磁盘冗余阵列的方法和系统.pdf》由会员分享,可在线阅读,更多相关《用于多维独立磁盘冗余阵列的方法和系统.pdf(35页完整版)》请在专利查询网上搜索。
1、(10)申请公布号 CN 104272261 A (43)申请公布日 2015.01.07 CN 104272261 A (21)申请号 201380015047.9 (22)申请日 2013.03.21 13/428,536 2012.03.23 US G06F 11/10(2006.01) (71)申请人 DSSD 股份有限公司 地址 美国加利福尼亚州 (72)发明人 JS邦威克 (74)专利代理机构 上海专利商标事务所有限公 司 31100 代理人 陆嘉 (54) 发明名称 用于多维独立磁盘冗余阵列的方法和系统 (57) 摘要 一种用于存储数据的方法。该方法包括接收 写入数据的请求。响应。
2、于该请求, 选择 RAID 网格 中的 RAID 网格位置来写入数据, 将数据写入至 存储器, 更新数据结构以反映 RAID 网格位置被填 充。 该方法还包括使用数据结构来确定RAID网格 中的数据网格是否被填充, 其中, RAID 网格位置 在数据网格中, 以及基于数据网格被填充的确定 : 使用数据来为 RAID 网格计算奇偶校验位值, 确定 与 RAID 网格位置相对应的永久存储器中的物理 地址, 将数据写入至与物理地址相对应的永久存 储器中的物理位置, 以及将奇偶校验位值写入至 永久存储器。 (30)优先权数据 (85)PCT国际申请进入国家阶段日 2014.09.18 (86)PCT国。
3、际申请的申请数据 PCT/US2013/033224 2013.03.21 (87)PCT国际申请的公布数据 WO2013/142646 EN 2013.09.26 (51)Int.Cl. 权利要求书 5 页 说明书 11 页 附图 18 页 (19)中华人民共和国国家知识产权局 (12)发明专利申请 权利要求书5页 说明书11页 附图18页 (10)申请公布号 CN 104272261 A CN 104272261 A 1/5 页 2 1. 一种包括指令的非暂时性计算机可读介质, 所述指令在被执行时执行一种用于存储 数据的方法, 所述方法包括 : 接收写入数据的请求 ; 响应于所述请求, 选。
4、择独立磁盘冗余阵列 (RAID) 网格中的 RAID 网格位置来写入所述 数据 ; 将所述数据写入存储器, 其中所述数据被临时存储于所述存储器中 ; 更新数据结构以表明所述 RAID 网格位置已被填充 ; 使用所述数据结构确定所述 RAID 网格中的数据网格是否被填充, 其中所述 RAID 网格 位置位于所述数据网格中 ; 基于所述数据网格已被填充的确定 : 使用所述数据为所述 RAID 网格计算奇偶校验位值, 其中所述 RAID 网格包括行 Q 奇偶 校验位组、 行 P 奇偶校验位组、 列 Q 奇偶校验位组、 列 P 奇偶校验位组和交叉奇偶校验位组, 其中每一奇偶校验位值与由行Q奇偶校验位组。
5、、 行P奇偶校验位组、 列Q奇偶校验位组、 列P 奇偶校验位组和交叉奇偶校验位组组成的组中选择的一个奇偶校验位组相关联, 且其中与 所述交叉奇偶校验位组相关联的奇偶校验位值是使用来自自行 Q 奇偶校验位组、 行 P 奇偶 校验位组、 列Q奇偶校验位组、 列P奇偶校验位组和交叉奇偶校验位组组成的组中选择的至 少一个奇偶校验位组的奇偶校验位值来计算 ; 确定对应于所述 RAID 网格位置的永久存储器中的物理地址 ; 将所述数据写入至对应于所述物理地址的永久存储器中的物理位置 ; 以及 将所述奇偶校验位值写入至所述永久存储器。 2. 如权利要求 1 所述的非暂时性计算机可读介质, 所述方法还包括 :。
6、 确定RAID立方体的数据部分是否被填充, 其中所述数据部分包括多个RAID网格, 其中 所述 RAID 网格是所述多个 RAID 网格之一 ; 基于所述数据部分被填充的确定 : 使用所述数据部分中的值来为所述 RAID 立方体的奇偶校验部分计算奇偶校验位值 ; 以及 将所述奇偶校验部分的奇偶校验位值写入至永久存储器。 3. 如权利要求 2 所述的非暂时性计算机可读介质, 其特征在于, 所述奇偶校验部分包 括 P 奇偶校验 RAID 网格和 Q 奇偶校验 RAID 网格。 4. 如权利要求 2 所述的非暂时性计算机可读介质, 其特征在于, 所述 RAID 立方体包括 第一维度、 第二维度和第三。
7、维度, 其中所述第一维度与第一独立故障域相关联, 所述第二维 度与第二独立故障域相关联, 及所述第三维度与第三独立故障域相关联。 5. 如权利要求 4 所述的非暂时性计算机可读介质, 其特征在于, 所述永久存储器中的 物理位置至少部分使用所述第一独立故障域、 所述第二独立故障域和所述第三独立故障域 来指定。 6. 如权利要求 4 所述的非暂时性计算机可读介质, 其特征在于, 所述永久存储器包括 多个存储模块, 其中所述多个存储模块的每一个包括固态存储器, 且其中所述第一独立故 障域是所述多个存储模块, 所述第二故障域是所述多个存储模块的每一个中的多个通道, 其中所述第三故障域是所述多个存储模块。
8、的每一个中的多个 NAND 管芯。 权 利 要 求 书 CN 104272261 A 2 2/5 页 3 7. 如权利要求 1 所述的非暂时性计算机可读介质, 其特征在于, 所述奇偶校验位值包 括从由 P 奇偶校验位值、 Q 奇偶校验位值和交叉奇偶校验位值组成的组中选择的至少一个 值。 8. 如权利要求 1 所述的非暂时性计算机可读介质, 其特征在于, 所述 RAID 网格包括第 一维度和第二维度, 其中所述第一维度与第一独立故障域相关联, 所述第二维度与第二独 立故障域相关联。 9. 如权利要求 8 所述的非暂时性计算机可读介质, 其特征在于, 所述永久存储器中的 物理位置至少部分使用所述第。
9、一独立故障域和所述第二独立故障域来指定。 10. 如权利要求 9 所述的非暂时性计算机可读介质, 其特征在于, 所述永久存储器包 括多个存储模块, 其中所述多个存储模块的每一个包括固态存储器, 且其中所述第一独立 故障域是所述多个存储模块, 及所述第二故障域是所述多个存储模块的每一个中的多个通 道。 11. 如权利要求 9 所述的非暂时性计算机可读介质, 其特征在于, 所述永久存储器包括 多个存储模块, 其中所述多个存储模块的每一个包括固态存储器, 且其中所述第一独立故 障域是所述多个存储模块的每一个中的多个通道, 及所述第二故障域是所述多个存储模块 的每一个中的多个 NAND 管芯。 12.。
10、 一种包括指令的非暂时性计算机可读介质, 所述指令在被执行时执行一种用于重 构数据的方法, 所述方法包括 : 接收对第一数据的请求 ; 获得所述第一数据, 其中所述第一数据从永久存储器中的第一物理位置获得, 其中所 述第一物理位置与第一物理地址相关联 ; 作出所述第一数据是从由已损坏和未被获得的数据的组中选择的数据的第一确定 ; 基于所述第一确定 : 标识与所述第一物理地址相对应的第一 RAID 网格位置 ; 标识第一 RAID 网格与第一独立磁盘冗余阵列 (RAID) 网格位置相关联 ; 标识与所述第一 RAID 网格相关联的 RAID 立方体, 其中所述 RAID 立方体包括所述第一 RA。
11、ID 网格和第二 RAID 网格 ; 作出使用所述第一 RAID 网格中的至少一个值来重构所述第一数据的第一尝试, 其中 所述第一尝试失败 ; 在所述第一尝试失败之后作出第二尝试, 以使用所述第二 RAID 网格中的至少一个值 来重构所述第一数据, 其中所述第二尝试成功 ; 以及 将经重构的第一数据提供至客户端。 13. 如权利要求 12 所述的方法, 还包括 : 接收对第二数据的请求 ; 获得所述第二数据, 其中所述第二数据从永久存储器中的第二物理位置获得, 其中所 述第二物理位置与第二物理地址相关联 ; 作出所述第二数据被损坏的第三确定 ; 基于所述第三确定 : 标识与所述第二物理地址相对。
12、应的第二 RAID 网格位置 ; 权 利 要 求 书 CN 104272261 A 3 3/5 页 4 标识所述第一 RAID 网格与所述第二 RAID 网格位置相关联 ; 作出使用所述第一 RAID 网格中的至少一个值来重构所述第二数据的第三尝试, 其中 所述第三尝试失败 ; 在所述第三尝试失败之后作出第四尝试, 以使用所述第二 RAID 网格中的至少一个值 来重构所述第二数据, 其中所述第四尝试失败 ; 以及 在所述第四尝试失败之后作出第五尝试, 以使用来自所述 RAID 立方体的奇偶校验部 分的至少一个值来重构所述第二数据, 其中所述第五尝试成功 ; 以及 将经重构的第二数据提供至客户端。
13、。 14. 如权利要求 1 所述的非暂时性计算机可读介质, 其特征在于, 所述奇偶校验部分包 括 P 奇偶校验位值和 Q 奇偶校验位值。 15.如权利要求14所述的非暂时性计算机可读介质, 其特征在于, 所述P奇偶校验位值 使用与所述第一RAID网格相关联的至少一个值以及与所述第二RAID网格相关联的至少一 个值来计算。 16. 如权利要求 12 所述的非暂时性计算机可读介质, 其特征在于, 所述第一 RAID 网格包括从由所述第一 RAID 网格的行 Q 奇偶校验位组、 所述第一 RAID 网格的行 P 奇偶校验位组、 所述第一 RAID 网格的列 Q 奇偶校验位组和所述第一 RAID 网格。
14、 的列 P 奇偶校验位组组成的组中选择的至少一个组 ; 以及 其中, 所述第二 RAID 网格包括从由所述第二 RAID 网格的行 Q 奇偶校验位组、 所述第二 RAID 网格的行 P 奇偶校验位组、 所述第二 RAID 网格的列 Q 奇偶校验位组和所述第二 RAID 网格的列 P 奇偶校验位组组成的组中选择的至少一个组。 17. 如权利要求 12 所述的非暂时性计算机可读介质, 其特征在于, 所述第一 RAID 网格 中的至少一个值是从由以下值组成的组中选择的一个值 : 对应于数据网格中的 RAID 网格 位置的值、 对应于和所述第一 RAID 网格的行 Q 奇偶校验位组相关联的 RAID 。
15、网格位置的值、 对应于和所述第一 RAID 网格的行 P 奇偶校验位组相关联的 RAID 网格位置的值、 对应于和 所述第一 RAID 网格的列 Q 奇偶校验位组相关联的 RAID 网格位置的值、 以及对应于和所述 第一 RAID 网格的列 P 奇偶校验位组相关联的 RAID 网格位置的值, 其中所述第一 RAID 网格 包括所述数据网格。 18. 如权利要求 12 所述的非暂时性计算机可读介质, 其特征在于, 所述永久存储器是 固态存储器。 19. 一种包括指令的非暂时性计算机可读介质, 所述指令在被执行时执行一种用于重 构数据的方法, 所述方法包括 : 接收对数据的请求 ; 获得所述数据,。
16、 其中所述数据从永久存储器中的物理位置获得, 其中所述物理位置与 物理地址相关联 ; 作出所述数据是从由已损坏和未被获得的数据的组中选择的数据的第一确定 ; 基于所述第一确定 : 标识与所述物理地址相对应的第一 RAID 网格位置 ; 标识 RAID 网格与所述第一 RAID 网格位置相关联 ; 作出使用第二 RAID 网格位置中的第一值来重构所述数据的第一尝试, 其中所述第二 权 利 要 求 书 CN 104272261 A 4 4/5 页 5 RAID 网格位置是位于从由所述 RAID 网格中的第一行和第一列组成的组中选择的至少一个 之中, 其中所述第一 RAID 网格位置是所述第一行和所。
17、述第一列的一部分, 其中所述第一尝 试失败 ; 在所述第一尝试失败之后作出第二尝试以重构所述数据, 其中所述第二尝试成功, 且 其中所述第二尝试包括 : 重构从由所述 RAID 网格中的第二行和第二列组成的组中选择的至少一个以获得所述 RAID 网格的经重构部分, 其中所述 RAID 网格的经重构部分与从由所述第一行和所述第一 列组成的组中选择的至少一个相交 ; 使用第三 RAID 网格位置中的第二值来重构所述数据, 其中所述第三 RAID 网格位置是 所述 RAID 网格的经重构部分的一部分, 且其中所述第三 RAID 网格位置是位于从由所述第 一行和所述第一列组成的组中选择的一个之中 ; 。
18、以及 将经重构的数据提供至客户端。 20. 一种包括指令的非暂时性计算机可读介质, 所述指令在被执行时执行一种用于重 构数据的方法, 所述方法包括 : 接收对数据的请求 ; 尝试从永久存储器中的物理位置获得所述数据, 其中所述物理位置与物理地址相关 联 ; 作出所述数据是从由已损坏和不可用的数据的组中选择的数据的确定 ; 基于所述确定 : 使用奇偶校验位值来重构与第二物理地址相对应的第一独立磁盘冗余阵列 (RAID) 网 格位置以获得第一值, 使用所述奇偶校验位值来重构与第三物理地址相对应的第二 RAID 网格位置以获得第 二值, 使用所述第一值来重构与第四物理地址相对应的第三 RAID 网格。
19、位置以获得第三值, 以及 使用所述第二值和所述第三值来重构所述数据, 其中所述第一 RAID 网格位置是位于 RAID 网格内的第一带中, 其中所述第二 RAID 网格位置是位于所述 RAID 网格内的第二带中, 其中所述奇偶校验位值是位于所述 RAID 网格内的第四 RAID 网格位置中, 以及 其中在所述第四 RAID 网格位置中有所述第一带和所述第二带的一部分 ; 以及 将经重构的数据提供至客户端。 21. 如权利要求 20 所述的非暂时性计算机可读介质, 其特征在于, 所述第一带是所述 RAID 网格中的行, 所述第二带是所述 RAID 网格中的列。 22. 如权利要求 20 所述的非。
20、暂时性计算机可读介质, 其特征在于, 所述第一带是所述 RAID 网格中的列, 所述第二带是所述 RAID 网格中的行。 23. 如权利要求 20 所述的非暂时性计算机可读介质, 其特征在于, 所述第四 RAID 网格 位置是所述 RAID 网格中的交叉奇偶校验位组的一部分。 24. 如权利要求 20 所述的非暂时性计算机可读介质, 其特征在于, 所述奇偶校验位值 是交叉奇偶校验位值。 权 利 要 求 书 CN 104272261 A 5 5/5 页 6 25. 如权利要求 20 所述的非暂时性计算机可读介质, 其特征在于, 所述奇偶校验位值 使用所述第一带中的至少一个其他奇偶校验位值来计算。。
21、 26. 如权利要求 25 所述的非暂时性计算机可读介质, 其特征在于, 所述至少一个其他 奇偶校验位值是从由行 P 奇偶校验位组和行 Q 奇偶校验位组组成的组中选择的组的一部 分。 27. 如权利要求 20 所述的非暂时性计算机可读介质, 其特征在于, 所述奇偶校验位值 使用所述第二带中的至少一个其他奇偶校验位值来计算。 28. 如权利要求 27 所述的非暂时性计算机可读介质, 其特征在于, 所述至少一个其他 奇偶校验位值是从由列 P 奇偶校验位组和列 Q 奇偶校验位组组成的组中选择的组的一部 分。 29. 如权利要求 20 所述的非暂时性计算机可读介质, 其特征在于, 所述数据与第五 RA。
22、ID 网格位置相关联, 其中所述第五 RAID 网格位置不是所述第一带的一部分且不是所述 第二带的一部分。 权 利 要 求 书 CN 104272261 A 6 1/11 页 7 用于多维独立磁盘冗余阵列的方法和系统 背景 0001 为了防止存储系统中的潜在数据丢失, 实施一种复制方案通常是有利的。当前的 复制方案仅能承受在存储系统内的数据不能被读取之前的有限错误量。 发明内容 0002 总的来说, 一方面, 本发明涉及一种用于存储数据的方法。该方法包括 : 接收写入 数据的请求 ; 响应于该请求, 选择RAID(Redundant Array of Independent Disk, 独立磁。
23、盘 冗余阵列 ) 网格中的 RAID 网格位置来写入数据 ; 将数据写入至存储器, 其中数据被临时存 储于存储器中 ; 更新数据结构以指示 RAID 网格位置被填充 ; 使用数据结构来确定 RAID 网 格中的数据网格是否被填充, 其中 RAID 网格的位置是在数据网格中 ; 基于数据网格被填充 的确定 : 使用数据来计算 RAID 网格的奇偶校验值, 将数据写入至与物理地址相对应的永久 存储器中的物理位置, 以及将奇偶校验值写入至永久存储器。 0003 总的来说, 一方面, 本发明涉及一种用于重构数据的方法。该方法包括 : 接收对第 一数据的请求 ; 获得第一数据, 其中第一数据从永久存储器。
24、中的第一物理位置而获得、 且其 中第一物理位置与第一物理地址相关联 ; 作出第一确定 : 第一数据是从由被破坏且未被获 得的数据组成的组中选择的数据 ; 基于第一确定, 标识 (identify) 对应于第一物理地址的 第一RAID网格位置 ; 标识第一RAID网格与第一RAID网格位置相关联 ; 标识与第一RAID网 格相关联的RAID立方体(RAID Cube), 其中RAID立方体包括第一RAID网格和第二RAID网 格 ; 作出使用第一 RAID 网格中的至少一个值来重构第一数据的第一尝试, 其中第一尝试失 败 ; 在第一尝试失败后, 作出使用第二 RAID 网格中的至少一个值来重构第。
25、一数据的第二尝 试, 其中第二尝试成功 ; 以及将经重构的第一数据提供给客户端。 0004 总的来说, 一方面, 本发明涉及一种用于重构数据的方法。该方法包括 : 接收对数 据的请求 ; 获得数据, 其中数据从永久存储器中的物理位置获得且其中物理位置与物理地 址相关联 ; 作出第一确定 : 第一数据是从由被破坏且未被获得的数据组成的组中选择的数 据 ; 基于第一确定, 标识对应于物理地址的第一RAID网格位置 ; 标识RAID网格与第一RAID 网格位置相关联 ; 作出使用第二 RAID 网格位置中的第一值来重构数据的第一尝试, 其中第 二 RAID 网格位置位于从由 RAID 网格中的第一行。
26、和第一列组成的组中选择的至少一个网 格中, 其中第一 RAID 网格位置是第一行和第一列的一部分, 其中第一尝试失败 ; 在第一尝 试失败后, 作出重构数据的第二尝试, 其中第二尝试成功, 且其中第二尝试包括 : 重构从由 RAID 网格中的第二行和第二列组成的组中选择的至少一个网格以获得 RAID 网格的经重构 部分, 其中 RAID 网格的经重构部分与从由第一行和第一列组成的组中选择的至少一个网 格相交 (intersect), 使用第三 RAID 网格位置中的第二值来重构数据, 其中第三 RAID 网格 位置是 RAID 网格的经重构部分的一部分, 其中第三 RAID 网格位置位于从由第。
27、一行和第一 列组成的组中选择的一个网格中 ; 以及将经重构的数据提供给客户端。 0005 从以下描述和所附权利要求中, 本发明的其他方面将显而易见。 说 明 书 CN 104272261 A 7 2/11 页 8 附图说明 0006 图 1 示出根据本发明的一个实施例的系统。 0007 图 2 示出根据本发明的一个实施例的 RAID 网格。 0008 图 3 示出根据本发明的一个实施例的 RAID 立方体及 RAID 立方体的各个视图。 0009 图 4 示出根据本发明的一个实施例的数据结构。 0010 图 5A-5C 示出根据本发明的一个实施例的流程图。 0011 图 6A-6C 示出根据本。
28、发明的一个或多个实施例的示例。 0012 图 7A-7D 示出根据本发明的一个或多个实施例的示例。 0013 图 8 示出根据本发明的一个或多个实施例的流程图。 0014 图 9A-9D 示出根据本发明的一个或多个实施例的示例。 具体实施方式 0015 现在将参照附图详细描述本发明的具体实施例。 在本发明实施例的以下详细描述 中, 提出了许多具体细节以便提供本发明更为详尽的理解。 然而, 对于本领域技术人员显而 易见的是, 本发明可以无需这些具体细节而被实现。 在其他实例中, 未详细描述众所周知的 特征以避免使描述变得不必要的复杂。 0016 在下述对于图 1-9D 的描述中, 在本发明的各个。
29、实施例中, 关于一个附图描述的任 一组件可以等效于关于任一其他附图描述的一个或多个被类似命名的组件。为简洁起见, 将不会关于每一附图重复这些组件的描述。因此, 每一附图的各个组件中的每一个和每一 个实施例通过引用被结合, 并且被假定为任选地存在于具有一个或多个被类似命名的组件 的每一个其他附图中。 此外, 根据本发明的各个实施例, 一个附图中对于这些部件的任何描 述将被解释为一个可实现的可选实施例, 以附加于、 结合于、 或者代替结合任何其他附图中 对于一个对应的被类似命名的部件而描述的实施例。 0017 总的来说, 本发明的实施例涉及使用多维 RAID 方案复制数据的方法和系统。更为 具体的。
30、, 本发明的实施例提供了用于实现二维 (2D)RAID 方案和三维 (3D)RAID 方案的方法 和系统。 0018 使用 2D RAID 方案, 实现这一 RAID 方案的 RAID 网格内存储的数据可以在给定的 RAID带(RAID stripe)中存在多于两个错误时被恢复。 类似地, 使用3D RAID方案, 实现这 一 RAID 方案的 RAID 立方体中存储的数据可以在给定的 RAID 带中存在多于两个错误时被 恢复。而且, 在本发明的各个实施例中, 当在多于一个独立故障域 (IFD) 中存在故障时, 所 有数据将被恢复。 0019 在本发明的一个或多个实施例中, IFD 对应于故障。
31、模式, 故障模式导致给定位置处 的数据不可访问。每一 IFD 对应于存储阵列中的独立故障模式。例如, 如果数据被存储在 NAND 闪存中, 其中 NAND 闪存是存储模块 ( 包括多个 NAND 管芯 (die) 的一部分, 则 IFD 可 以是 (i) 存储模块、 (ii) 通道 ( 即, 存储模块控制器 ( 未示出 ) 用来将数据写入至 NAND 闪 存的通道 )、 以及 (iii)NAND 管芯。 0020 为本发明的目的, 这里使用的术语 “RAID” 是指 “独立磁盘冗余阵列 (Redundant Array of Independent Disks)” 。尽管 “RAID” 是指任。
32、何独立磁盘的阵列, 但本发明的实施 例可以使用任何类型的永久存储设备来实现, 其中 RAID 网格位置 ( 见例如图 2) 可以基于 说 明 书 CN 104272261 A 8 3/11 页 9 本发明的实现方式 ( 见例如图 3 和 4) 跨一个或多个永久存储设备而分布。 0021 图1示出根据本发明的一个实施例的系统。 如图1所示, 系统包括一个或多个客户 端(100A、 100M)、 RAID控制器(104)、 存储器(106)、 可选的FPGA(102)以及存储阵列(108)。 0022 在本发明的一个实施例中, 客户端 (100A、 100M) 是任何系统或系统上执行的进 程, 它。
33、包括向 RAID 控制器 (104) 发出读取请求或写入请求的功能。在本发明的一个实施例 中, 客户端 (100A、 100M) 中的每一个可包括处理器 ( 未示出 )、 存储器 ( 未示出 ) 和永久存 储器 ( 未示出 )。在本发明的一个实施例中, RAID 控制器 (104) 被配置成实现多维 RAID 方 案, 多维 RAID 方案包括以与多维 RAID 方案 ( 见图 5A-5C) 一致的方式将数据写入至存储阵 列、 以及以与多维 RAID 方案 ( 见图 8) 一致的方式从存储阵列读取数据 ( 包括重构数据 )。 在本发明的一个实施例中, RAID 控制器 (104) 包括处理器,。
34、 处理器被配置成执行指令以实 现本发明的一个或多个实施例, 其中, 指令被存储于非暂时性计算机可读介质 ( 未示出 ) 上, 非暂时性计算机可读介质位于 RAID 控制器 (104) 内或与 RAID 控制器 (104) 可操作地 连接。或者, RAID 控制器 (104) 可以使用硬件来实现。本领域的技术人员将理解, RAID 控 制器 (104) 可以使用软件和 / 或硬件的任意组合来实现。 0023 在本发明的一个实施例中, RAID 控制器 (104) 可操作地连接至存储器 (106)。存 储器 (106) 可以是任何易失性存储器, 包括但不限于 : 动态随机存取存储器 (DRAM)、。
35、 同步 DRAM、 SDR SDRAM 和 DDR SDRAM。在本发明的一个实施例中, 存储器 (106) 被配置成在各种 数据 ( 包括奇偶校验数据 ) 被存储于存储阵列中之前临时存储这种数据。 0024 在本发明的一个实施例中, FPGA(102)( 若存在 ) 包括为将数据存储于存储阵列 (108) 中的目的而计算 P 和 / 或 Q 奇偶校验信息的功能以及 / 或者执行恢复使用多维 RAID 方案存储的已破坏数据所必要的各种计算的功能。根据本发明的一个或多个实施例, RAID 控制器 (104) 可以使用 FPGA(102) 来履行 (offload) 各种数据的处理。在本发明的一个。
36、实 施例中, 存储阵列 (108) 包括多个个别的永久存储设备, 包括但不限于 : 磁性存储设备、 光 学存储设备、 固态存储设备、 相变存储设备、 任何其他适当类型的永久存储设备、 或它们的 任意组合。 0025 本领域的技术人员将理解, 尽管图1示出FPGA, 但本发明可以没有FPGA而实现。 而 且, 本领域的技术人员将理解, 其他组件可以替代 FPGA 而被使用, 而不背离本发明。例如, 本发明可以使用以下各设备来实现 : ( 多个 )ASIC、 ( 多个 ) 图形处理单元 (GPU)、 ( 多个 ) 通用处理器、 能够为将数据存储于存储阵列中的目的而计算P和/或Q奇偶校验信息以及/ 。
37、或者执行恢复使用多维 RAID 方案存储的已破坏数据所必要的各种计算的任何其他硬件设 备 ; 包括硬件、 固件和 / 或软件的组合的任何设备、 或者它们的任一组合, 其中所述硬件、 固 件和 / 或软件被配置成为将数据存储于存储阵列 (108) 中的目的而计算 P 和 / 或 Q 奇偶校 验信息以及 / 或者执行恢复使用多维 RAID 方案存储的已破坏数据所必要的各种计算。 0026 图 2 示出根据本发明的一个实施例的 RAID 方案。在本发明的一个实施例中, 如果 RAID控制器实现2D RAID方案或3D RAID方案(见图3), RAID控制器就将数据存储于RAID 网格 (200) 。
38、中。图 2 示出根据本发明的一个或多个实施例的 RAID 网格的概念部分。RAID 网格 (200) 包括多个 RAID 网格位置, 其中每个 RAID 网格位置最终被写入至存储阵列中的 唯一物理地址。RAID 网格 (200) 包括 (i) 数据网格 (202), 包括存储从客户端接收的数据 ( 即, 客户端指示 RAID 控制器写入至存储阵列的数据 ) 的 RAID 网格位置 ; (ii) 行 P 奇偶校 说 明 书 CN 104272261 A 9 4/11 页 10 验位组(204), 包括存储于P奇偶校验位值中的RAID网格位置, 该P奇偶校验位值是使用一 行中的 RAID 网格位置。
39、中的数据计算的 ( 以下描述 ) ; (iii) 行 Q 奇偶校验位组 (206), 包括 存储于 Q 奇偶校验位值中的 RAID 网格位置, 该 Q 奇偶校验位值是使用一行中的 RAID 网格 位置中的数据计算的 ( 以下描述 ) ; (iv) 列 P 奇偶校验位组 (208), 包括存储于 P 奇偶校验 位值中的 RAID 网格位置, 该 P 奇偶校验位值是使用一列中的 RAID 网格位置中的数据计算 的 ( 以下描述 ) ; (v) 列 Q 奇偶校验位组 (210), 包括存储于 Q 奇偶校验位值中的 RAID 网格 位置, 该 Q 奇偶校验位值是使用一列中的 RAID 网格位置中的数据。
40、计算的 ( 以下描述 ) ; 以 及(vi)交叉奇偶校验位组(212), 包括使用以下数据计算的奇偶校验位值 : (a)来自行P奇 偶校验位组 (204) 中的 RAID 网格位置的数据、 (b) 来自行 Q 奇偶校验位组 (206) 中的 RAID 网格位置的数据、 (c) 来自列 P 奇偶校验位组 (208) 中的 RAID 网格位置的数据和 (d) 来自 列 Q 奇偶校验位组 (210) 中的 RAID 网格位置的数据 ( 以下描述 )。 0027 参见行(214), 在本发明的一个实施例中, 行(214)中存储在RAID网格位置中被表 示为 Pr 的数据是通过对行 (214) 中所有包。
41、括数据的 RAID 网格位置应用 P 奇偶校验函数而 计算的 ( 例如, Pr fP(D1,D2,D3,D4)。类似地, 在本发明的一个实施例中, 行 (214) 中存储 在 RAID 网格位置中被表示为 Qr 的数据是通过对行 (214) 中所有包括数据的 RAID 网格位 置应用 Q 奇偶校验函数而计算的 ( 例如, Qr fQ(D1,D2,D3,D4)。 0028 参见列(216), 在本发明的一个实施例中, 列(216)中存储在RAID网格位置中被表 示为 PC 的数据是通过对列 (216) 中所有包括数据的 RAID 网格位置应用 P 奇偶校验函数而 计算的 ( 例如, PC fP(。
42、D5,D2,D6,D7)。 。类似地, 在本发明的一个实施例中, 列 (216) 中存 储在 RAID 网格位置中被表示为 QC 的数据是通过对列 (216) 中所有包括数据的 RAID 网格 位置应用 Q 奇偶校验函数而计算的 ( 例如, QC fQ(D5,D2,D6,D7)。 0029 参见交叉奇偶校验位组 (212), 在本发明的一个实施例中, 存储在 RAID 网格位置 中被表示为 Ir1 的数据可通过下述方式计算 : 对行 P 奇偶校验位组 (204) 中的所有 RAID 网 格位置应用 P 奇偶校验函数或者对列 P 奇偶校验位组 (208) 中的所有 RAID 网格位置应用 P 奇。
43、偶校验函数。例如, Ir1 fP(Pr1,Pr2,Pr3,Pr4) 或 Ir1 fP(Pc5,Pc6,Pc7,Pc8)。 0030 在本发明的一个实施例中, 存储在RAID网格位置中被表示为Ir2的数据可通过下 述方式计算 : 对行 Q 奇偶校验位组 (204) 中的所有 RAID 网格位置应用 P 奇偶校验函数或 者对列 P 奇偶校验位组 (208) 中的所有 RAID 网格位置应用 Q 奇偶校验函数。例如, Ir2 fP(Qr1,Qr2,Qr3,Qr4) 或 Ir2 fQ(Pc5,Pc6,Pc7,Pc8)。 0031 在本发明的一个实施例中, 存储在RAID网格位置中被表示为Ir3的数据可。
44、通过下 述方式计算 : 对列 Q 奇偶校验位组 (210) 中的所有 RAID 网格位置应用 P 奇偶校验函数或 者对行 P 奇偶校验位组 (204) 中的所有 RAID 网格位置应用 Q 奇偶校验函数。例如, Ir3 fP(Qc5,Qc6,Qc7,Qc8) 或 Ir3 fQ(Pc1,Pc2,Pc3,Pc4)。 0032 在本发明的一个实施例中, 存储在RAID网格位置中被表示为Ir4的数据可通过下 述方式计算 : 对列 Q 奇偶校验位组 (210) 中的所有 RAID 网格位置应用 Q 奇偶校验函数或 者对行 Q 奇偶校验位组 (206) 中的所有 RAID 网格位置应用 Q 奇偶校验函数。。
45、例如, Ir4 fQ(Qc1,Qc2,Qc3,Qc4) 或 Ir4 fQ(Qc5,Qc6,Qc7,Qc8)。 0033 在本发明的一个实施例中, 用于计算所有奇偶校验位组的值的 P 和 Q 奇偶校验函 数可以对应于用于实现 RAID 6 的任何 P 和 Q 奇偶校验函数。 说 明 书 CN 104272261 A 10 5/11 页 11 0034 如以上讨论的, 图 2 所示的 RAID 网格 (200) 表示 RAID 网格的概念布局。然而, 当 个别的 RAID 网格位置被写入至存储阵列时, 各个 RAID 网格位置的相对位置可以跨一行或 一列而变化。例如, 参见行 (214), 当行 。
46、(214) 内的 RAID 网格位置被写入至存储阵列时, 包 括数据的 RAID 网格位置 ( 由 “D” 表示 ) 以及包括奇偶校验位数据的 RAID 网格位置 ( 即, 表 示为 “Pr” 和 “Qr” 的 RAID 网格位置 ) 的相对位置可为如下 : 、 , 或者行 (214) 内的任何其他排列。类似地, 参见列 (216), 包括数据的 RAID 网格位置 ( 由 “D” 表示 ) 以及包括奇偶校验位数据的 RAID 网格位置 ( 即, 表示为 “PC” 和 “QC” 的 RAID 网格位置 ) 的相对位置可为如下 : 、 、 或者列 (216) 内的任何其他排列。 0035 RAI。
47、D 控制器 ( 或系统中的另一实体 ) 可以确定每一个 RAID 网格位置被写入至存 储阵列中的哪一个物理地址。该确定可以在从客户端接收用于特定 RAID 网格的任何数据 ( 表示为 “D” ) 之前被作出。或者, 该确定可以在将 RAID 网格位置写入至存储阵列之前被 作出。 0036 本领域的技术人员将理解, 尽管图2示出RAID网格为66, 但RAID网格可以使用 任何其他尺寸来实现, 而不背离本发明。 0037 在本发明的一个实施例中, P 奇偶校验位值是里德所罗门特征值 (Reed-Solomon syndrome), 由此, P 奇偶校验函数可对应于能产生里德所罗门特征值的任何函数。
48、。在本发 明的一个实施例中, P 奇偶校验函数是异或 (XOR) 函数。 0038 在本发明的一个实施例中, Q 奇偶校验位值是里德所罗门特征值, 由此, Q 奇偶校 验函数可对应于能产生里德所罗门特征值的任何函数。在本发明的一个实施例中, Q 奇 偶校验位值是里德所罗门编码 (Reed-Solomon code)。在本发明的一个实施例中, Q g0D0+g1D1+g2D2+.+gn-1Dn-1, 其中 Q 对应于参照图 2 定义的 Q 奇偶校验位值的任一 个, g 是场发生器, D 的值对应于数据 ( 可同时包括来自数据网格的值和 / 或来自包括 P 或 Q 奇偶校验位值的一个或多个行或列的。
49、值 )。 0039 本领域的技术人员将理解, 尽管图 2 中的 RAID 网格包括每一行和每一列的 P 和 Q 奇偶校验位, 但本发明的实施例可以使用更多或更少的奇偶校验位值来实现, 而不背离本 发明。例如, 每一行和每一列可以仅包括 P 奇偶校验位值。在另一示例中, 每一行和每一列 可以包括三个奇偶校验位值。上述示例并非意图限制本发明。在本发明的一个实施例中, 无论本发明的实现中使用的奇偶校验位值的数量为多少, 每一个奇偶校验位值都是里德所 罗门特征值。 0040 图 3 示出根据本发明的一个实施例的 RAID 立方体 (RAID cube) 及 RAID 立方体的 各个视图。如图 3 所示, RAID 立方体 (300) 对应于 RAID 网格 (302) 的概念堆栈。如以上讨 论的, RAID 控制器 ( 或系统中的另一实体 ) 选择存储阵列内的物理地址, 在物理地址内存 储每一个 RAID 网格位置的数据。在本发明的一个实施例中, 物理地址的选择可以根据 IFD 来确定, 该 RAID 网格 ( 或 RAID 立方体 ) 是被设计为防止该 I。