Quanto tempo leva para fsck um volume?

9

Estamos executando um site que atualmente atende a 3-5 milhões de visualizações de página. Nosso site é um site de compartilhamento de arquivos e, portanto, contém 250.000 arquivos e alguns milhares de links simbólicos.

O disco rígido é um disco SATA de 1500 GB.

Usando hdparm, descobrimos que a velocidade de nosso disco rígido foi reduzida para 15-20 MB / s, que era de 80 MB / s.

Então agora queremos rodar fsckpara corrigir o problema do disco.

  1. Vai fsckresolver esse problema?
  2. Quanto tempo fscklevará para ser concluído (apenas queremos calcular o tempo de inatividade que teremos)?
khizar ansari
fonte
Qual sistema de arquivos você está usando? É uma matriz RAID ou um disco SATA simples?
Kyle Smith
sistema de disco e arquivo SATA simples é ext3
khizar ansari
11
Por que você está executando um servidor Web de produção em um único disco? Servidores com discos únicos não são servidores - eles estão marcando bombas-relógio.
Evan Anderson
3
Parece que esse disco está morrendo. Migre seus dados (para uma matriz RAID real com um controlador suportado por bateria de hardware) imediatamente.
Joel E Salas

Respostas:

8

A degradação da velocidade é esperada à medida que o número de arquivos acessados ​​simultaneamente aumenta. As unidades de disco rígido não gostam de ser acessadas em paralelo: toda vez que o cabeçote de leitura / gravação precisa trocar de cilindro, você perde vários milissegundos. Mesmo se dois arquivos estiverem no mesmo cilindro, ou mesmo na mesma faixa, talvez seja necessário aguardar uma rotação para passar de um para outro. Se você medir o desempenho da unidade em megabits por segundo, espere que caia exponencialmente à medida que o acesso paralelo aumentar.

fsck não ajudará nisso: ele apenas repara os danos à estrutura de diretórios, não realiza nenhuma otimização.

A solução ideal seria mudar para o armazenamento em estado sólido, já que isso não tem nenhuma das limitações físicas dos pratos giratórios. Mas isso provavelmente é proibitivo em termos de custos.

O próximo melhor seria usar um RAID otimizado para acesso paralelo. Lembre-se de que os RAIDs podem ser configurados para muitos perfis de desempenho diferentes, portanto, você precisará de um tempo para aprender as configurações de qualquer hardware e driver RAID.

Você pode reduzir o problema usando o cache agressivo do sistema de arquivos. Se o seu sistema tiver RAM suficiente, o Linux já deve estar fazendo isso bastante bem. Execute um programa como toppara ver quanta RAM livre existe. Mas se os arquivos mais usados ​​não couberem na RAM (ou na RAM que você provavelmente adquirirá), isso realmente não ajudará.

Uma solução alternativa para os pobres seria dividir seus arquivos em vários discos rígidos físicos diferentes (não apenas em partições diferentes na mesma unidade). Essa não é realmente uma solução escalável de longo prazo e acabaria custando mais do que um RAID decente. Mas pode ser uma solução rápida se você tiver unidades por aí.

Para qualquer solução que envolva unidades de disco rígido, verifique se elas têm uma velocidade de rotação rápida e baixa latência de busca.

Escrevi um artigo com algumas informações gerais sobre o desempenho do disco rígido aqui:

Dicas do UNIX - Sistemas de arquivos

Seth Noble
fonte
Não vejo a hdparmreferência dele tendo muito a ver com "acesso paralelo". Para mim, parece mais que ele tem um disco defeituoso. Era mais rápido no passado e agora não é. Provavelmente porque está realocando setores.
Evan Anderson
Essa é certamente uma possibilidade, embora eu ache que a realocação nessa escala produziria alguns erros de E / S. Com base na linha de base muito lenta de 80 megabits por segundo, eu estava assumindo que o teste foi executado em um sistema ativo. Então ... existem erros de E / S no log do sistema, como foram hdparmrealizados os testes e os resultados foram em "megabits" ou "megabytes" por segundo?
Seth Noble
3

Eu esperaria 5 horas para o fsck concluir.

Em vez disso, eu consideraria (isso significa: testar, testar e testar) uma migração para o reiserfs.

marcoc
fonte
2
  1. Não (o fsck pode corrigir metadados do sistema de arquivos corrompidos, não um disco quebrado, nem é uma ferramenta de desfragmentação).
  2. Depende do sistema de arquivos. Com ext3, terrivelmente longo, eu reservaria várias horas. Sistemas de arquivos mais modernos, como ext4 ou xfs, podem ser facilmente uma ordem de magnitude mais rápida.
janneb
fonte
1

O hdparm faz uma leitura seqüencial. O disco do servidor de arquivos deve ser muito procurado, como os outros caras disseram.

Se você estiver recebendo erros de HD, eles devem aparecer em seu / var / log / em algum lugar.

Por que você não tenta "smartctl -t short / dev / sda" e depois "smartctl -t long / dev / sda" ?? ... Com a maioria do novo HDD, você pode emitir esse comando mesmo quando usa o HD . O Smart fornecerá alguns resultados. Você pode ler a saúde do seu disco rígido usando "smartctl --all / dev / sda".

Se você estiver enviando um hdparm para o HDD montado com acesso simultâneo, essa pode ser a resposta porque seus resultados são muito menores do que antes.

Eu deveria mover seus dados para uma configuração de RAID o mais rápido possível.

Jose Tavares
fonte