问题

问题

问题

我有mdadm手册页所说的“遗留阵列”,即没有超级块的 raid 阵列。我最终设法让 systemd 在启动时挂载我的数据分区,但 systemd 在此过程中抛出了一些有关依赖顺序的错误。我想解决这些问题,以便 systemd 按照 中指定的方式挂载我的文件系统/etc/fstab,而不会遇到问题。


(不,我不认为抑制 systemd 的输出是有效的解决方案。)

细节

它是一个遗留阵列,这意味着“正常”启动程序(在本例中为 Debian Linux)无法在启动时自动组装它,这意味着在此阵列上安装分区必须失败。解决方案是在启动过程中注入一个组装阵列的命令。

为了成功组装和使用我的阵列,我必须(名称已编辑)

mdadm --build /dev/md0 --raid-devices=2 --level=0 /dev/sdh /dev/sdi

在这个阵列上,我必须在启动时安装我想要安装的分区并使用mount -a.为此,我在/etc/fstab(名称已编辑)中创建了以下条目

UUID="abcdefgh" /mnt/a ntfs-3g defaults,auto 0 0
UUID="12345678" /mnt/b ntfs-3g defaults,auto 0 0

通过这些条目并运行命令后mdadm,当我输入 时,我会得到所需的结果mount -a

我通过创建(结束启用)systemd 服务单元来注入 raid assemble 命令:

[Unit]
Before=mnt-a.mount mnt-b.mount

[Service]
TYPE=oneshot
ExecStart=mdadm --build /dev/md0 --raid-devices=2 --level=0 /dev/sdh /dev/sdi

[Install]
WantedBy=local-fs-pre.target

虽然这确实有效,但它似乎也在 systemd 中创建了一个依赖循环,从而创建了错误消息:

sysinit.target: Job apparmor.service/start deleted to break ordering cycle starting with sysinit.target/start
sysinit.target: Job local-fs.target/start deleted to break ordering cycle starting with sysinit.target/start

显然 systemd 从中恢复了,我最终安装了我的卷和一个工作操作系统。我的猜测是,通过使用,ntfs-3gapparmor在启动过程中隐式地使用了比可用的更早的时间。我该如何解决这个问题?

相关内容