问题
我有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-3g
我apparmor
在启动过程中隐式地使用了比可用的更早的时间。我该如何解决这个问题?