电源故障是否可能导致机器的某个部件将一个或多个随机位写入存储设备?
有人提出了如下想法来解决这种风险:在单个磁盘上创建多个分区,共同组成一个 RAID1 阵列;然后将多个这样的阵列组装在一起作为另一个 RAID 设备;用它来存储文件系统。
我猜想这应该可行,因为随机数据无法同时写入每个 RAID 成员。也许驱动器磁头没有足够的剩余电量向前寻道并在每个成员分区中写入相同的随机数据。如果一切按计划进行,内核读取该块后,包含坏数据的 RAID 成员将被踢出 RAID。
这样的设置很可能会因为所有磁盘 IO 期间的过多磁头寻道而导致性能显著下降。
断电期间写入随机数据的威胁是真实存在的吗?还有其他解决方案吗?
编辑:我应该说得更清楚一些。我认为将 RAID1 放在单个磁盘上的想法非常糟糕。我之所以问这个问题,是因为我听说有人认为这是一个好主意,并且已经实施了多个这样的系统。我希望一劳永逸地打消这个想法。
我试图弄清楚他们这样设计的原因,但后来我被告知,这很可能是在非常忙碌的时期对计划外增长的天真反应。
我尝试考虑这种做法可能有用的情况,例如 Linux 文件系统修改的有效载荷被破坏,而发送数据的命令保持完好无损。我认识到这种情况不太可能发生,所以看来这个问题终于可以解决了。谢谢@gene!:)
答案1
断电期间写入随机数据的威胁是真实存在的吗?
对于断电:随机?不太可能。损坏(数据只写了一半等)?肯定是。
对于电涌:我猜想可能会写入随机数据,但是如果电涌已经深入系统以至于影响内存,那么您更可能担心的是扑灭电气火灾和完全数据丢失,而不是几位随机数据。
我的猜测是...随机数据不能同时写入每个 RAID 成员
RAID1 将尝试同时写入数据,但鉴于您的场景中卷位于单个主轴上,因此可能会发生这种情况。如果发生这种情况,我怀疑是否有人尝试过。而且您面临的可能性是损坏的数据将被写入卷的一侧,而没有(或少量损坏的数据)写入另一侧。
还有其他解决方案吗?
在 RAID 卷中使用多个物理驱动器。:)
重新镀银/清理 RAID 卷通常会发现错误并尝试修复、丢弃或隔离它们。
日志文件系统也会有所帮助。
正如@womble 在评论中提到的,具有内置校验和支持的文件系统也有助于识别损坏的数据。
您还可以采取一些措施,例如提供足够的电涌保护、为服务器提供不间断电源以及使用带有内置电池和缓存的硬件 RAID 控制器(这将允许控制器在存储再次可用时完成写出缓存数据)。