本文译者是一位开源理念的坚定支持者,所以本文虽然不是软件,但是遵照开源的精神发布。
本文译者十分愿意与他人分享劳动成果,如果你对我的其他翻译作品或者技术文章有兴趣,可以在如下位置查看现有的作品集:
由于译者水平有限,因此不能保证译文内容准确无误。如果你发现了译文中的错误(哪怕是错别字也好),请来信指出,任何提高译文质量的建议我都将虚心接纳。
systemd-fsck@.service, systemd-fsck-root.service, systemd-fsck — 文件系统检查逻辑
systemd-fsck@.service
systemd-fsck-root.service
/usr/lib/systemd/systemd-fsck
systemd-fsck@.service
与
systemd-fsck-root.service
服务
用于文件系统检查。每个需要检查的设备
都会从模版派生出一个服务实例来执行实际的检查工作。
systemd-fsck-root.service
负责
检查根文件系统,但仅在根文件系统
并未在 initramfs 中检查过的情况下才会执行。
systemd-fsck@.service
负责检查所有其他非根文件系统,
以及在 initramfs 环境中检查根文件系统。
只要 /etc/fstab
文件中某个文件系统的
passno
字段(也就是最后一个字段)值大于零,
上述服务就会在系统启动时启动。
根文件系统总是最先检查,只有在根文件系统检查完成之后,
才会以并行的方式检查其他文件系统,但是对于同一个机械硬盘上的多个文件系统来说,
仍然会以串行的方式依次检查。
systemd-fsck
并不知道有关文件系统的任何细节,
只是根据文件系统类型,
执行对应的检查程序(/sbin/fsck.*
)。
最终由这些检查程序根据上次检查时间、挂载次数、上次是否卸载等因素,
决定是否真正执行检查操作。
如果一个不带 nofail
标记的文件系统检查失败,
那么将进入紧急维修模式,
也就是启动到 emergency.target
目标。
systemd-fsck
能够识别
下列内核引导选项:
fsck.mode=
¶检查模式。可设为 "auto
",
"force
", "skip
" 之一。
默认值 "auto
" 表示
仅在文件系统检查工具认为确有必要的情况下,
才会实际执行真正的检查动作。"force
"
表示无条件的执行检查动作。
"skip
" 表示
无条件的跳过检查动作。
fsck.repair=
¶修复模式。可设为 "preen
",
"yes
", "no
" 之一。
默认值 "preen
" 表示
自动修复文件系统检查过程中发现的可以安全修复的文件系统错误。
"yes
" 表示对 fsck 询问的所有问题,一律回答"yes"。
"no
" 表示对 fsck 询问的所有问题,
一律回答"no"。