Protegendo o cache de gravação de disco SATA

6

Supostamente (veja, por exemplo, uma pergunta sobre isso aqui ), com drives habilitados para NCQ, o cache de gravação do drive deve ser seguro, já que ele não está no sistema operacional sobre os dados serem comprometidos com os discos quando não estão. Estou tentando descobrir quais configurações são necessárias para tornar isso realidade.

Estou usando o diskchecker.pl para confirmar se todos os blocos sobreviveram a um pull do tomada. O servidor está configurado assim:

  • 4x ST3500514NS em execução no Linux MD RAID10. Chipset Intel 3420. No modo AHCI.
  • LVM em execução no RAID10.
  • O sistema de arquivos testado é ext4 (com barreira = 1, data = ordered) em um volume lógico. Eu também tentei testar diretamente em um volume lógico (dispositivo de bloco); isso não ajudou.
  • Debian 6.0 (squeeze); kernel 2.6.32-5-amd64

Se eu desativar o cache de gravação ( hdparm -W0 ), ele funcionará (com uma grande penalidade de desempenho). Então parece que as camadas superiores são capazes.

Eu tentei ativar o FUA na libata (passando fua=1 para o carregamento do módulo e confirmando via dmesg ), isso não ajudou.

Alguma sugestão sobre como fazer isso funcionar?

edit: encontrou o motivo (veja minha resposta); alguma sugestão sobre como obter pelo menos parte do desempenho de volta?

    
por derobert 04.05.2011 / 20:57

3 respostas

3

A atualização para o kernel 2.6.38-2-amd64 (do sid) corrige o problema, ao custo de uma grande penalidade de desempenho (muito semelhante a apenas desativar os caches de gravação).

Fazendo algumas pesquisas sobre isso, parece que o MD não suportou barreiras de E / S (exceto no RAID1) até 2.6.33-rc1 (commit a2826aa92e2e14db372eda01d333267258944033).

    
por 04.05.2011 / 22:12
3

Sim, pelo que sei, este é o custo para ser seguro, você pode ver muitos tópicos sobre segurança de dados e custo de velocidade em cada sistema de arquivos e camada de armazenamento na lista de discussão do Postgresql, eles têm falado ultimamente sobre segurança SSD. Por exemplo, apenas o Vertex 2 Pro ou a última série Intel SSD que possuem uma pequena memória conectada (como um cache de bateria em um controlador raid) são seguros para uso do banco de dados e o problema com SSD não pode ser corrigido desabilitando o cache de gravação. p>

Eu colo aqui dois links, mas você tem vários exemplos na lista de discussão, faça uma pesquisa.

link

link

    
por 05.05.2011 / 08:04
1

É por isso que você realmente deveria estar usando um controlador RAID de hardware com uma BBU (unidade de backup de bateria). Então você pode ter seu cache de gravação e estar seguro.

    
por 05.05.2011 / 18:28