我每 30 分钟收到一次智能消息/var/log/messages
:
smartd[3588]: 设备:/dev/sdc,176 个当前无法读取(待处理)的扇区
此驱动器 (sdc) 是使用 mdadm 配置的 RAID 5 的一部分。Mdadm 监视器显示 RAID 正常,但我想知道是否需要更换驱动器。此外,是否有必要将此扇区标记为坏扇区或操作系统已经这样做了。
如果我需要更换驱动器,我该如何选择替换的驱动器?我在硬盘规格中找不到块数,所以如果我选择一个块数比原始块数少的驱动器,我就会遇到麻烦。
答案1
是的,更换驱动器。
不可读(待处理)扇区是无法读取其内容的扇区。在正常的非 RAID 情况下,这会导致读取错误或长时间延迟,驱动器会反复尝试读取该扇区,直到成功(或最终放弃)。
使用 RAID 时会发生两件事:
- 您的磁盘可能配置了较短的 TLER 值。因此它将在合理的时间内放弃读取该扇区的尝试。(从而防止长时间挂起)。
- 您的 RAID 阵列会注意到故障并从另一个磁盘读取数据。这就是 RAID 5 的优势;您有一个备用副本。
您想要做的是:
- 检查你的备份。你不需要它们如果一切顺利。
- 获取大小相等或更大的替换磁盘。您可以使用 检查大小
smartctl -a /dev/sdc
。不要假设所有大小为 X 的驱动器都具有相同的容量。制造商喜欢整数;一个 500GB 驱动器可能比另一个 500GB 驱动器小。 - 将有问题的磁盘脱机。(
mdadm --manage --remove /dev/mdX /dev/sdc
) - 用新硬件替换磁盘并让阵列自行重建。(
mdadm --add /dev/mdX /dev/sdc
)
如果您使用大磁盘,那么这将花费大量时间。有时,从头开始重建 RAID 阵列并从备份中恢复会更快。(首先测试这些备份!)
RAID 重建时,您没有冗余。因此,如果另一个磁盘发生故障(例如由于重建的压力),那么您就会遇到问题。这种情况有时会发生在大型磁盘(重建时间较长)和来自同一日期的批量驱动器上。
答案2
接受的答案通常都很好,但从 mdadm 3.3 开始,您可以更换阵列中的驱动器,而无需先移除故障驱动器。如果故障驱动器大部分可读,这可以保护您免受大多数双重故障的影响。
假设 sdd 是一个新的驱动器,而不是第 3 点和第 4 点,执行以下操作:
- 将新驱动器添加到阵列并将故障驱动器替换为新驱动器:mdadm /dev/mdX -add /dev/sdd --replace /dev/sdc --with /dev/sdd
它将使用所有可能的数据触发重建,并在准备就绪时删除有故障/旧的驱动器。
另外要注意的是,创建新阵列时,最好在每个物理设备上创建 1 个大分区,并在分区上而不是在原始设备上创建 raid 阵列。