当一个驱动器丢失时,RAID 1 被检测为 RAID 0

当一个驱动器丢失时,RAID 1 被检测为 RAID 0

这是超级用户论坛上问题的重复:https://superuser.com/questions/1404338/raid-1-badly-detected-as-raid-0-when-one-drive-is-missing

我希望这里的某个人可能知道该怎么做,因为这是一个 Ubuntu 论坛,并且这个问题影响着 ubuntu 的安装。

我在 VirtualBox VM 上安装了 Ubuntu 18.04.2(KVM VM 也存在此问题)。我创建了一个包含两个磁盘的软件 RAID 1。当我移除其中一个磁盘时,系统错误地将 RAID 设置检测为 RAID 0。

ubuntu@ubuntu:~$ sudo mdadm -D /dev/md0
[sudo] password for ubuntu: 
/dev/md0:
           Version : 1.2
        Raid Level : raid0
     Total Devices : 1
       Persistence : Superblock is persistent

             State : inactive
   Working Devices : 1

              Name : ubuntu:0  (local to host ubuntu)
              UUID : 08ad8f87:f1e25c0a:b8058a10:d1886a27
            Events : 72

    Number   Major   Minor   RaidDevice

       -       8       17        -        /dev/sdb1

目前解决这个问题的方法是使用 bash 脚本检测它并运行以下命令:

sudo mdadm --stop /dev/md0
sudo mdadm --assemble --scan

之后,它似乎处于预期状态,即 RAID 1 设置中缺少一个磁盘:

ubuntu@ubuntu:~$ sudo mdadm -D /dev/md0
[sudo] password for ubuntu: 
/dev/md0:
           Version : 1.2
     Creation Time : Tue May  7 11:11:05 2019
        Raid Level : raid1
        Array Size : 10475456 (9.99 GiB 10.73 GB)
     Used Dev Size : 10475456 (9.99 GiB 10.73 GB)
      Raid Devices : 2
     Total Devices : 1
       Persistence : Superblock is persistent

       Update Time : Tue May  7 13:41:08 2019
             State : clean, degraded 
    Active Devices : 1
   Working Devices : 1
    Failed Devices : 0
     Spare Devices : 0

Consistency Policy : resync

              Name : ubuntu:0  (local to host ubuntu)
              UUID : 08ad8f87:f1e25c0a:b8058a10:d1886a27
            Events : 39

    Number   Major   Minor   RaidDevice State
       0       8       17        0      active sync   /dev/sdb1
       -       0        0        1      removed

只要我没有用一个磁盘重新组装 RAID 1,我就可以重新连接丢失的磁盘,一切就可以正常启动。如果我用一个磁盘重新组装了 RAID 1,那么我需要运行:

sudo mdadm --manage /dev/md0 --add /dev/sdc1

然后,新磁盘将与正在工作的 RAID 1 磁盘同步,并且我将再次拥有一个完全组装的 RAID 1 阵列。

那么问题是为什么只有一个磁盘的 RAID 1 会被检测为 RAID 0?我是否缺少配置?

答案1

一位同事提出了一个很好的解决方案。基本上就是创建一个在启动时运行的 systemd 服务,并确保 madadm 启动 RAID 阵列。启动阵列的命令是:

/sbin/mdadm --manage --run /dev/md127

在良好的 RAID 阵列上,此命令不会执行任何操作,因为 RAID 已启动。在不良阵列上,此命令将在 RAID 安装前启动 RAID。

相关内容