Механизмы, запускающие `fsck` при загрузке

Вопрос: Какие механизмы (кроме механизма в / 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 is Последняя проверка: вс, 26 апр, 15:00:01 2020 , вероятно, когда я установил последний столбец / etc / fstab равным нулю.
  • У меня нет файлов / forcefsck в корневом каталоге.
  • В моем / etc / default / grub НЕТ параметра fsck.mode = force .
3
задан 21 July 2021 в 22:33

1 ответ

Проверка файловой системы при запуске запускается службами systemd. Существуют , systemd-fsck-root.service и systemd-fsck@....service для корневой файловой системы и других разделов, соответственно. Эти службы продолжают использовать традиционный passno, т.е. номер в шестом поле в /etc/fstab, чтобы определить, следует ли проверять объявленные файловые системы и в каком порядке.

Согласно man systemd-fsck:

These services are started at boot if passno in /etc/fstab for the file
system is set to a value greater than zero. The file system check for
root is performed before the other file systems. Other file systems may
be checked in parallel, except when they are on the same rotating disk.

Однако к root, похоже, применяется особое отношение. Он проверяется раньше в процессе загрузки, в initramfs. Как сказано в документации, systemd-fsck-root.service срабатывает только в том случае, если проверка не прошла. В противном случае его статус будет показан как "failed".

Поэтому, вероятно, вы увидите эффект от изменения passno в /etc/fstab, если измените его для раздела, отличного от корневого.

То, что ваш вывод tune2fs указывает на давнюю проверку, связано с тем, что регистрируются только тщательные проверки файловой системы. По умолчанию проверка файловой системы журналируемых ext файловых систем ограничивается проверкой того, что сообщает журнал. В предыдущих версиях Ubuntu было установлено max-mount-count равное 30, что означало, что полная проверка файловой системы будет принудительно выполняться после каждых 30 монтирований. В настоящее время это значение установлено в -1, поэтому файловая система никогда не проверяется полностью, если журнал не сообщает о проблеме.

6
ответ дан 28 July 2021 в 11:16

Другие вопросы по тегам:

Похожие вопросы: