Blog Linux Avante

Como forçar o fsck (verificação de consistência do sistema de arquivos) após a reinicialização

23 de maio de 2019

fsck é uma ferramenta para verificar e reparar um sistema de arquivos no Linux, macOS e FreeBSD, semelhante à ferramenta CHKDSK do Windows.

Com o antigo sysvinit e o Upstart, os usuários podiam forçar uma verificação do disco na próxima reinicialização usando um comando simples (sudo touch /forcefsck), mas esse não é mais o caso hoje em dia, com a maioria das distribuições Linux usando o systemd. Este artigo explica como forçar o fsck a ser executado durante a inicialização de duas maneiras, que funcionam com o systemd. Você também encontrará um comando que mostra quando uma partição foi verificada pela última vez pelo fsck, no final do artigo.

Usando as etapas abaixo, você forçará uma verificação de consistência do sistema de arquivos cada vez que o computador inicializar. Também existem instruções para desfazer isso.

Opção 1 (apenas para sistemas de arquivos ext2/ext3/ext4): forçar fsck na reinicialização usando tune2fs

tune2fs pode forçar um fsck em cada reinicialização somente para sistemas de arquivos EXT4, EXT3 e EXT2. A maioria das distribuições Linux usa EXT3/4 por padrão, então, a menos que você especifique explicitamente um tipo de sistema de arquivos diferente, é o que você está usando na maioria dos casos.

tune2fs pode disparar um fsck forçado em cada reinicialização usando a opção -c (max-mount-counts). Esta opção define o número de montagens após as quais o sistema de arquivos será verificado, portanto, defini-la como 1 executará fsck cada vez que o computador inicializar. Definir como -1 ou 0 redefine isso (o número de vezes que o sistema de arquivos é montado será desconsiderado pelo e2fsck e pelo kernel).

Para que isso funcione, você precisa se certificar de que a partição que deseja verificar e reparar usando fsck tem o número de aprovação maior que 0 definido em /etc/fstab (última coluna em /etc/fstab). A partição raiz deve ser definida como 1 (primeiro a ser verificada), enquanto outras partições que você deseja verificar devem ser definidas como 2. Exemplo:

# /etc/fstab: static file system information.

/dev/sda1  /      ext4  errors=remount-ro  0  1
/dev/sda5  /home  ext4  defaults           0  2

Depois de fazer isso, force um fsck em cada inicialização para um sistema de arquivos EXT4, EXT3 ou EXT2 usando:

Comandos para usar no terminal

sudo tune2fs -c 1 /dev/sdXY

Você precisará substituir sdXY pela partição que deseja verificar e reparar. Você pode encontrar isso usando um aplicativo gráfico como o Gparted, que exibe todas as partições disponíveis para cada disco, ou usando uma ferramenta de linha de comando, como lsblk ou fdisk (sudo fdisk -l).

Agora você pode reinicializar o sistema e o fsck deve ser forçado a executar uma verificação de consistência do sistema de arquivos.

Quando você não quiser mais forçar o fsck a executar em cada inicialização, execute o mesmo comando, mas com -1 em vez de 1:

Comandos para usar no terminal

sudo tune2fs -c -1 /dev/sdXY

Você também pode usar este comando para executar o fsck periodicamente. Por exemplo, você pode definir o fsck para executar uma verificação do sistema de arquivos a cada 30 inicializações, usando -c 30 (por exemplo: sudo tune2fs -c 30 /dev/sdXY).

Opção 2: forçar fsck na reinicialização usando fsck.mode=force como um parâmetro do kernel e, opcionalmente, fsck.repair=yes

Isso deve funcionar com muitos tipos de sistemas de arquivos, incluindo ext4/ext3/ext2, xfs, ntfs, fat32, exfat e mais. Também deve ser observado que systemd-fsck não conhece nenhum detalhe sobre sistemas de arquivos específicos e simplesmente executa verificadores de sistema de arquivos específicos para cada tipo de sistema de arquivos (/sbin/fsck.*; por exemplo: /sbin/fsck.ext4).

systemd executa fsck para cada sistema de arquivos que tem um número de passagem fsck maior que 0 definido em /etc/fstab (última coluna em /etc/fstab), portanto, certifique-se de editar seu /etc/fstab se não for o caso. A partição raiz deve ser definida como 1 (primeiro a ser verificado), enquanto outras partições que você deseja verificar devem ser definidas como 2. Exemplo:

# /etc/fstab: static file system information.

/dev/sda1  /      ext4  errors=remount-ro  0  1
/dev/sda5  /home  ext4  defaults           0  2

Todas as partições que aparecem em /etc/fstab e têm o número de passagem (última coluna em fstab) maior que 0 serão verificadas se você inicializar com o parâmetro de kernel fsck.mode=force.

Agora que resolvemos isso, veja como forçar um fsck na inicialização com o systemd. Você precisa adicionar fsck.mode=force como um parâmetro do kernel ao seu arquivo de configuração grub.

Este comando usa o editor de texto de linha de comando Nano para abrir /etc/default/grub para que você possa editá-lo:

Comandos para usar no terminal

sudo nano /etc/default/grub

Para forçar um fsck cada vez que o computador inicializar, você precisará adicionar fsck.mode=force a GRUB_CMDLINE_LINUX_DEFAULT, no final da linha, mas antes da última citação (").

Exemplo:

GRUB_CMDLINE_LINUX_DEFAULT="quiet splash fsck.mode=force"

Certifique-se de não editar mais nada e de que as edições que você fez estão corretas, caso contrário, seu computador pode falhar ao inicializar!

Depois de fazer as alterações, salve o arquivo e saia (para salvar o arquivo e sair do Nano, use: Ctrl + O, Enter e, em seguida, Ctrl + X).

Há um segundo parâmetro do kernel que você pode adicionar, chamado fsck.repair. Ele tem a opção padrão preen, que repara automaticamente os problemas que podem ser corrigidos com segurança. Você pode usar fsck.repair=yes para responder "sim" a todas as perguntas pelo fsck ou "não" para responder não a todas as perguntas.

Exemplo (force o fsck em cada reinicialização e responda "sim" a todas as perguntas do fsck):

Comandos para usar no terminal

GRUB_CMDLINE_LINUX_DEFAULT="quiet splash fsck.mode=force fsck.repair=yes"

Adicione isso a /etc/default/grub da mesma maneira como explicado antes.

Depois de terminar de editar /etc/default/grub, atualize sua configuração Grub2:

Debian/Ubuntu/Linux Mint

Comandos para usar no terminal

sudo update-grub

Fedora ou openSUSE

Comandos para usar no terminal

sudo grub2-mkconfig -o /boot/grub2/grub.cfg

Arch Linux

Comandos para usar no terminal

sudo grub-mkconfig -o /boot/grub/grub.cfg

Em outras distribuições do Linux, você pode tentar os comandos mencionados acima. Se eles não funcionarem, pesquise como atualizar a configuração do Grub2 para sua distribuição Linux.

Quando terminar, reinicie o sistema e fsck deve executar uma verificação de consistência do sistema de arquivos na inicialização.

Para parar a verificação forçada de seu sistema de arquivos em cada inicialização, remova fsck.mode=force (e fsck.repair=yes se você o adicionou) de seu arquivo de configuração /etc/default/grub e atualize o grub, como já explicado.

Como descobrir quando um sistema de arquivos foi verificado pela última vez pelo fsck

Você pode descobrir quando um sistema de arquivos foi verificado pela última vez por fsck usando tune2fs:

Comandos para usar no terminal

sudo tune2fs -l /dev/sdXY | grep checked

Substitua sdXY pela partição que você deseja ver quando foi verificada pela última vez. Exemplo:

$ sudo tune2fs -l /dev/sda1 | grep checked
Last checked:             Thu May 23 15:16:23 2019
Confira a versão original desse post em inglês
Propaganda
Blog Comments powered by Disqus.