No RAID1, se a energia for perdida e alguns dados no cache de gravação forem gravados em um disco rígido, mas não em outro, as unidades terão dados discordantes para alguns blocos. Acho que, dependendo do sistema RAID exato que você está usando, é possível que o sistema balanceie as leituras entre as duas unidades. Se o sistema não “esfregar” o array após um desligamento sujo antes de retornar os dados para o leitor, ele poderá retornar dados diferentes para o mesmo bloco em leituras subseqüentes. Ou seja, você pode ler um arquivo e ver os dados em um disco, liberar seus caches de leitura e, em seguida, ler o mesmo arquivo novamente e obter os dados do outro disco que podem ser diferentes.
Eu acho (não tenho certeza) que, quando vi o MD (software RAID) do Linux após uma reinicialização, ele parece executar automaticamente um scrub e se recusar a retornar blocos específicos até verificar se cada bloco foi removido. Mas não tenho certeza se era isso que estava realmente fazendo. Além disso, não sei como os controladores RAID de hardware lidam com essa situação.
Observe que, mesmo que essa depuração ocorra, se o cache de gravação não preservar a ordem das gravações em cada disco, o sistema de arquivos poderá estar corrompido, mesmo se estiver em diário. Suponho que o cache de gravação ao qual você está se referindo esteja no SO sobre as gravações que realmente foram concluídas, o que significa que quaisquer suposições feitas por um sistema de arquivos sobre persistência são violadas propositadamente por causa do desempenho. Parece que os backups de bateria se destinam a garantir que as gravações que o sistema de arquivos considera concluídas sejam realmente concluídas de forma que, quando a matriz for remontada, os dados que o sistema de arquivos considerou terem sido gravados retornem na leitura.
Desculpe, eu não tenho respostas, levanto as preocupações / perguntas que me preocupariam nesse cenário.