未启动到单用户模式时服务启动顺序错误

未启动到单用户模式时服务启动顺序错误

我正在询问有关在 Linux 上运行 sysvinit 和 ZFS 的 Debian Wheezy 系统的信息。虽然我的问题是通过 ZFS 表现出来的,但我强烈怀疑根本问题不是 ZFS 特有的。

由于某种原因,如果我正常启动系统,zfs-import则会运行 cryptdisks-early在系统启动过程中。这是一个问题,因为我在 LUKS 设备上有 ZFS 池,然后无法导入,因为 LUKS 设备尚未解密,因此许多其他事情都会失败,因为他们希望文件系统中的内容可用,这不是。

single但是,如果我启动到单用户模式(通过附加到内核命令行),似乎会按照我想要的方式cryptdisks-early运行。zfs-import

我不记得最近什么时候发生过上述情况不是确实如此,但我不能保证正常启动时服务不会按正确的顺序自动启动。我相信这一切都是从对我来说相当大的 ZoL 升级开始的,基本上是全新的初始化脚本,与之前的配置相比,它提示了一些调整,例如在 /etc/insserv.conf.d 中,但我也怀疑初始化脚本它们本身都很好,只是启动顺序的某些事情不知何故搞砸了。

浏览 /etc/rc?.d,我在 /etc/rcS.d 中发现了许多其他内容:

  • S10cryptdisks-early
  • S11zfs-import
  • S12cryptdisks

天真地,似乎一切都应该以正确的顺序开始,但显然,这并不总是发生。

/etc/insserv.conf.d/zfs-mount包含$local_fs +zfs,这是预期的(安装 ZFS 文件系统是提供的一部分local_fs)。请注意,在 ZFS 中,导入和挂载是两个不同的操作,其中导入发生在挂载之前。 (可以在不挂载任何文件系统的情况下导入 ZFS 池,但在未导入存储文件系统的池的情况下不能挂载任何 ZFS 文件系统。通常,在我的系统上,ZFS 文件系统会自动挂载当池被导入时。)

作为确保系统真正干净启动的解决方法,我进行了编辑/etc/init.d/zfs-import,使其cryptdisks-early在继续执行 do_start 之前手动启动。然而,我更愿意通过修复一些配置设置来实现相同的目标(我怀疑这是可能的)。

我似乎找不到任何关于zfs-import和 的相对顺序的具体信息,cryptdisks-early但我可能会忽略那里明显的东西。

我想确保系统始终如一地启动(并等待它启动;可能需要一段时间)cryptdisks-early 试图开始zfs-import。我需要对系统配置文件进行哪些更改?

/etc/init.d/.depend.start没有列出任何相关内容,但/etc/init.d/.depend.boot确实提到了 ZFS 和 cryptdisks,如摘录中所示:

cryptdisks: checkroot.sh cryptdisks-early udev mdadm-raid
cryptdisks-early: checkroot.sh udev mdadm-raid
zfs-mount: mountall.sh mountall-bootclean.sh cryptdisks cryptdisks-early zfs-import
zfs-import: mtab.sh

因此,如果我没看错的话,zfs-mount 依赖于 zfs-import 和 cryptdisks,但 zfs-import 本身并不依赖于 cryptdisks,因此 init 可以自由启动 zfs-importcryptdisks 甚至 cryptdisks-early。这正是我在实践中得到的行为,但不是 /etc/rcS.d 下的文件名似乎表明的行为。

如果需要,我很乐意提供更多信息;请告诉我什么可能相关。

相关内容