Как принудительно проверить файловую систему при перезагрузке Linux

tune2fs fsck forcefsck blkid

tune2fs - утилита управления файловой системой. С ее помощью мы можем получить некоторую важную информацию, связанную с проверкой работоспособности файловой системы. Следующая команда покажет, когда в последний раз /dev/sdX проверялась файловая система:

tune2fs -l /dev/sdbX | grep Last c
Last checked: Sun Dec 11 09:14:22 2019

Anther useful information which can be retrieved by tune2fs command relates to how many times our /dev/sdX filesystem was mounted: Еще одна полезная информация, которую можно получить с помощью tune2fs, касается того, сколько раз была смонтирована наша файловая система:

tune2fs -l /dev/sdbX | grep Mount
Mount count: 157

И, наконец, сколько монтирований разрешено до принудительной проверки файловой системы:

tune2fs -l /dev/sdbX | grep Max
Maximum mount count: -1

Из приведенных выше выводов следует следующее:

  • последний /dev/sdbXраз файловая система проверялась 11 декабря 09:14:22 2019
  • c момента последней проверки эта файловая система была смонтирована 157 раз
  • максимальное количество раз до следующей проверки файловой системы fsck: в нашем примере значение -1означает, что fsck отключен.

Теперь рассмотрим параметры конфигурации системы PASS, который находится в файле /etc/fstab, содержащем все разделы, монтируемые при загрузке, и соответствующие параметры монтирования.

# blkid | grep sdb1
/dev/sdb1: UUID="c6e22f63-e63c-40ed-bf9b-bb4a10f2db66" TYPE="ext2"
# grep c6e22f63-e63c-40ed-bf9b-bb4a10f2db66 /etc/fstab
UUID=c6e22f63-e63c-40ed-bf9b-bb4a10f2db66 /mnt ext2 errors=remount-ro 0 0
Используем команду blkid для получения UUID нужного раздела /dev/sdb1.
Последний столбец #6, он же столбец fsck PASS, используется, чтобы определить, должна ли fsck проверять файловую систему перед ее монтированием, и в каком порядке /etc/fstab должны проверяться заданные разделы. Возможные записи для столбца PASS fstab: 0,1 и 2.

  • 0 - отключено, т.е. не проверять файловую систему
  • 1 - раздел с этим значением PASS имеет более высокий приоритет и проверяется первым. Это значение обычно устанавливается для корневого /раздела.
  • 2 - разделы с этим значением PASS будут проверены последними

Связь между значением PASS fstab, последним проверенным значением и значением количества подключений выглядит следующим образом:
Во время загрузки системы первым проверяется значение fstab PASS. Если это значение равно 0, другие значения не проверяются. Это значит, что fsck НЕ будет выполняться. Если найденное значение PASS /etc/fstab отличается от 0, то проверяются значения максимального и общего количества подключений.
Если значение максимального количества монтирований больше или равно общему количеству монтирований, то будет выполнена проверка файловой системы fsck.

Несколько примеров:

FSCK DISABLED
fstab PASS: 1
Maximum mount count: -1
Mount count: 157
----

FSCK DISABLED
fstab PASS: 0
Maximum mount count: -1
Mount count: 157
----

FSCK ON NEXT REBOOT
fstab PASS: 1 or 2
Maximum mount count: 1
Mount count: 157
----

FSCK DISABLED
fstab PASS: 0
Maximum mount count: 1
Mount count: 1
----

FSCK ON NEXT REBOOT
fstab PASS: 1 or 2
Maximum mount count: 1
Mount count: 1
----

NO FSCK ON NEXT REBOOT
fstab PASS: 1 or 2
Maximum mount count: 200
Mount count: 157

Принудительная проверка fsck для корневого раздела

Самый простой способ принудительно проверить файловую систему fsck на корневом разделе, заключается в создании пустого файла с именем forcefsck в корневом каталоге раздела.

touch /forcefsck
Этот пустой файл временно переопределит любые другие настройки и заставит fsck проверить файловую систему при следующей перезагрузке системы.
После проверки файловой системы forcefsck файл будет удален, поэтому при следующей перезагрузке ваша файловая система НЕ будет проверяться снова.
Чтобы включить постоянное решение и принудительно проверять файловую систему при каждой перезагрузке, нужно настроить параметр файловой системы «Максимальное количество монтирований».
Следующая команда гарантирует, что файловая система /dev/sdb1 будет проверяться каждый раз при перезагрузке вашей системы Linux.
Обратите внимание, что для этого значение PASS в fsck /etc/fstab должно быть установлено на положительное целое число, как обсуждалось выше.

tune2fs -c 1 /dev/sdb1

Принудительная проверка fsck для некорневых разделов

В отличие от корневого раздела, создание пустого forcefsck файла НЕ будет запускать проверку раздела при перезагрузке.
Единственный способ заставить fsck на всех других некорневых разделах - это установка значения PASS равно 2 в /etc/fstab.

UUID=c6e22f63-e63c-40ed-bf9b-bb4a10f2db66 /mnt ext2 errors=remount-ro 0 2

Кроме того, мы можем настроить fsck для проверки файловой системы после каждых 5 перезагрузок:

tune2fs -c 5 /dev/sdb1

Чтобы отключить запуск fsck:

tune2fs -c 0 /dev/sdb1