Estou familiarizado com o que um BBWC (cache de gravação com bateria) pretende fazer - e os usei anteriormente em meus servidores, mesmo com um bom no-break. Há falhas óbvias para as quais não fornece proteção. Estou curioso para entender se ele realmente oferece algum benefício real na prática.
(NB, estou procurando especificamente respostas de pessoas que têm BBWC e tiveram falhas / falhas e se o BBWC ajudou na recuperação ou não)
Atualizar
Após o feedback aqui, estou cada vez mais cético quanto à possibilidade de um BBWC agregar algum valor.
Para ter alguma confiança sobre a integridade dos dados, o sistema de arquivos DEVE saber quando os dados foram comprometidos com o armazenamento não volátil (não necessariamente o disco - um ponto em que voltarei). Vale a pena notar que muitos discos ficam sobre quando os dados foram confirmados no disco ( http://brad.livejournal.com/2116715.html ). Embora pareça razoável supor que a desativação do cache no disco possa tornar os discos mais honestos, ainda não há garantia de que esse seja o caso.
Devido aos buffers tipicamente grandes em um BBWC, uma barreira pode exigir que muito mais dados sejam comprometidos no disco, causando atrasos nas gravações: o conselho geral é desativar as barreiras ao usar um cache de gravação não volátil (e desativar o cache de disco). No entanto, isso parece comprometer a integridade da operação de gravação - apenas porque mais dados são mantidos no armazenamento não volátil não significa que eles serão mais consistentes. De fato, sem dúvida, sem demarcação entre transações lógicas, parece haver menos oportunidade de garantir consistência do que de outra forma.
Se o BBWC reconhecesse as barreiras no momento em que os dados entram no armazenamento não volátil (em vez de estar comprometido com o disco), ele pareceria satisfazer o requisito de integridade dos dados sem uma penalidade de desempenho - o que implica que as barreiras ainda devem estar ativadas. No entanto, como esses dispositivos geralmente exibem um comportamento consistente com a liberação dos dados para o dispositivo físico (significativamente mais lento com barreiras) e os conselhos gerais para desativar barreiras, eles não podem, portanto, se comportar dessa maneira. POR QUE NÃO?
Se a E / S no SO for modelada como uma série de fluxos, haverá algum escopo para minimizar o efeito de bloqueio de uma barreira de gravação quando o cache de gravação for gerenciado pelo SO - uma vez que nesse nível apenas a transação lógica (um único fluxo ) precisa ser comprometido. Por outro lado, um BBWC sem conhecimento de quais bits de dados compõem a transação precisaria comprometer todo o cache em disco. Se o kernel / sistema de arquivos realmente implementa isso na prática exigiria muito mais esforço do que estou disposto a investir no momento.
Uma combinação de discos informando mentiras sobre o que foi cometido e perda repentina de poder indubitavelmente leva à corrupção - e com um sistema de arquivos estruturado em diário ou log que não faz um fsck completo após uma interrupção, é improvável que a corrupção seja detectada e muito menos. uma tentativa feita para repará-lo.
Em termos de modos de falha, na minha experiência, a maioria das quedas repentinas de energia ocorre devido à perda de energia da rede elétrica (facilmente mitigada com um no-break e desligamento gerenciado). As pessoas que puxam o cabo errado do rack implicam em baixa higiene do datacenter (rotulagem e gerenciamento de cabos). Existem alguns tipos de eventos repentinos de perda de energia que não são impedidos por um no-break - uma falha no PSU ou no VRM, um BBWC com barreiras forneceria integridade dos dados no caso de uma falha aqui, no entanto, quão comuns são esses eventos? Muito raro a julgar pela falta de respostas aqui.
Certamente, mover a tolerância a falhas mais alta na pilha é significativamente mais caro no BBWC - no entanto, implementar um servidor como um cluster tem muitos outros benefícios em termos de desempenho e disponibilidade.
Uma maneira alternativa de mitigar o impacto da perda repentina de energia seria implementar uma SAN - AoE faz disso uma proposta prática (eu realmente não entendo o ponto no iSCSI), mas, novamente, há um custo mais alto.