Como forçar o fsck a cada inicialização - todos os sistemas de arquivos (relevantes)?


14

Estou trabalhando com um PC sem ventilador (centenas deles, de fato) que possui partições debian 6 e 3 (FAT e 2x ext2). Como o sistema não possui um botão liga / desliga, a maioria das pessoas costuma puxar o plugue para 'desligá-lo' em vez de iniciar 0 (ou equivalente). Como resultado, os sistemas de arquivos criam erros rapidamente.

Eu tentei usar 'shutdown -rF' para forçar o fsck, mas isso não parece estar funcionando. Gostaria de saber se há alguma maneira de dizer ao sistema para verificar cada ponto de montagem / FS antes de serem montados.

Eu tentei configurar o parâmetro fsck no / etc / fstab. Isso normalmente me dá um 'Erros encontrados. Execute o fsck manualmente '.

Existem outras opções para tentar?


1
A) Quem eram seus usuários? B) Você poderia ter adicionado um botão destacado "Desligar", sempre visível na tela? C) Como alternativa, você poderia educar seus usuários? D) Por que as máquinas não tinham botões de energia na frente?
unforgettableidSupportsMonica

Esta pergunta é quase uma duplicata de unix.stackexchange.com/questions/180488/… pelo mesmo usuário.
unforgettableidSupportsMonica

Respostas:


16

In /etc/init.d/checkfs.shé a linha if [ -f /forcefsck ] || grep -s -w -i "forcefsck" /proc/cmdline, portanto, fornecer forcefsckna linha de comando do kernel ou gerar um /forcefsckarquivo no desligamento deve causar um fsck na próxima reinicialização.

Para impedir a execução manual do fsck, peça fsckpara tentar corrigir automaticamente os erros com a -yopção, descomentando e alterando no para yesa seguinte entrada / etc / default / rcS, após a edição deve parecer:

# automatically repair filesystems with inconsistencies during boot
FSCKFIX=yes

Uma opção (forcefsck ou FSCKFIX) não implica a outra.


Isso manipulará a condição 'Executar o fsck manualmente'?
precisa saber é o seguinte

Na verdade, eu li muito rápido, atualizei minha resposta.
Finito graygreen

Eu configurei FSCKFIX = yes e o valor em checkfs.sh. Em nenhum dos casos o fsck foi executado quando reiniciei (via init 6). Eu devo estar esquecendo algo aqui.
Ethrbunny

Não altere nada checkfs.sh, apenas edite / etc / defaults / rcS e execute touch /forcefsckantes da reinicialização. O último comando precisa ser executado antes de cada reinicialização ou logo após a inicialização, mas o script fsck init está concluído.
Finito graygreen

Hmm .. sem sorte. Ainda vejo a mensagem 'montagem do sistema de arquivos não verificado' seguida de muitos erros 'excluir inode referenciado'. Até agora, alterar o / etc / fstab foi a única coisa que teve algum efeito. Não tenho certeza do que estou fazendo, para que suas sugestões não estejam funcionando.
Ethrbunny

7

Estou editando minha resposta:

O comando é:

sudo tune2fs -c 1 /dev/sdX

de acordo com o argumento manpages -c for tune2fs, conta o número de instâncias de montagens para uma partição. Portanto, 1 força para verificar o fs após cada instância de montagem.

( http://man7.org/linux/man-pages/man8/tune2fs.8.html )


2
Apenas um comando não é suficiente na maioria dos casos, escreva pelo menos uma explicação mínima também.
peterh - Restabelece Monica 3/15

7

Adicione o fsck.mode=forceparâmetro Kernel no seu gerenciador de inicialização. Anexe esta opção à GRUB_CMDLINE_LINUX_DEFAULT=variável interna /etc/default/grub. Como root, gere um novo arquivo de configuração do grub:

[root@host]# grub-mkconfig -o /boot/grub/grub.cfg

Este parâmetro tem o mesmo efeito que a criação do forcefsckarquivo dentro da raiz do ponto de montagem.

A solução de usar o checkfs.shscript se encaixa melhor no Debian, mas não deve funcionar em outras distros

Ao utilizar nosso site, você reconhece que leu e compreendeu nossa Política de Cookies e nossa Política de Privacidade.
Licensed under cc by-sa 3.0 with attribution required.