删除 RAID 1 中的“故障状态”

删除 RAID 1 中的“故障状态”

我想知道,如果(例如)有人损坏了错误的硬盘,是否有可能消除 RAID 1 中的“故障”状态。

我已经用 Google 搜索了答案,并找到了几个关于重新创建阵列并添加“assume-clean”的教程,但我无法在正在运行的系统上执行此操作。那么,在硬盘从 raid 中移除之前,是否可以“恢复”硬盘?

答案1

mdadm 中没有这样的命令。如果你已将分区设置为故障状态,则使其重新联机的唯一方法是将其移除并重新添加,例如

mdadm --remove /dev/md0 /dev/sdb1
mdadm --add /dev/md0 /dev/sdb1

答案2

故障状态会与有关 RAID 的其他元数据一起写入磁盘/分区开头的超级块中。这些块需要有足够的信息才能在出现问题时重建 RAID。

mdadm有命令将磁盘设置为故障,但没有人将其设置为健康,因为一旦磁盘出错,您可能会丢失数据。但有些情况是您想要的。例如,在有 2 个托架的家用 NAS 中,您可以决定只使用一个磁盘(开始)。通常,在这种情况下,这些 NAS OS 会在不告知的情况下仅使用一个磁盘创建 RAID 1。如果稍后出于某种原因,该磁盘被标记为降级,您将陷入困境。即使您的磁盘是健康的。注意:操作系统可能会将太慢的 I/O 响应视为磁盘性能下降。

在这种情况下(您的 SMART 数据是干净的),唯一的解决方案是删除故障状态标志。但这真的很危险。您必须先停止 RAID。所有磁盘都将被分离,但超级块和数据将保留在磁盘上。要删除超级块,您必须使用此磁盘/分区和选项创建一个新的 RAID --assume-clean。这将在旧超级块上方写入一个新的超级块,但保留数据。请小心,如果没有此选项,您可能会丢失所有数据,并且即使有此选项也始终存在风险。

因此在这个特定的例子中,类似于:

# Stop the RAID1
mdadm -S /dev/mdX
# Recreate a RAID1 with just one disk keeping the data as is
mdadm --create --assume-clean --level=1 --force --raid-devices=1 /dev/mdX /dev/sdXY

可能会删除错误的标志。

顺便说一句,如果您想知道为什么不放第二块磁盘并使其同步。答案是:不可能与标记为有故障的磁盘同步任何内容mdadm

相关内容