3 年前,一位同事在 Ubuntu 9.04 上设置了软件 RAID-6 阵列,我收到来自操作系统的消息,指出该驱动器有坏扇区,应该更换。我想移除这个驱动器并用一个新驱动器替换它,但是,我以前从未这样做过,我很害怕在修复阵列的过程中我最终会毁了它。
我知道阵列的设备 ID,也知道阵列中各个驱动器的设备 ID。此外,我的身体有坏的驱动器。
用新驱动器更换坏驱动器并使阵列重新运行的步骤是什么?
我强烈建议您在继续之前熟悉每个步骤的工具和含义。 最后一步最有可能出错,并假设您的引导设备是 hd0。 了解你的引导程序!
在此示例中,sdc是故障设备 raid 成员,sdb是已知良好的设备 raid 成员,md0 是 raid 设备。
创建当前(故障)驱动器的分区表结构备份:
# 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)将所有失败的驱动器分区标记为失败并删除. 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)用新驱动器物理更换故障驱动器。
使用所需的分区表结构对新驱动器进行分区。 确认设备名称sdc,更换驱动器时可能已更改
# sfdisk /dev/sdc < ~/raid.ptbackup
Run Code Online (Sandbox Code Playgroud)将驱动器分区添加到raid 集中。 对所有分区重复步骤 2 中的操作。
# mdadm --manage /dev/md0 --add /dev/sdc1
Run Code Online (Sandbox Code Playgroud)在新驱动器上安装 grub。
grub
grub> device (hd0) /dev/sdc
grub> root (hd0,0)
grub> setup (hd0)
grub> quit
Run Code Online (Sandbox Code Playgroud)