Linux – Usando o forcefsck

O Linux possui um utilitário muito usado por muitos SysAdmin’s, principalmente nos momentos de incidentes.

O comando fsck, uma excelente ferramenta criada por Theodore Ts’o, que o foco é checar e reparar sistemas de arquivos “sujos” no Linux.

Quando o disco rígido começa a dar problemas, ou aquele sistema embarcado que usa um SD-Card ou microSD começa a inutilizar os blocos da flash por não usar algumas técnicas como de poupar IO’s nela, ou aquele servidor da empresa que sofreu 3 reboots consecutivos por falha na energia e do no-break.

Bom, em todos esses casos o fsck será útil. Porém, existem casos em que o Linux esta com o sistema de arquivos “sujo” ou já danificado e continua em operação (é Linux né :)), mas você sabe que o sistema de arquivos ou o disco rígido/memoria flash esta com problemas porque vê algo assim nos logs.

 

Unrecovered read error - auto reallocate failed
end_request: I/O error, dev sda, sector 1245092

 

Entre outros erros, onde devido a gravidade dos erros o sistema irá remontar o / como read-only para diminuir o desastre.

Você pode reiniciar o Linux, e possivelmente irá realizar o fsck, mas, poderá parar em uma etapa aguardando um ‘y’ para realizar um reparo, e se você não estiver no mesmo local do servidor, equipamento ou que seja? E se estiver em outro estado?

Ae podemos usar o forcefsck, não é nenhum programa adicional, mas uma forma de dizermos ao Linux que o sistema esta sujo e que deve passar o fsck, simplesmente criando um arquivo chamado forcefsck na raiz /.

 

$ sudo touch /forcefsck

 

Após criar o arquivo, pode reiniciar o Linux com o comando reboot por exemplo e aguardar a volta do sistema, que irá verificar todas as partições.

Caso queira saber como tudo ocorre e o Linux faz isso, na maioria das distribuições você pode ver isso visualizar o arquivo /etc/init/mountall.conf.

 

$ cat /etc/init/mountall.conf 
# mountall - Mount filesystems on boot
#
# This helper mounts filesystems in the correct order as the devices
# and mountpoints become available.

description	"Mount filesystems on boot"

start on startup
stop on starting rcS

expect daemon
task

emits virtual-filesystems
emits local-filesystems
emits remote-filesystems
emits all-swaps
emits filesystem
emits mounting
emits mounted

# temporary, until we have progress indication
# and output capture (next week :p)
console output

script
    . /etc/default/rcS
    [ -f /forcefsck ] && force_fsck="--force-fsck"
    [ "$FSCKFIX" = "yes" ] && fsck_fix="--fsck-fix"

    # set $LANG so that messages appearing in plymouth are translated
    if [ -r /etc/default/locale ]; then
        . /etc/default/locale
        export LANG LANGUAGE LC_MESSAGES LC_ALL
    fi

    exec mountall --daemon $force_fsck $fsck_fix
end script

post-stop script
    rm -f /forcefsck 2>dev/null || true
end script

 

Diria que é simples e auto-explicativo, principalmente após a linha 28 até 43, onde após verificar a existência do arquivo e alguns parâmetros, irá executar o utilitário e no final o forcefsck é removido.

Um detalhe importante a dar atenção é uma opção localizada em /etc/default/rcS, chamada FSCKFIX, onde esta opção deve ser configurada para ‘yes’ caso não esteja próximo ao equipamento, e tentamos deixar para que o próprio utilitário tente realizar os possíveis reparos.

 

$ vim /etc/default/rcS
#
# /etc/default/rcS
#
# Default settings for the scripts in /etc/rcS.d/
#
# For information about these variables see the rcS(5) manual page.
#
# This file belongs to the "initscripts" package.

# delete files in /tmp during boot older than x days.
# '0' means always, -1 or 'infinite' disables the feature
TMPTIME=45

# spawn sulogin during boot, continue normal boot if not used in 30 seconds
SULOGIN=no

# do not allow users to log in until the boot has completed
DELAYLOGIN=no

# assume that the BIOS clock is set to UTC time (recommended)
UTC=no

# be more verbose during the boot process
VERBOSE=no

# automatically repair filesystems with inconsistencies during boot
FSCKFIX=no

 

Uma dica simples, mas que em casos extremos pode ser uma grande carta na manga, e por experiência própria, já me ajudou e muito.

Outra forma de reiniciar o sistema e pedir para que no boot faça a checagem é com o comando shutdown.

$ shutdown -rF now

 

Porém, não sei se funciona em todas distribuições a opção F (Force fsck), a opção r é para reboot e também podemos usar f para não realizar fsck no boot.

Dependendo da gravidade e o problema no sistema de arquivos a substituição do dispositivo de armazenamento é necessária, o fsck pode ser apenas uma medida paliativa ou para se ganhar tempo!

Espero que tenham gostado e até a próxima!

 

Share Button

CC BY-NC-SA 4.0 Linux – Usando o forcefsck by Cleiton Bueno is licensed under a Creative Commons Attribution-NonCommercial-ShareAlike 4.0 International License.