Corrupção de dados quando o cache de gravação em disco está ativado

Corrupção de dados quando o cache de gravação em disco está ativado

Aprendi recentemente que habilitar o cache de gravação em disco pode melhorar significativamente o desempenho do sistema. No entanto, estou preocupado com os riscos potenciais de corrupção ou perda de dados em caso de falha repentina de energia.

Aqui está algum contexto sobre minha configuração:

Sistema operacional: Windows Server 2012 R2

Tipo de disco: HDD SATA 3.0

Objetivo: estou pensando em ativar o cache de gravação em meu disco para aumentar o desempenho. Meu entendimento é que a corrupção de dados pode ocorrer se ocorrer uma falha de energia quando os dados no cache de gravação ainda não tiverem sido confirmados no disco, quando o sistema operacional falhar ou quando um aplicativo que acessa os dados falhar.

Durante minha pesquisa, encontrei os seguintes detalhes nesteArtigo, eles mencionaram "A corrupção de dados ocorre sem que os usuários percebam quando o cache de gravação dos discos ativos está habilitado e o disco executa uma leitura antecipada (RLA), que é encerrada prematuramente." . Não consegui entender o significado exato desta afirmação.

Há algum caso de corrupção de dados/corrupção de arquivos após a ativação do cache de gravação, mesmo quando nenhuma gravação de dados está ocorrendo no momento da falha de energia.

Responder1

Os sistemas de arquivos modernos (XFS, ZFS, JFS, ext4, APFS, NTFS, etc.) usam registro em diário, então sim, você perderá alguns dados (commits mais recentes e o que ainda não foi confirmado e armazenado em cache, isso é óbvio), mas não, você não experimentará nenhuma corrupção de dados.

Aqui estão algumas boas leituras com muitos diagramas e explicações detalhadas sobre o JFS da IBM. Tudo no artigo é 100% relevante para os outros sistemas de arquivos com registro em diário:

https://www.ibm.com/docs/en/aix/7.2?topic=types-journaled-file-system-jfs

De qualquer forma… Você tem que fazer backups! A chamada “regra de backup 3-2-2” é o que você deve seguir.

https://www.starwindsoftware.com/blog/3-2-1-backup-strategy-why-your-data-always-survives

Espero que isso tenha ajudado!

Responder2

Versão curta:não, usando um disco SATA moderno e um sistema de arquivos com diário, não é possível corromper gravações reconhecidas (ou seja: sincronizadas), mesmo quando o cache de disco está ativado. Por outro lado, gravações não sincronizadas (bufferizadas) podem ser perdidas/corrompidas em caso de perda de energia. No entanto, o artigo que você vinculou é sobre umproblema específico de firmwaree não fala sobre comportamento genérico ao usar cache de disco:

Ao realizar exercícios de teste de disco estendido,um problema latente de firmware foi descoberto.

Resposta longa:dois tipos de gravação podem ser emitidos:

  • gravações sincronizadas, que garantem persistência (e ordenação) aproveitando ATA FLUSHes ou FUAs;
  • gravações não sincronizadas (bufferizadas), que podem ser armazenadas em cache, agregadas e reordenadas pelo cache DRAM do disco.

Ao lidar com HDDs e SSDs de consumo, as gravações sincronizadas são muito lentas: o processo de liberação de qualquer gravação significa que a latência por E/S é paga em cada gravação. Portanto, as gravações de sincronização são geralmente reservadas para os IOs mais importantes: confirmação de diário, bancos de dados, entrega de e-mail, etc. Todas as outras gravações menos importantes (ou seja: uma cópia do arquivo do usuário) são emitidas como gravações em cache/buffer e os dados serão perdidos se houver perda de energia acontece no momento certo (até 30-60 anos após a gravação original).

Observe que as unidades PATA e SATA antigas mentiram para o sistema operacional, fingindo honrar as sincronizações e, na verdade, descartando o comportamento de limpeza necessário. Isso levou à sugestão de desabilitar totalmente o cache DRAM do disco (ou configurá-lo no modo somente leitura), para que quaisquer dados gravados fossem realmente armazenados nos pratos do disco (durável). Um disco com seu cache desabilitado trata efetivamente cada gravação como sincronizada, fornecendo garantias máximas de segurança com um ótimo custo de desempenho.

Observe que isso faznãosignifica que as gravações em buffer não podem ser perdidas: se ocorrer uma falha antes do sistema operacional liberar seus buffers, todos os dados não sincronizados serão perdidos. Por esse motivo, e considerando que os discos modernos (pós-2008) honram ATA FLUSHes ou (pós-2015) FUAs, o conselho comum atual é deixar o cache de disco ativado e confiar no sistema operacional para liberar gravações importantes.

SSDs e placas HW RAID com proteção contra perda de energiaescape dessa compensação entre desempenho e segurança tendo circuitos integrados para armazenar em cache com segurançaqualquerescreve (mesmo sincronizar). De qualquer forma, ao usar uma placa HW RAID, a forma como o cache do disco será gerenciado depende da implementação (ou seja: PERC desativa-o para discos SAS, mas não para discos SATA).

informação relacionada