Reinicialização lenta - entendendo fsck e tune2fs

1

Estou tendo um problema com meu servidor da web: quando ele está funcionando há muito tempo e depois fica inativo por algum motivo, demora uma eternidade para ser inicializado.

Minha solução para isso foi criar um cron para reiniciar o servidor de tempos em tempos (tenho me insultado por isso, seja gentil). A reinicialização foi tão rápida que o servidor foi capaz de responder às solicitações antes do tempo limite, então eu estava bem com isso.

Mas agora me disseram que o que pode estar causando isso é o fsck sendo forçado depois de X dias, e também depois do Y ser montado, então minha correção não vai ajudar muito.

Então a questão é o que devo fazer com o fsck? Forçar a execução mais frequente ou desativá-la? Pode ser executado a qualquer momento ou deve ser durante a inicialização? Um exemplo de como fazer isso com o tune2fs também é bem-vindo.

    
por ChocoDeveloper 19.11.2012 / 18:34

2 respostas

3

Para responder primeiro à pergunta mais fácil: Verificar um sistema de arquivos "a qualquer momento" (ou seja, quando o sistema está em execução) é chamado de verificação "online" e, em geral, não é suportado. O motivo é simples: quando um sistema de arquivos é montado, o kernel está fazendo coisas arbitrárias para o dispositivo de bloco real - o que é bom, porque ele acompanha o que está fazendo. Mas quando você joga fsck na mixagem, ele também mexe com o dispositivo de bloco raw e não informa o kernel sobre o que está fazendo. Então, eles basicamente pisam nos dedos uns dos outros ao fazer alterações no disco, e você acaba com um sistema de arquivos corrompido. Mesmo se você apenas "verificar" no modo somente leitura, os resultados retornados pelo fsck não terão sentido, novamente porque o fsck não tem idéia do que o kernel está fazendo.

Para alterar a frequência em que o sistema de arquivos é verificado ao montá-lo, você usará o tune2fs, como mencionou. Suponha que você gostaria de fsck a cada 30 reinicializações. Fazer

# tune2fs -c 30 /dev/sdaX

(Substitua o dispositivo de bloco pelo seu sistema de arquivos.)

Ou, se por algum motivo você quiser desativar totalmente a verificação baseada em contagem de montagens,

# tune2fs -c 0 /dev/sdaX

Se preferir verificar um calendário, você pode usar -i . Por exemplo, para verificar todas as semanas, faça

# tune2fs -i 1w /dev/sdaX

Você pode usar d para dias, w para semanas e m para meses. Novamente, para desabilitar a verificação baseada em calendário, forneça um valor de 0 para o intervalo. Por favor, por favor, por favor não desabilite todas as verificações. Você irá, em algum momento, corromper seu sistema de arquivos.

Em geral, você pode sair com intervalos um pouco maiores se o sistema de arquivos for registrado em diário, embora não seja um substituto. Para mais informações, leia as man pages para e2fsck e tune2fs; eles são onde eu tenho mais informações para isso. Espero que isso ajude!

    
por thirtythreeforty 19.11.2012 / 19:24
0

Altere sua reinicialização agendada para incluir uma das seguintes ações

touch /forcefsck; reboot

ou

shutdown -rF now

A existência do /forcefsck dirá ao sistema operacional para escanear os discos (tenho certeza que isso é o que o segundo comando faz de qualquer maneira.

Use o cron para agendar isso por um período em que o servidor tenha menos carga e desative as outras verificações agendadas (data / número de montagens) assim que tiver certeza de que está sendo executado corretamente.

    
por Jay Fitzpatrick 10.01.2015 / 16:57