如何识别从阵列中自动“删除”的 MDADM RAID 磁盘?

如何识别从阵列中自动“删除”的 MDADM RAID 磁盘?

我们在 RAID1 md 阵列中有 2 个磁盘。 MDADM 检测到磁盘故障并在 中使磁盘“出现故障” mdadm,但随后服务器意外重新启动。当我检查/proc/mdstat或 时 mdadm --detail /dev/md0,它显示“已删除”。

通常当磁盘被标记为“失败”时,它会在mdadm中显示磁盘名称,或者在 中显示它。这样可以轻松识别故障磁盘并从服务器中删除正确的磁盘进行更换。/proc/mdstat(F)mdadm --detail /dev/md0

但是重新启动后,当mdadm从 mdadm 阵列中自动“删除”驱动器时,故障磁盘无论如何都不会显示在这些命令中。我知道您可能会循环遍历mdadm --examine /dev/dm-*每个驱动器并找到带有数组 UUID 的 mdadm 标头,但我可以看到在某些情况下,它显示mdadm: No md superblock detected on xxx,即使在正确的驱动器上(在另一个测试服务器上,我确切地知道该驱动器是什么)磁盘名称是)

所以我的问题是,当 m 自动删除它时,如何一致地识别失败的磁盘名称mdad(只注意到当mdadm它“失败”时会发生这种情况,然后服务器以某种方式(或故意)重新启动)。

答案1

磁盘可能的故障模式之一是它完全停止响应,这使得它在后续重新引导中无法检测到:就内核而言,磁盘看起来就像已经被拔掉了。

因此,在这种情况下识别故障磁盘的唯一完全通用且可靠的方法是排除:列出所有发生故障的磁盘。工作(例如,lsblk -o +SERIAL,MODEL将磁盘序列号和型号名称包含到列表中),然后查找物理磁盘不是在名单上。

如果系统仍然可以检测到发生故障的磁盘,那么它在输出中也应该相当明显lsblk,因为设备可能有也可能没有分区,但没有与其关联的安装点,并且与 RAID 集没有关联(不再) 。

如果某些磁盘的内部自检失败,甚至会开始将其大小报告为 0,因此SIZE输出列lsblk在这里也很有用。

相关内容