更换 RAID 阵列中出现故障的硬盘的程序是什么?

sla*_*ton 4 linux raid ubuntu

3 年前,一位同事在 Ubuntu 9.04 上设置了软件 RAID-6 阵列,我收到来自操作系统的消息,指出该驱动器有坏扇区,应该更换。我想移除这个驱动器并用一个新驱动器替换它,但是,我以前从未这样做过,我很害怕在修复阵列的过程中我最终会毁了它。

我知道阵列的设备 ID,也知道阵列中各个驱动器的设备 ID。此外,我的身体有坏的驱动器。

用新驱动器更换坏驱动器并使阵列重新运行的步骤是什么?

h0t*_*1r3 5

我强烈建议您在继续之前熟悉每个步骤的工具和含义。 最后一步最有可能出错,并假设您的引导设备是 hd0。 了解你的引导程序!

在此示例中,sdc是故障设备 raid 成员,sdb是已知良好的设备 raid 成员,md0 是 raid 设备。

  1. 创建当前(故障)驱动器的分区表结构备份:

    # sfdisk -d /dev/sdc > ~/raid.ptbackup
    
    Run Code Online (Sandbox Code Playgroud)

    如果这不起作用,或者表不可恢复/可疑,请从raid 集中的另一个驱动器复制结构。

    # sfdisk -d /dev/sdb > ~/raid.ptbackup
    
    Run Code Online (Sandbox Code Playgroud)
  2. 所有失败的驱动器分区标记为失败删除. cat /proc/mdstat 获取raid 集分区列表并为每个分区重复命令。(sdc1、sdc2、sdc3 等)

    # mdadm --manage /dev/md0 --fail /dev/sdc1
    # mdadm --manage /dev/md0 --remove /dev/sdc1
    
    Run Code Online (Sandbox Code Playgroud)
  3. 用新驱动器物理更换故障驱动器。

  4. 使用所需的分区表结构对新驱动器进行分区。 确认设备名称sdc,更换驱动器时可能已更改

    # sfdisk /dev/sdc < ~/raid.ptbackup
    
    Run Code Online (Sandbox Code Playgroud)
  5. 将驱动器分区添加到raid 集中。 对所有分区重复步骤 2 中的操作。

    # mdadm --manage /dev/md0 --add /dev/sdc1
    
    Run Code Online (Sandbox Code Playgroud)
  6. 在新驱动器上安装 grub。

    grub
    grub> device (hd0) /dev/sdc
    grub> root (hd0,0)
    grub> setup (hd0)
    grub> quit
    
    Run Code Online (Sandbox Code Playgroud)