我一直在研究从RAID 5到RAID 10的实时迁移的可能性,我很好奇为什么大多数RAID控制器(尤其是戴尔的PERC控制器)不支持从实时迁移的概念RAID 5到RAID 10。
我制作了一个快速电子表格,显示出这不仅是一个相对简单的过程,而且可以在迁移的任何部分都不会丢失容错的情况下完成。 由于存储效率的降低,至less需要1个额外的驱动器… 3个驱动器的RAID 5成为4个驱动器的RAID 10,4个驱动器的RAID 5成为6个驱动器的RAID 10等等。
将3个驱动器的RAID 5(在磁盘A,B和C上组成)迁移到4个驱动器的RAID 10(在磁盘D中添加)可以容错方式进行4次。 (这个过程大概可以做得更有效率,可能会有一些容错性的损失,但是我的目标只是为了certificate它是可以做到的)
从虚拟数据块开始,看起来像这样:
ABCD - - - - 1 2 p 3 p 4 p 5 6 (p=parity; repeats every 6 blocks)
第一步然后变成填充D,就好像它是RAID 0中的第二个驱动器一样:
ABCD - - - - 1 2 p 2 3 p 4 4 p 5 6 6
在这一点上,如果交stream电故障,它将没有什么不同于正常的RAID 5故障。 如果D失败,唯一的损失是你需要重新启动迁移。
然后为C做同样的事情,就好像它是RAID 0集合中的第一个驱动器一样:
ABCD - - - - 1 2 1 2 3 p 3 4 p 5 5 6
驱动器AB现在是“降级”的RAID 5集合。 驱动器CD现在是一个“健康的”RAID 0集合。 任何单个驱动器故障仍然可以恢复 – C&D可以从“降级”A&B重build,A&B状态可以从C&D状态重新计算
该过程然后重复B:
ABCD - - - - 1 2 1 2 3 4 3 4 p 6 5 6
B现在是D的镜子,所以任何一个驱动都可以掩盖对方的失败。 如果C失败,A或者已经有一个副本,或者有奇偶校验数据来重build它。
最后,更新A的奇偶校验位以匹配C:
ABCD - - - - 1 2 1 2 3 4 3 4 5 6 5 6
这产生了一个RAID10arrays
我运行这个4磁盘RAID 5到6磁盘RAID 10迁移的情况下,这个过程似乎保持得很好(需要5遍,因为扩展盘E和F可以填充在相同的通行证没有容错的损失。)
所以问题是….为什么市场上的任何RAID控制器似乎都不支持这种types的迁移? (有没有这样做?)作为数据存储的新标准,“一个大RAID10”被提倡,除了目前build议的“备份,重buildarrays,还原”之外还有更简单的工具可以迁移吗?
更有趣的是,至less在戴尔的PERC卡的情况下,甚至不可能从RAID 0迁移到RAID 10,这看起来应该和从无RAID到RAID 1的迁移没有什么不同。