O que devo fazer para forçar a verificação do sistema de arquivos raiz (e, opcionalmente, uma correção) na inicialização?

8

Ontem, um dos nossos computadores caiu para grub shell ou, honestamente, não tenho certeza de qual shell foi quando ligamos a máquina.

Ele mostrou que não é possível montar o sistema de arquivos raiz ou algo assim, devido a inconsistências.

eu corri, eu acredito:

fsck -fy /dev/sda2

Reinicializou e o problema desapareceu.

Aí vem a parte da pergunta:

Eu já tenho no crontab de sua raiz:

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

enquanto o script contém:

#!/bin/bash
touch /forcefsck

Pensando nisso, eu não sei, por que eu criei um arquivo de script para um comando tão curto, mas de qualquer maneira ...

Além disso, no arquivo:

/etc/default/rcS

Eu defini:

FSCKFIX=yes

Então eu não entendi. Como a situação poderia surgir?

O que devo fazer para forçar a verificação do sistema de arquivos raiz (e, opcionalmente, uma correção) na inicialização?

Ou essas duas coisas são o máximo que eu posso fazer?

SO: Linux Mint 18.x Canela de 64 bits.

fstab :

cat /etc/fstab | grep ext4

mostra:

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

grub :

fsck.mode=force

já foi adicionado à configuração grub .

    
por Vlastimil 27.10.2017 / 15:44

1 resposta

9

Verificação do sistema de arquivos ext4 durante a inicialização

Testado no SO: Linux Mint 18.x em uma máquina virtual

Informações básicas

/etc/fstab tem a ordem fsck como a última coluna (6ª), por exemplo:

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

FSCKFIX=yes variable em /etc/default/rcS

Isto irá alterar o fsck para auto fix, mas não forçará uma verificação fsck.

De 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.

De man tune2fs

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

Comece com

Definindo o seguinte

FSCKFIX=yes

no arquivo

/etc/default/rcS

Verifique e anote a última vez que fs foi verificado:

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

Estas duas opções NÃO funcionaram

  1. Transmitindo o argumento -F (força fsck on reboot) para shutdown :

    shutdown -rF now
    

    Não; veja: man shutdown .

  2. Adicionando o arquivo /forcefsck vazio com:

    touch /forcefsck
    

    Estes scripts parecem usar isto:

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

    NÃO funcionou na reinicialização, mas o arquivo foi excluído.

    Verificado por:

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

    Estes parecem ser os logs dos scripts init .

Repito que estas duas opções NÃO FUNCIONARAM!

Ambos os métodos funcionaram

  1. switches de inicialização do kernel systemd-fsck

    Editando o arquivo de configuração principal grub :

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

    Isso fez uma verificação do sistema de arquivos conforme verificado com:

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

    Nota: Esta DID uma verificação, mas para forçar uma correção também, você precisa especificar fsck.repair="preen" ou fsck.repair="yes" .

  2. Usando tune2fs para definir o número de montagens do sistema de arquivos antes de fazer um fsck , man tune2fs

    tune2fs' info is kept in the file system superblock
    
    A opção

    -c define o número de vezes para montar o fs antes de verificar o fs.

    sudo tune2fs -c 1 /dev/sda1
    

    Verifique com:

    sudo tune2fs -l /dev/sda1
    

    Este trabalho DID foi verificado com:

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

Resumo

Para forçar um fsck em cada inicialização no Linux Mint 18.x, use tune2fs ou fsck.mode=force , com opcional fsck.repair=preen / fsck.repair=yes , a linha de comando do kernel alterna.

    
por 27.10.2017 / 19:22

Tags