RAID1:如何使标记为“已删除”的驱动器“失败”?

Nic*_*ick 6 raid ubuntu ubuntu-9.04 raid1

我有(有)一个 RAID 1 阵列(2 个磁盘镜像),其中一个磁盘 sda 出现故障。所以我用一个新磁盘替换了坏磁盘,但似乎被困在如何让第二个驱动器备份并作为阵列的一部分运行。

系统运行的是Ubuntu Server 9.04,配置如下:

MD0 => sda1,sdb1

MD1 => sda3,sdb3

MD2 => sda2,sdb2

 mdadm --detail /dev/md0
Run Code Online (Sandbox Code Playgroud)

显示两个驱动器:

0 /dev/sdb1 "Active Sync"

1 [nothing] "Removed"
Run Code Online (Sandbox Code Playgroud)

MD1 和 MD2 看起来一样。

我发现的教程说使用以下命令将每个分区标记为失败:

mdadm --manage /dev/md0 --fail /dev/sda1
Run Code Online (Sandbox Code Playgroud)

但是,由于驱动器不在那里,我得到:

mdadm: cannot find /dev/sda1: No such file or directory
Run Code Online (Sandbox Code Playgroud)

我可以跳过失败的步骤吗?或者是否有其他方法可以使不再存在的分区失败?或者,如果我将分区表从旧驱动器复制到新驱动器,它会自动选择它是替代品吗?

我是新手,不想搞砸。:)

Dan*_*ley 6

你不应该让他们失败。因为当您第一次注意到问题时它们应该已经失败了,现在删除了 RAID 成员。只需几个步骤即可使其恢复运行。

  1. 在替换磁盘上设置分区。这些分区的大小应与故障磁盘和当前活动磁盘的大小相同,并应标记为分区类型“Linux RAID Autodetect”(0xFD)。您可以通过复制分区表来简化此操作sfdisk

    sfdisk -d /dev/sdb | sfdisk /dev/sda
    
    Run Code Online (Sandbox Code Playgroud)
  2. 如果该磁盘之前已被使用过,您可能需要确保在再次开始之前删除任何现有的 softRAID 信息。

    mdadm --zero-superblock /dev/sda
    
    Run Code Online (Sandbox Code Playgroud)
  3. 将 MBR 安装到新磁盘上,使其可启动。从grub外壳执行此操作。假设这/dev/sda是第一个磁盘。

    root (hd0,0)
    setup (hd0)
    quit
    
    Run Code Online (Sandbox Code Playgroud)
  4. 将新分区添加回阵列。

    mdadm --add /dev/md0 /dev/sda1
    mdadm --add /dev/md1 /dev/sda3
    mdadm --add /dev/md2 /dev/sda2
    
    Run Code Online (Sandbox Code Playgroud)
  5. 通过查看监控他们的重建状态/proc/mdstat。您可以自动执行此操作。

    watch -n10 cat /proc/mdstat
    
    Run Code Online (Sandbox Code Playgroud)