mdadm mdadm: 无法打开 /dev/sda1: 设备或资源繁忙

Bac*_*eek 9 linux centos mdadm

我在从单个磁盘转到 raid 10 时遇到问题

发出的命令是:

mdadm --create /dev/md0 --level=10 --raid-devices=8 /dev/sd[abcdefgh]1
Run Code Online (Sandbox Code Playgroud)

输出是:

mdadm mdadm: cannot open /dev/sda1: Device or resource busy
Run Code Online (Sandbox Code Playgroud)

我已经证实这与 DM 无关:

]# dmsetup status

No devices found
Run Code Online (Sandbox Code Playgroud)

文件系统是 GPT,我使用 sgdisk --backup=table /dev/sda 之后通过 sgdisk --load-backup=table /dev/sdb 到 sdh 复制分区表

该表看起来像:

Number  Start   End     Size    File system     Name  Flags
 1      1049kB  525MB   524MB   ext3                  boot
 2      525MB   86.4GB  85.9GB  ext4
 3      86.4GB  90.7GB  4295MB  linux-swap(v1)
 4      90.7GB  1000GB  909GB
Run Code Online (Sandbox Code Playgroud)

我已经很好地创建了其他阵列,但是我无法为第一个和第二个分区创建突袭。

当前状态:

]# cat /proc/mdstat
Personalities : [raid10]
md3 : active raid10 sdh3[7] sdg3[6] sdf3[5] sde3[4] sdd3[3] sdc3[2] sdb3[1] sda3[0]
      16766976 blocks super 1.2 512K chunks 2 near-copies [8/8] [UUUUUUUU]
        resync=DELAYED

md4 : active raid10 sdh4[7] sdg4[6] sdf4[5] sde4[4] sdd4[3] sdc4[2] sdb4[1] sda4[0]
      3552147456 blocks super 1.2 512K chunks 2 near-copies [8/8] [UUUUUUUU]
      [========>............]  resync = 42.5% (1513033344/3552147456) finish=76.2min speed=445722K/sec

unused devices: <none>
Run Code Online (Sandbox Code Playgroud)

任何人都可以提供任何建议,我是否需要启动到救援磁盘并在未安装时为 / 和 /boot 创建阵列?

小智 10

尝试在重新组装数组之前停止:

sudo mdadm -Esv
sudo mdadm  --stop /dev/md*
sudo mdadm --misc --scan --detail /dev/md0
sudo mdadm -v --assemble "$array" "$disk1$part" "$disk2$part"
Run Code Online (Sandbox Code Playgroud)


Hen*_*nes 5

当 / 和 /boot 未安装时,我是否需要...为它们创建数组?

恰恰。

我希望您还意识到旧内容将在此过程中被擦除,因此您可能想要创建一个缺少一个设备的新阵列(使用mdadm --level=10 --raid-devices=8 --missing /dev/sdb1 /dev/sdc1 /dev/sdd1 /dev/sde1 /dev/sdf1 /dev/sdg1 /dev/sdh1)。然后格式化新阵列卷上的文件系统并将所有数据从 /dev/sda1 复制到其中。然后从阵列重新启动(因此不使用 /dev/sda1 根目录)并实际添加 /dev/sda1。

不要忘记相应地调整引导加载程序。