每当systemd.fsck
在启动时实际上必须进行修复*时,我的分区的自动挂载都会失败,因为命令mount
不会等到[email protected]
完成。
如何确保mount
等到文件系统检查服务完成而不是因为文件系统检查已启动而立即失败?
相关行fstab
如下所示:
LABEL=cfdata /data ext4 defaults,nofail,x-systemd.device-timeout=60 0 0
(标签cfdata
在上/dev/sda1
)
启动时挂载失败时相关的 systemd 日志如下所示:
Jun 23 06:24:45 dev-machine-1 kernel: sda: sda1
Jun 23 06:24:45 dev-machine-1 kernel: sd 0:0:0:0: [sda] Attached SCSI disk
Jun 23 06:24:47 dev-machine-1 systemd[1]: Starting File System Check on /dev/sda1...
Jun 23 06:24:47 dev-machine-1 mount[5563]: mount: /data: /dev/sda1 already mounted or mount point busy.
Jun 23 06:24:47 dev-machine-1 systemd-fsck[5483]: cfdata: recovering journal
Jun 23 06:24:49 dev-machine-1 systemd-fsck[5483]: cfdata: Clearing orphaned inode 13 (uid=0, gid=0, mode=0100644, size=39685)
Jun 23 06:24:49 dev-machine-1 systemd-fsck[5483]: cfdata: clean, 2767944/29310976 files, 75558004/117212630 blocks
Jun 23 06:24:49 dev-machine-1 systemd[1]: Started File System Check on /dev/sda1.
Jun 23 06:24:49 dev-machine-1 kernel: EXT4-fs (sda1): mounted filesystem with ordered data mode. Opts: (null)
当发生这种情况时,驱动器将被安装到 ,/media/<uuid>
而不是我的安装点fstab
。
注意:当[email protected]
必须进行修复时,日志中的输出将类似于:Clearing orphaned inode 13 (uid=0, gid=0, mode=0100644, size=39685)
。仅当 fsck 实际执行此类操作并阻止设备时,才会发生挂载问题。
答案1
告诉您的系统将其包含在文件系统检查列表中:
第六个字段(fs_passno)。
fsck(8) 使用此字段来确定启动时文件系统检查的顺序。根文件系统应指定为 fs_passno 1。其他文件系统应指定为 fs_passno 2。驱动器内的文件系统将按顺序检查,但不同驱动器上的文件系统将同时检查以利用硬件中可用的并行性。如果不存在,则默认为零(不进行 fsck)。
(从man fstab
)
让行读起来
LABEL=cfdata /data ext4 defaults,nofail,x-systemd.device-timeout=60 0 2
并且它应该被自动处理。