0024 — Проверка файловой системы в Linux

Содержимое страницы

/forcefsck

Это старый способ, который плохо работает в современных дистрибутивах.

  1. Нужно авторизоваться от имени пользователя root:

    sudo su
    
  2. Запустить редактор заданий crontab:

    crontab -e
    
  3. Добавить в конец файла строку:

    @reboot touch /forcefsck
    

    Если такой файл существует, ОС запустит проверку файловой системы при загрузке, после чего файл удалит. Чтобы он восстанавливался автоматически, используется особая форма указания времени запуска задания @reboot — во время загрузки.

Настройка параметров GRUB

В Debian-based системах необходимо:

  1. В файле /etc/default/grub добавить в конец строки с параметром GRUB_CMDLINE_LINUX_DEFAULT аргументы:

    • fsck.mode=force — для автоматической проверки файловой системы при каждой загрузке;
    • fsck.repair=yes — для автоматического исправления обнаруженных ошибок.

    Например, на моём компьютере эта строка выглядит так:

    GRUB_CMDLINE_LINUX_DEFAULT="quiet nvidia nvidia_modeset nvidia_uvm nvidia_drm fsck.mode=force fsck.repair=yes"
    
  2. Убедиться, что в файле /etc/fstab правильно выставлены приоритеты проверки разделов: раздел / (root) должен проверяться первым, а все остальные, кроме SWAP — после него в порядке общей очереди.

    Отмечу, что fsck может параллельно проверять сразу несколько файловых систем.

    За порядок проверки отвечает последний параметр в каждой строке. На моём компьютере файл /etc/fstab выглядит так (большая часть комментариев удалена для краткости):

    # ID                                       Точка монтирования     Тип ФС   Параметры       dump fsck
    UUID=72DE-DB90                             /boot/efi              vfat     umask=0077         0    1
    UUID=f2ff62a9-6cc8-432d-9322-7ee9b815f40b  /                      ext4     errors=remount-ro  0    1
    UUID=7bfe3a92-1445-4082-87a2-c9c9428038b3  /home                  ext4     defaults           0    2
    UUID=5497b7cf-1544-4715-84e6-7cee4866adf5  none                   swap     sw                 0    0
    UUID=E22E94942E9462F9                      /media/dunaevsky/DATA  ntfs-3g  defaults           0    0
    
    # Привод DVD-RW
    /dev/sr0                                   /media/cdrom0          auto     user,noauto        0    0
    

    Здесь:

    • ID — идентификатор, позволяющий однозначно идентифицировать раздел. Сейчас принято использовать UUID. Для их определения можно использовать команду blkid.
    • Точка монтирования — место в файловой системе, к которому будет подключен раздел. Каталог должен существовать и быть пустым.
    • Тип ФС — тип файловой системы, используемой для хранения данных в разделе. Обратите внимание, для раздела EFI (самый первый) используется fvat.
    • Параметры — в большинстве случаев достаточно default, но есть и особые случаи.
    • dump — должна ли ОС создавать резервную копию данных раздела? В большинстве случаев — нет.
    • fsck — первыми проверяются разделы EFI и /, потом все остальные. Для раздела NTFS, SWAP и оптического привода проверка выключена.

    Подробнее про /etc/fstab и параметры можно почитать в Arch Wiki.

  3. Обновить параметры загрузчика:

    sudo update-grub