在RAID1arrays中引导具有故障设备的系统

我有一个配有3个软件RAID1设备的Linux系统,每个设备在两个相同的磁盘上包含两个相同的分区。 最近,一个磁盘上的一个非根分区开始出现DMA错误; 因此,我将其标记为失败。 当我重新启动机器时,它成功启动了内核,但几乎立即开始打印DMA错误(可能与失败的分区相关)。 不应将有问题的分区标记为失败,允许机器无误启动? 如果没有,我怎样才能让系统启动? 我尝试修改机器引导映像中的mdadm.conf文件,以便不在包含它的RAID设备的设备列表中列出有问题的分区,但似乎没有任何影响。 我还应该注意,如果从应急CD启动,并从剩余的良好分区中手动组装设备,则可以访问降级的RAID设备。

听起来你正在使用Linux软件RAID ,并且你已经使用分区而不是整个磁盘来设置RAID设备。

在这种情况下,只是失败的分区不会帮助你:失败的驱动器 (硬件组件)是什么扔错误。 任何时候操作系统尝试访问硬件组件都会遇到问题,而且由于驱动器通常不会在一个地方出现问题,所以这些问题将遍布所有分区,直到驱动器最终放弃并终止。


我的build议是现在备份您的数据,使用救援光盘(这显然适用于您的问题),然后更换失败的硬件组件,根据需要重build您的RAIDarrays。

长期来说,您需要按照与硬件RAID相同的方式(使用整个驱动器, 而不是分区)来构build软件RAID。 – 如有必要,在您拥有的物理驱动器之间创buildRAID,然后对虚拟(RAID)设备进行分区。 这样可以使一个垂死的驱动器 (硬件组件)失效,或者在必要的情况下将其删除,并允许系统在没有已知和明确定义的副作用的情况下启动,而不会因为驱动器不断升级失败会导致越来越多的分区-RAID走向不归路

如果您在生产中信任软件RAID,则还应该从smartmontools套件中运行smartd ,并将其configuration为在硬盘看起来片状时提醒您。