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!
Linux – Usando o forcefsck by Cleiton Bueno is licensed under a Creative Commons Attribution-NonCommercial-ShareAlike 4.0 International License.