我正在询问有关在 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-import前cryptdisks 甚至 cryptdisks-early。这正是我在实践中得到的行为,但不是 /etc/rcS.d 下的文件名似乎表明的行为。
如果需要,我很乐意提供更多信息;请告诉我什么可能相关。