虽然 RAID 1 提供了冗余的好处,但我试图了解使用 RAID 是否会在任何情况下导致不一致(I/O 错误,而不是磁盘错误,...)。
为了理解这一点,我阅读了手册页,这给我留下了一些疑问。
更改会并行写入所有设备。
(1) 写入是否仅在所有磁盘写入完成后才确认返回系统(标记为故障的磁盘除外)?
对于 RAID1,[在非正常关闭后使阵列保持一致]涉及将第一个驱动器的内容复制到所有其他驱动器上。
(2) 第一个设备可能包含也可能不包含最近的写入。因此,它可能会覆盖第二个较新磁盘上的数据。只要(1)的答案是肯定的,这应该不是问题,对吧?
如果 md 驱动程序检测到写入错误 [...],它会立即禁用该设备(将其标记为故障)并继续对其余设备进行操作。
(3) 在继续写操作之前,此信息是否会保留(例如重新启动后)?
(4) 写意图日志只是一种优化,还是在某些数据丢失不可避免的情况下有帮助?
请考虑以下情形:
- md0 带有设备 sda 和 sdb 的 RAID 1
abc
写入 md0- sdb 失败并被标记为有故障
xyz
写入 md0(现在实际上是 sda)- 系统重新启动,之后只有 sdb 可用(无论出于何种原因)
- 当我从 md0 读取时会发生什么?我将阅读什么内容?
本质上,我想了解使用 RAID 1(特别是 md)是否会导致已向用户确认的写入丢失(可能未被注意到),而单个磁盘根本无法写入(可用性与一致性)。