问题:哪些机制(除了 in 中的机制/etc/fstab
)会在启动时自动触发fsck
?
详细信息:我的电脑目前运行 Ubuntu 21.04没有任何问题,它工作正常。在启动时,fsck
会执行磁盘检查,因为我在屏幕上看到以下几行。
Ubuntu: clean, 281400/3276800 files, 3602929/13107177 blocks
我的(根分区)Ubuntu
的标签在哪里。/dev/sda2
但是,如果您检查我的/etc/fstab
文件,最后一列(即 fsck 用于确定 fsck 是否应在挂载之前检查文件系统的列)设置为零,因此我不希望在启动时进行任何检查。
# <file system> <mount point> <type> <options> <dump> <pass>
# /dev/sda1
UUID=DA59-E469 /boot/efi vfat defaults 0 0
# /dev/sda2
UUID=862c6f26-cbe0-4cd5-860d-fdf306f697f9 / ext4 noatime,errors=remount-ro 0 0
# /dev/sda3
UUID=70f175d4-ec37-455c-84c5-b93d1e2e8761 /mnt/Data ext4 noatime,nosuid,nodev,nofail,x-gvfs-show 0 0
# swapfile
/swapfile none swap sw 0 0
我只是想了解检查是如何触发的(和/或我的假设是否有问题)。
一些细节:
- 我
/etc/fstab
在 Ubuntu 20.04 和 Ubuntu 20.10 中使用了相同的方法。更新到 Ubuntu 21.04 后开始出现检查:fsck
20.04 和 20.10 启动时没有检查。 - 的输出
sudo tune2fs -l /dev/sda2 | grep checked
是Last checked: Sun Apr 26 15:00:01 2020
,这可能是我将最后一列设置/etc/fstab
为零的时候。 /forcefsck
我在root上没有任何文件。- 在我
/etc/default/grub
没有fsck.mode=force
设置。
启动时的文件系统检查由 systemd 服务触发。有 ,
systemd-fsck-root.service
和[email protected]
分别用于根文件系统和其他分区。这些服务继续使用传统的 passno,即 中第六个字段上的数字/etc/fstab
,来确定是否应检查已公布的文件系统以及应以何种顺序进行检查。根据
man systemd-fsck
:但是,根似乎受到特殊对待。它在引导过程的早期 initramfs 中进行检查。如文档中所述,
systemd-fsck-root.service
仅当检查未在那里进行时才会启动。否则,其状态将显示为“失败”。因此,
/etc/fstab
如果您为根分区以外的分区更改密码,您可能会看到更改密码的效果。您的输出
tune2fs
表明很久以前进行了检查是因为只注册了彻底的文件系统检查。默认情况下,日志 ext 文件系统的文件系统检查仅限于检查日志报告的内容。在以前的 Ubuntu 版本中,amax-mount-count
设置为 30,表示每 30 次挂载后将强制执行一次完整的文件系统检查。目前,它设置为-1
,因此除非日志报告问题,否则永远不会完全检查文件系统。