testingRAID

如何完全评估RAIDconfiguration?

拉驱动器是一回事,但有更多的工具和技术?

我已经考虑通过运行的驱动器(粉末驱动的钉枪)来查看会发生什么,或模拟各种电气exception(电缆短路/开路,功率过载和浪涌等)。

应该testing什么,以及如何?

-亚当

  • 在不支持热插拔的驱动器中,许多raid控件(例如Linux上的mdadm)都有一个set-faulty命令来模拟驱动器故障。
  • 在热插拔的驱动器中,可以抽出一个驱动器!

我认为你的testing应该涵盖你计划的合理情况。 如果你试图在灌木丛中build立一个服务器,那么电气波动是合理的testing套件。 如果您在数据中心,服务协议可能涵盖权力。

如果你认为一个机架内的驱动器爆炸是合理的 – 然后testing它。 也许你正在巴格达的一个指挥中心里build立一个服务器。 但是再一次,如果你在华盛顿州的可能性较小。

作为一般规则,您的testing应涵盖所有预期的情况:

  • 驱动器老了,最终变坏(find一个驱动器的最后一脚,让它运行,然后捣毁,直到它失败)
  • 云端硬盘无法通过智能testing,但看起来不错,但您只需要将其replace即可
  • 一般的驱动器更换因为大小/性能升级或者你刚才听说批次不好

还有合理的极端情况。

  • 服务器突然断电 – 好的。
  • 服务器本身被闪电击中 – 不是很多。
  • 架子倒下 – 好吧。
  • 货架撞上卡车 – 不是那么多。
  • 驾驶被推挤 – 好吧
  • 驱动器被枪杀 – 不是很多。

而且最重要的是 – RAID不能防止驱动器在数据上悄悄地破坏! 所以确保你正在做哈希和文件validation!

如果您关心整体解决scheme的最终可靠性,那么testing一个不合适的驱动器是非常重要的。 每一个失败的RAID解决scheme(意味着冗余不能防止发生故障的驱动器)我所看到的是由于未能testing实际的驱动器故障。 正常的testing是拉驱动器,宣称驱动器故障已经过testing,然后继续。

最好的解决scheme可能是收集边缘驱动器,或修改固件,导致不一致的响应。 只有存储供应商相当有可能具备这种能力。

我喜欢通过一个正在运行的驱动器钉钉子的想法,但是在相邻的驱动器上的力量可能会导致一个不切实际的灾难性的失败。 或者,驱动器的完全故障可能会导致不切实际的干净故障。

如果我被允许对RAID进行合法的testing,我会用不同的方式摧毁一些驱动器。 将电线连接到驱动器电路板上的随机组件,然后将其油炸或短路。 事实上,如果shell的几何形状使得这不太可能破坏邻近的驱动器,则通过驱动器钉住。 (我认为由此产生的arrays的其余部分是一个合理的testing)。 拦截驱动器的数据path,并返回每个可能的错误,无意义的结果或延迟随机时间的正确结果。

有时驱动器会返回错误的块。 预计驱动器会在其连接上导致任何可能的电气问题。

我的经验是,没有人考虑存储购买想要做真正的testing。 这可能会暴露真正的问题。 如果有人testing存储可靠性,我会非常感兴趣,当然他们不会公布结果。