fsck no desligamento em vez de inicialização

7

Normalmente, fsck é executado automaticamente na inicialização a cada 30 reinicializações. Às vezes, pode ser muito lento e pode atrasar a inicialização em mais de meia hora.

Existe alguma maneira de executar o fsck no desligamento? (Eu não me importo se o desligamento está atrasado. O tempo de inicialização é mais importante.)

Eu gostaria disso para as distribuições Debian ou Scientific Linux.

    
por Diego Herranz 27.02.2013 / 17:28

3 respostas

5

Embora você possa verificar algumas coisas durante o desligamento, não é possível executar com eficiência fsck em seu sistema de arquivos raiz. Você vê, fsck requer que o sistema de arquivos não seja montado antes de tentar reparar. Isso só é possível durante a inicialização, enquanto ainda está sendo executado a partir de initramfs .

    
por 27.02.2013 / 18:07
1

Para o Debian você pode usar AutoFsck mas o pacote não é mais suportado (última atualização em 2010). Então tenha isso em mente.

A outra maneira seria colocar um script FSCK / bash em seu script de desligamento. Para o SE linux / centos etc eu usaria chkconfig level 0 (halt) e 6 (reboot). chkconfig --levels 0 rc.local-shutdown on Coloque o script em /etc/rc.d/init.d/ . (nível 6 para reinicialização)

Para o Debian eu colocaria a criação dos scripts em /etc/rc6.K00nome do script e /etc/rc0.d/K00nome do script,

Quanto ao script, você pode usar algo assim:

#!/bin/bash
NETFS="nonfs,nosmbfs,nocifs,nocodafs,noncpfs,nosysfs,nousbfs,noshfs,nofuse,nofuseblk"

if (( 'tune2fs -l /dev/sda2 | awk '/Mount count/{print $3}'' > 'tune2fs -l /dev/sda2 | awk '/Maximum mount count/{print $4-1}' ))
then /sbin/fsck -A -T -C -a -t $NETFS 2>/dev/null
fi

Este código não foi escrito por mim, mas por alguém nos fóruns archlinux . Eu não tentei o código. Então, tenha isso em mente também.

Ou você pode simplesmente fazer algo simples como /sbin/fsck -A -T -C -a -- -f dentro do script.

    
por 27.02.2013 / 17:56
1

O problema com o fsck no desligamento é que, quando você está desligando, você está desmontando o sistema de arquivos. Mesmo que o fs esteja sujo, desmontar um fs não o força a verificar sua integridade. Enquanto você o monta, você está executando um fsck para verificar se os metadados para os dados estão corretos e se o fs tem informações adequadas para o fs, conforme relata. Isso pode acontecer enquanto o fs vai ser montado. Porque o código para verificar a integridade do fs é reproduzido quando o fs vai ser montado.

Isto é, eu acho que a razão pela qual nós podemos fazer um desleixo preguiçoso, mesmo que o fs esteja sujo, mas não há preguiça ou forçado quando o fs está sujo;)

Normalmente, o fs de journalling não deve levar muito tempo para aparecer, a menos que seja muito complicado. xfs_repair é bem legal e pode ser feito online enquanto o btrfs está bem, outra história.

    
por 27.02.2013 / 18:44