Como depurar / auditar quais gravações de cache de dispositivos?

1

Eu armazeno documentos na partição btrfs construída sobre o dispositivo escassez-dm-crypt localizado na partição principal do ext4 no disco rígido físico.

Quando o kernel entra em pane (e isso acontece diariamente no meu ASUS P53E com kernel 3.6 :-() perco arquivos modificados recentemente (sempre o conteúdo dos arquivos foi substituído por zeros).

Uma maneira de evitar danos aos arquivos é desativar o cache de gravação.

Para isso, eu precisaria desativar o cache de gravação para a partição btrfs, o dispositivo dm-crypt que faz o backup da partição e o arquivo esparso em que o dispositivo dm-crypt reside.

  1. Como posso verificar o status de gravação em cache das unidades?
  2. Como posso desativá-lo?

Eu uso o Mint 13 Maya com o kernel principal 3.6.8.

    
por Adam Ryczkowski 07.12.2012 / 11:40

2 respostas

2

Não tenho certeza se o cache de gravação das unidades de disco corrigirá o problema, pois parece que você está usando um dispositivo de loop. Portanto, ainda há o cache / arquivo da página entre o sistema de arquivos Btrfs e o disco real. O mesmo tipo de problema existe para sistemas de arquivos de registro no diário detalhado aqui para loop- AES . Assim, quando os dados são sincronizados com o seu dispositivo de loop, eles podem não estar no disco real, mas apenas em um cache, esperando para serem solicitados e gravados.

O ext4 não suporta a opção sync mount que o ext2 / 3 fez para desativar o armazenamento em cache. devido às camadas entre eu não tenho certeza, mesmo que você obtenha uma recuperação eficaz. Eu não sei o suficiente sobre os internals, infelizmente, pelo menos mais dados iriam para o disco.

Da mesma forma, você pode limitar o problema ajustando o cache de páginas para que o sistema grave no disco com mais frequência. O cache de páginas do Linux informa seus valores em /proc/meminfo em

"Dirty" - for pages that are currently dirty
"Writeback" - for dirty pages that are being written out to disk.

Existem arquivos em /proc/sys/vm/ que informam o status e controlam os threads flush que gravam dados no disco.

Você pode colocar um valor pequeno (maior que 8096 ou 2 páginas) em /proc/sys/vm/dirty_background_bytes para tornar o plano de fundo pdflush processe mais ativamente ou /proc/sys/vm/dirty_bytes para fazer um acionamento de processo flush mais ativamente (para uma penalidade de desempenho, ou pelo menos mais disco escreve em geral).

Acho improvável que o cache de gravação de hardware seja o principal problema. Se você estivesse apenas indo direto para o dispositivo via dm-crypt, então eu olharia para lá primeiro. Em qualquer caso, os caches de gravação IDE e SATA podem ser desativados com hdparm -W0 /dev/xdx .

Além disso, ao usar um sistema de arquivos, tecnicamente experimental, de uma forma mais abrangente do que a maioria, você pode ter mais sorte com um fs mais maduro, no qual as pessoas já tropeçaram nos problemas. Se você precisa de Btrfs, a melhor aposta seria fazer a criptografia para uma partição física.

    
por 07.12.2012 / 17:29
0

Até agora, encontrei uma maneira de definir o comportamento do cache de gravação para a partição física ( /dev/sda6 no meu caso):

sudo hdparm -W /dev/sda6 para inspecionar o comportamento de gravação e sudo hdparm -W0 /dev/sda6 para desabilitar o cache de gravação.

Mas é um exagero na minha situação; Eu quero apenas desativar o cache de gravação para o arquivo que suporta o dm-crypt, não a partição inteira.

    
por 07.12.2012 / 15:01