mdadm 重新启动时不会保留 RAID

mdadm 重新启动时不会保留 RAID

我使用以下命令创建了 RAID-0:

mdadm --create --verbose /dev/md0 --level=0 --raid-devices=2 /dev/disk/by-id/ata-Samsung_SSD_750_EVO_500GB_ABC /dev/disk/by-id/ata-Samsung_SSD_750_EVO_500GB_XYZ
mkfs.ext4 -F /dev/md0
mount /dev/md0 /data1

但是我发现每次启动系统时都必须重新运行 mdadm 命令。我已经尝试过 mdadm.conf 但没有帮助:

mdadm --detail --scan >> /etc/mdadm/mdadm.conf

编辑: 回复评论。

#1 我在 /etc/mdadm/mdadm.conf 中没有额外的条目。我在相当默认的设置下运行 Ubuntu 18.04.2,因此启动映像的 FS 是 ext4(如果这就是您的意思)。

#2 dmesg 上只有 RAID 相关条目是“raid6:使用 avx2x2 恢复算法”之类的内容。我不太确定要寻找什么,从输出中找不到“mdadm”。

$ cat /proc/mdstat
Personalities : [linear] [multipath] [raid0] [raid1] [raid6] [raid5] [raid4] [raid10] 
unused devices: <none>

#3 我没有尝试过使用分区,我已经这样做了,因为我打算将整个磁盘用于此目的。最初我用 ZFS 做了同样的事情,但由于某种原因性能非常差,所以我现在使用 mdadm。这应该与主板无关,因为我使用的是软件 RAID?

附带说明一下,幸运的是,当我重新创建 RAID 时,数据得以保留。但自然地它会获得一个新的 UUID,与我之前存储到 mdadm.conf 的 UUID 不同。一种黑客可能是将创建语句添加到 root 的 cron 中,但这似乎是一种危险的黑客。

编辑2: 噢两个教程和 /etc/mdadm/mdadm.conf 提到了 update-initramfs 但不知何故我忽略了这一点。然而,运行它并将其放在 /etc/fstab 后,它仍然没有自动安装:

/dev/md0 /data1 ext4 defaults,nofail,discard 0 2

我还发现/etc/modprobe.d/mdadm.conf,它只有“options md_mod start_ro=1”行。我希望 mdadm 读取这两个文件。 /etc/mdadm/mdadm.conf 中添加的行如下所示:

ARRAY /dev/md0 metadata=1.2 name=myname:0 UUID=3fc...

重新启动后,我没有在 dmesg 上发现任何有趣的东西。在我重新创建数组之前的其他输出:

$ sudo mdadm -Q /dev/disk/by-id/ata-Samsung_SSD_750_EVO_500GB_ABC
/dev/disk/by-id/ata-Samsung_SSD_750_EVO_500GB_ABC: is not an md array

$ sudo mdadm --examine /dev/disk/by-id/ata-Samsung_SSD_750_EVO_500GB_ABC
/dev/disk/by-id/ata-Samsung_SSD_750_EVO_500GB_ABC:
   MBR Magic : aa55
Partition[0] :    976773167 sectors at            1 (type ee)

$ sudo mdadm --assemble --verbose /dev/md0 2>&1 | grep -v /loop
mdadm: looking for devices for /dev/md0
mdadm: No super block found on /dev/sdd3 (Expected magic a92b4efc, got 00000000)
mdadm: no RAID superblock on /dev/sdd3
mdadm: No super block found on /dev/sdd2 (Expected magic a92b4efc, got 00000401)
mdadm: no RAID superblock on /dev/sdd2
mdadm: No super block found on /dev/sdd1 (Expected magic a92b4efc, got 00000000)
mdadm: no RAID superblock on /dev/sdd1
mdadm: No super block found on /dev/sdd (Expected magic a92b4efc, got 00000000)
mdadm: no RAID superblock on /dev/sdd
mdadm: No super block found on /dev/sdc9 (Expected magic a92b4efc, got 00000000)
mdadm: no RAID superblock on /dev/sdc9
mdadm: No super block found on /dev/sdc1 (Expected magic a92b4efc, got 00008101)
mdadm: no RAID superblock on /dev/sdc1
mdadm: No super block found on /dev/sdc (Expected magic a92b4efc, got 00000000)
mdadm: no RAID superblock on /dev/sdc
mdadm: No super block found on /dev/sdb (Expected magic a92b4efc, got 000004ea)
mdadm: no RAID superblock on /dev/sdb
mdadm: No super block found on /dev/sda9 (Expected magic a92b4efc, got 00000000)
mdadm: no RAID superblock on /dev/sda9
mdadm: No super block found on /dev/sda1 (Expected magic a92b4efc, got 00008101)
mdadm: no RAID superblock on /dev/sda1
mdadm: No super block found on /dev/sda (Expected magic a92b4efc, got 00000000)
mdadm: no RAID superblock on /dev/sda

根据 lsblk 的输出,正确的驱动器是 /dev/sda 和 /dev/sdc。奇怪的是,它显示了两个分区,sda9 是 8 MB,sda1 是驱动器的其余部分。对于 /dev/sdc 也是如此。

相关内容