如何在不使用 /etc/mdadm.conf 的情况下组装特定的 RAID 阵列

max*_*xim 10 raid mdadm initramfs

是否可以使用mdadm及其扫描功能组装特定的 RAID 阵列,但不需要配置文件?

背景:
我使用定制的 initramfs 来设置我的系统(dm-crypt 和其他东西)。一切都在 init 脚本中完成和配置,这就是我想要保留它的方式,即没有任何额外的配置文件。

我的目标:
在 init 脚本中,我想仅使用命令行来组装一个特定的 RAID 阵列。该阵列通过其 UUID 进行标识,给出了 md 设备名称,并应扫描阵列成员(因为例如连接的 USB 记忆棒或故障设备会弄乱 /dev/sdX 名称)。所有其他设备和潜在的 RAID 阵列都将被忽略,因为在引导期间只有一个阵列是感兴趣的(携带根文件系统)。


彻底阅读 mdadm 的手册页并执行了几个测试,我想出了这个:

mdadm --assemble --uuid <uuid> /dev/md0
Run Code Online (Sandbox Code Playgroud)


这似乎有效,但这是正确的方法吗?


来自手册页:
如果只列出了一个设备,但没有给出 --scan,那么 mdadm 就像提供了 --scan 一样,并从配置文件中提取了身份信息。

Mar*_*ark 16

如果您知道数组 UUID,那么mdadm --assemble /dev/md0 --uuid <uuid>(注意参数顺序的细微差别)将执行您想要的操作:扫描所有未使用的卷,以md查找具有给定 UUID 元数据的卷。其他选项:

  • mdadm --assemble /dev/md0 --name <name>(与 做相同的事情--uuid,但使用数组名称而不是 UUID。)
  • mdadm --assemble /dev/md0 --super-minor <minor id #>(与 做同样的事情--uuid,但在元数据中有次要设备号。仅推荐用于 0.90 版元数据。)
  • mdadm --assemble /dev/md0 /dev/disk/by-id/<disk>...(如果udev设置了/dev/disk/by-id别名,在硬件更改时应该是静态的。)
  • mdadm --assemble --scan配置文件中没有列出阵列(扫描所有未使用的卷以获取md元数据,并根据找到的内容组装 RAID 阵列。请注意,如果您有多个阵列并且只想设置其中一个,或者如果您的阵列已获得分裂,这不会做你想要的。)