如何全面评估 RAID 配置?
拔出驱动器是一回事,但是否还有其他工具和技术呢?
我曾考虑将钉子穿过正在运行的驱动器(火药驱动的钉枪)来看看会发生什么,或者模拟各种电气异常(电缆短路/断路、电源过载和电涌等)。
应该测试什么?如何测试?
-亚当
答案1
- 在不支持热插拔的驱动器中,许多 raid 控制(例如 linux 上的 mdadm)都有一个 set-faulty 命令,可以模拟驱动器故障。
- 在可以热插拔的驱动器中,拔出驱动器!
我认为您的测试应该涵盖您计划的合理情况。如果您尝试在灌木丛中设置服务器,那么电力波动是合理的测试套件。如果您在数据中心,服务协议可能涵盖电力。
如果您认为机架内的硬盘爆炸是合理的,那么请测试一下。也许您正在巴格达的指挥中心设置服务器。但是,如果您在华盛顿州,这种可能性就更小了。
一般来说,你的测试应该涵盖所有预期的情况:
- 驱动器很旧,最终会损坏(找到一个快要报废的驱动器,让它运行,然后猛砸它直到它坏掉)
- 硬盘未通过智能测试,但看起来没问题,但为了以防万一,您想更换它
- 由于尺寸/性能升级而进行的常规驱动器更换,或者您只是听说该批次有问题
和合理的极端情况。
- 服务器突然断电-好的。
- 服务器本身被雷击中 - 但情况并非如此。
- 架子倒了-好吧。
- 货架被卡车撞到——没那么严重。
- 开车时被推挤 - 还好
- 驾驶铅球——并非如此。
最重要的是 - RAID 无法防止驱动器悄悄损坏数据!因此,请确保您正在进行哈希和文件验证!
答案2
如果您关心整体解决方案的最终可靠性,那么对驱动器故障进行不雅测试确实很重要。我见过的每个失败的 RAID 解决方案(意味着冗余不能防止驱动器故障)都是由于未能测试实际驱动器故障造成的。正常的测试是拔出驱动器,声称驱动器故障已测试完毕,然后继续。
最好的解决方案可能是收集一些边缘驱动器,或修改固件,导致响应不一致。只有存储供应商才有可能拥有这种能力。
我喜欢将钉子穿过正在运行的驱动器的想法,但相邻驱动器上的力量可能会导致不切实际的灾难性故障。或者驱动器的完全故障可能会导致不切实际的彻底故障。
如果我被允许对 RAID 进行合法测试,我会用各种方法破坏一些驱动器。将电线连接到驱动器板上的随机组件,然后将其烧毁或短路。如果外壳的几何形状使得这不太可能破坏相邻的驱动器,则确实将钉子穿过驱动器。(我认为阵列其余部分的碰撞是合理的测试)。拦截驱动器的数据路径并返回所有可能的错误、无意义的结果或延迟随机时间的正确结果。
预计驱动器有时会返回错误的块。预计驱动器会在连接上引起任何可以想象的电气问题。
我的经验是,没有人愿意在考虑购买存储时进行真正的测试。这可能会暴露真正的问题。我很想知道是否有人真正测试过存储可靠性 - 当然他们不会公布他们的结果。