Что я должен сделать, чтобы принудительно проверить корневую файловую систему (и, возможно, исправить) при загрузке?

10

Вчера один из наших компьютеров упал на grubоболочку или, честно говоря, я не уверен, что это была за оболочка, когда мы включили машину.

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

Я побежал, я верю:

fsck -fy /dev/sda2

Перезагрузился и проблема исчезла.

Вот часть вопроса:

У меня уже есть в корне ее кортаб:

@reboot /home/ruzena/Development/bash/fs-check.sh

пока скрипт содержит:

#!/bin/bash
touch /forcefsck

Думая об этом, я не знаю, почему я создал файл сценария для такой короткой команды, но в любом случае ...

Далее в файле:

/etc/default/rcS

Я определил:

FSCKFIX=yes

Так что я не понимаю. Как ситуация может возникнуть?


Что я должен сделать, чтобы принудительно проверить корневую файловую систему (и, возможно, исправить) при загрузке?

Или эти две вещи максимум, что я могу сделать?

ОС: Linux Mint 18.x Cinnamon 64-bit.

fstab:

cat /etc/fstab | grep ext4

шоу:

UUID=a121371e-eb12-43a0-a5ae-11af58ad09f4    /    ext4    errors=remount-ro    0    1

grub:

fsck.mode=force

был уже добавлен в grubконфигурацию.

LinuxSecurityFreak
источник

Ответы:

12

ext4 проверка файловой системы во время загрузки

Протестировано на ОС: Linux Mint 18.x на виртуальной машине

Основная информация

/etc/fstabимеет fsckпорядок как последний (6-й) столбец, например:

<file system>    <mount point>    <type>    <options>    <dump>    <fsck>
UUID=2fbcf5e7-1234-abcd-88e8-a72d15580c99 / ext4 errors=remount-ro 0 1

FSCKFIX=yes переменная в /etc/default/rcS

Это изменит fsck на автоматическое исправление, но не заставит проверку fsck.

От man rcS:

FSCKFIX
    When  the  root  and all other file systems are checked, fsck is
    invoked with the -a option which means "autorepair".   If  there
    are  major  inconsistencies then the fsck process will bail out.
    The system will print a  message  asking  the  administrator  to
    repair  the  file  system manually and will present a root shell
    prompt (actually a sulogin prompt) on the console.  Setting this
    option  to  yes  causes  the fsck commands to be run with the -y
    option instead of the -a option.  This will tell fsck always  to
    repair the file systems without asking for permission.

От man tune2fs

If you are using journaling on your filesystem, your filesystem
will never be marked dirty, so it will not normally be checked.

Начать с

Установка следующего

FSCKFIX=yes

в файле

/etc/default/rcS

Проверьте и отметьте последний раз, когда fs был проверен:

sudo tune2fs -l /dev/sda1 | grep "Last checked"

Эти два варианта НЕ работали

  1. Передача -F(принудительно fsckпри перезагрузке) аргумента shutdown:

    shutdown -rF now
    

    Нет; см man shutdown.

  2. Добавление /forcefsckпустого файла с помощью:

    touch /forcefsck
    

    Эти сценарии, кажется, используют это:

    /etc/init.d/checkfs.sh
    /etc/init.d/checkroot.sh
    

    сделал нЕ работает при перезагрузке, но файл был удален.

    Проверено:

    sudo tune2fs -l /dev/sda1 | grep "Last checked"
    sudo less /var/log/fsck/checkfs
    sudo less /var/log/fsck/checkroot
    

    Похоже, это журналы для initскриптов.

Я повторяю, эти два варианта НЕ работали!


Оба эти метода работали

  1. Systemd-Fsckзагрузочные переключатели ядра

    Редактирование основного grubфайла конфигурации:

    sudoedit /etc/default/grub
    
    GRUB_CMDLINE_LINUX="fsck.mode=force"
    
    sudo update-grub
    sudo reboot
    

    Это сделало проверку файловой системы как проверено с:

    sudo tune2fs -l /dev/sda1 | grep "Last checked"
    

    Примечание: DID чек, но заставить исправить слишком, вам нужно указать fsck.repair="preen", или fsck.repair="yes".

  2. Использование tune2fsдля установки количества монтирований файловой системы перед выполнением fsck,man tune2fs

    tune2fs' info is kept in the file system superblock
    

    -c Переключатель устанавливает количество раз монтирования фс перед проверкой фс.

    sudo tune2fs -c 1 /dev/sda1
    

    Проверьте с помощью:

    sudo tune2fs -l /dev/sda1
    

    Этот DID работает, как проверено:

    sudo tune2fs -l /dev/sda1 | grep "Last checked"
    

Резюме

Чтобы принудительно fsckвызывать a при каждой загрузке в Linux Mint 18.x, используйте либо tune2fs, либо fsck.mode=force, с опцией fsck.repair=preen/ fsck.repair=yes, ключи командной строки ядра.

jc__
источник
В системе Debian на основе Grub рассмотрите возможность создания /etc/default/grub.d/local.cfgфайла с GRUB_CMDLINE_LINUX_DEFAULT="$GRUB_CMDLINE_LINUX_DEFAULT fsck.mode=force". Это позволит избежать необходимости объединять /etc/default/grubконфигурационный файл во время обновлений.
Винкас Даргис