Prós e contras do software Parity-RAID (por exemplo, RAID5)

8

Recentemente, fui informado sobre alguns problemas relacionados a Parity-RAIDs sem um cache não volátil. Controladores HW mais caros têm caches alimentados por bateria para concluir as operações de gravação em caso de falta de energia. Agora, algumas pessoas dizem que essa falha, talvez em combinação com uma matriz degradada, pode matar todo o sistema de arquivos. Outros afirmam que esses problemas estão desatualizados e / ou equívocos .

Infelizmente, ninguém fornece referências concretas e nem procura md RAID e cache não volátil , nem cache de bitmap fornece respostas confiáveis ​​sobre se md-RAID5 é aconselhável ou não.

Alguma informação sobre isso?

user773568
fonte
1
O mdraid do Linux possui um diário, que pelo menos é seguro em caso de parada repentina (ou seja, falha do sistema ou todos os discos desligam ao mesmo tempo), ou no caso do RAID-1. Não sei se o RAID- [56] lida com todas as formas de redução gradual de energia.
Gilles 'SO- stop be evil' ''
2
@Gilles, ele não possui um diário, mas possui um bitmap de intenção de gravação opcional. Isso apenas acelera o processo de ressincronização quando o sistema retorna, porque identifica quais áreas precisam ser ressincronizadas e quais áreas podem ser ignoradas.
Psusi 11/07/11
Voltei e verifiquei o que havia pesquisado alguns meses atrás . Até onde eu entendi, o bitmap com intenção de gravação (não um diário, meu erro) faz mais do que acelerar a ressincronização, indica quais componentes têm um bloco sujo, portanto é suficiente para garantir a consistência do bloco no RAID-1, mas não no RAID-5 (onde você pode não ter discos suficientes no estado antigo e no novo para restaurar ambos).
Gilles 'SO- stop be evil' (
1
@ Gilles Não sei ao certo o que você quer dizer com "consistência bock". Parece que você desligou a faixa inteira no estado antes do início da gravação ou no estado depois. Isso nunca é garantido e provavelmente não será o caso se a energia falhar no meio da gravação. Cabe ao sistema de arquivos lidar com isso da mesma maneira que em um único disco; usando o diário.
Psusi 12/07/11

Respostas:

4

Presumo que o RAID de software do Linux seja tão confiável quanto uma placa RAID de hardware sem uma BBU e com o cache de write-back ativado. Afinal, os dados não confirmados em um sistema RAID de software residem no cache de buffer do kernel, que é uma forma de cache de write-back sem backup de bateria.

Como todas as placas RAID-5 de hardware que já usei permitem ativar o cache de write-back sem ter uma BBU, espero que o software RAID-5 funcione bem para pessoas com um certo nível de tolerância a riscos.

ObWarStory:

Dito isto, experimentei pessoalmente uma séria perda de dados devido a não haver um BBU instalado em uma placa RAID-5, embora o cache de write-back estivesse ativado. (Sem UPS também. Não grite comigo, não é minha ligação.)

Meu chefe me chamou de pânico enquanto eu estava de férias porque um de nossos sistemas de produção não voltava depois de uma queda de energia. Ele ficou sem coisas para tentar. Eu tive que sair para a beira da estrada, puxar o laptop, ligar o Wi-Fi no meu telefone, sshentrar no sistema danificado e consertá-lo, enquanto minha família ficava comigo na beira da estrada até terminar restaurando uma tabela de banco de dados roqueada do backup. (Estávamos a cerca de um quilômetro e meio de perder a recepção de células na época.)

Então me diga: quanto você pagaria por um cartão RAID + BBU agora ?

Warren Young
fonte
Certo - eu apaguei meu comentário. Mas uma invasão sem BBU deve ser aprovada, não é? Isso é pelo menos o que os controladores PERC fazem quando a bateria aprende e fica abaixo do limite.
Nils
Sim, sem uma BBU ou com uma BBU morta, o cartão RAID ainda grava dados. O que isso não faz é lembrar o que estava no buffer de gravação quando a energia falha no servidor. Como o RAID depende da consistência entre os bits redundantes, fica confuso quando se torna inconsistente. Portanto, uma falha de energia durante a gravação do RAID corre o risco de corromper algo no RAID, porque o controlador é forçado a escolher uma das duas ou mais cópias dos dados, sem saber qual é o correto.
Warren Young
3

Apenas um aviso: as operações de gravação RAID-5/6 levam um tempo significativo da CPU enquanto a matriz está degradada. Se seu servidor já estiver totalmente carregado quando um disco falhar, ele poderá cair em um abismo de falta de resposta. Esse problema não acontecerá com um controlador RAID de hardware. Portanto, eu desaconselho fortemente o uso do software RAID-5/6 em um servidor de produção. Para uma estação de trabalho ou servidor com pouca carga, tudo bem.

wazoox
fonte
3

O SW RAID tem um modo de falha - se o servidor ficar inativo no meio de uma gravação, você poderá obter uma faixa corrompida. Um controlador HW RAID com uma BBU não é tão caro e reterá blocos sujos até que você possa reiniciar os discos.

A BBU no cache não garante gravações em caso de falta de energia (ou seja, não energiza os discos). Ele alimenta o cache por alguns dias até que você possa reiniciar os discos. Em seguida, o controlador liberará os buffers sujos para o disco.

Algumas notas sobre SW vs. HW RAID-5

  1. As gravações em um volume SW RAID-5 podem ser lentas se o cache de gravação for usado com o bloqueio de E / S, pois a chamada não retornará até que todas as E / S tenham sido concluídas. Um controlador RAID HW com um BBWC pode otimizar isso consideravelmente, para que você possa ver um desempenho substancialmente melhor.

  2. A última vez que procurei, não era possível fazer E / S direta (ou seja, DMA de cópia zero) em um volume SW RAID. Isso pode ter mudado e é realmente relevante apenas para aplicativos como gerenciadores de banco de dados que usam partições brutas.

  3. Um controlador RAID SAS moderno pode extrair ou enviar 1 GB / s ou mais de dados de uma matriz de disco, principalmente se formatado com um tamanho de faixa grande (por exemplo, 256 kb). Eu até comparei um Adaptec ASR-2200s mais antigo a velocidades que indicavam que ele estava saturando ambos os canais scsi a 600MB / s + em agregado (discos de 10x15k) com muito pouca carga de CPU na máquina host. Não tenho certeza de que você possa tirar isso do software RAID-5 sem muita carga de CPU, mesmo em uma máquina moderna. Talvez você possa ler isso rapidamente.

  4. A configuração para inicializar a partir de um volume HW RAID é simples - o volume RAID é transparente para o sistema operacional.

Um controlador RAID low-end de um fornecedor de nível 1, como a adaptec, não é tão caro a preços de varejo e pode ser comprado por amendoins fora do ebay. Mas lembre-se, se você comprar de segunda mão, atenha-se aos fornecedores de nível 1 e verifique o modelo e verifique a disponibilidade dos drivers em seu site.

Edit: No comentário do @ psusi, certifique-se de não ter um controlador fakeraid (SW RAID transparente escondido no driver), mas a maioria das ofertas dos nomes maiores (Adaptec, 3Ware ou LSI) não são unidades fakeraid. Qualquer coisa que possa pegar uma BBU não será falsificada.

ConcernedOfTunbridgeWells
fonte
Se a energia falhar no meio de uma gravação, você receberá uma faixa que está fora de sincronia e não está corrompida. Uma faixa fora de sincronia significa apenas que a paridade não está atualizada; portanto, quando a matriz é montada, a paridade deve ser atualizada. Além disso, os controladores de "invasão" que podem ser adquiridos com amendoim são geralmente falsos; eles têm extensões da BIOS e drivers do Windows que fazem o ataque no software.
Psusi
@psusi - A maioria dos controladores ASR-2200 que comprei há alguns anos tinha menos de 100 dólares e são controladores pukka HW RAID. Não acho que a Adaptec realmente faça controladores fakeraid. Você pode facilmente obter os controladores Adaptec, 3Ware ou LSI SAS RAID de 4 ou 8 portas do ebay por algumas centenas de dólares.
ConcernedOfTunbridgeWells
Eu não chamaria algumas centenas de dólares por um produto usado de uma fonte desconhecida "centavos"; isso indica mais na faixa de US $ 50 a US $ 100 para um novo produto. Os dispositivos dessa classe geralmente são falsos.
Psd #
@psusi - Você está tentando rejeitar um argumento que nunca fiz; Eu nunca usei a palavra 'centavos'. Por favor, não recorra a argumentos do homem de palha - os exemplos que eu usei não são controladores falsos.
ConcernedOfTunbridgeWells
1

Se você tiver dados no cache, mas ainda não no disco, e a energia falhar, os dados desaparecerão e é provável que o disco esteja em um estado inconsistente. A probabilidade disso não é muito alta, a menos que você tenha um sistema que esteja constantemente escrevendo, mas eu ainda não gostaria de apostar meus dados em jogos de probabilidade.

Uma reviravolta interessante seria criar um sistema de arquivos principal no RAID5 / 6, mas colocar um diário em uma unidade comum, para que os dados sejam despejados primeiro na unidade comum. O desempenho provavelmente iria para o crapper, pois você estaria limitado à velocidade de gravação de uma única unidade, mas a confiabilidade aumentaria. Então, acho que em uma situação em que seu desempenho de gravação não é importante, mas sua leitura é que pode funcionar bem.

Ou você pode simplesmente gastar outros US $ 100,00 e adquirir o cartão com a BBU ou uma pequena UPS e evitar todas essas complicações;)

Marcin
fonte
O que você acha de um diário em um SSD rápido?
user773568
Isso seria suficiente, mas nesse momento você está pagando mais do que um controlador decente;) Além disso, a velocidade aumenta, mas a confiabilidade diminui, porque a maioria dos SSDs morre muito rapidamente.
Marcin
1
@ Marcin em que você baseia isso? Eles não parecem ter uma vida útil de design mais curta, e eu tenho um há mais de um ano e utilizei apenas 5% de seus ciclos de gravação.
psusi 12/07/11
@MarcinWell Quando você diz confiabilidade, isso é segurança ou disponibilidade? Não esperava que perder meu diário ameace os dados gerais. Faz? De qualquer forma, pretendo colocar o SO e o Swap em um SSD menor, devido a razões de ruído e economia de energia. O RAID pode dormir dessa maneira.
user773568
Os SSDs da MLC têm um histórico de problemas de confiabilidade. As unidades SLC são muito mais confiáveis, mas também muito mais caras. Um papel branco sobre a confiabilidade SSD pode ser encontrada aqui
ConcernedOfTunbridgeWells
1

O ataque mdadm do software Linux foi projetado para ser tão confiável quanto um ataque de hardware com cache com bateria. Não há problemas com perda súbita de energia, além daqueles que também se aplicam à perda súbita de energia em um único disco.

Quando o sistema retorna após falha de energia, a matriz é ressincronizada, o que basicamente significa que a paridade é recalculada para corresponder aos dados que foram gravados antes da falha de energia. Leva algum tempo, mas realmente, não é grande coisa. O tempo de ressincronização pode ser bastante reduzido, ativando o bitmap com intenção de gravação.

psusi
fonte
1
Isso parece um pouco otimista. Como uma solução de software pura pode ser tão confiável quanto um cache com bateria?
user773568
1
Há coisas ruins que podem acontecer com uma matriz RAID que não podem acontecer com um único disco. Com um único disco, todos os setores estão no estado antigo ou no novo. Com, por exemplo, RAID-5 acima de 4 + 1 discos, e se o setor 42 dos discos 1 e 2 estiver no estado antigo e o setor 42 dos discos 3, 4 e 5 estiverem no novo estado? Nem o estado antigo nem o novo estado são recuperáveis. Não sei se o Linux toma medidas para evitar isso, e é disso que se trata.
Gilles 'SO- stop be evil'
@ user773568 umm ... Acabei de explicar como?
psusi 12/07/11
@ Gilles, você acabou de reafirmar o mesmo caso do disco único. Alguns setores estão no estado antigo e outros no novo estado. Não importa em que disco eles estejam. Os sistemas de arquivos lidam com gravações incompletas durante uma falha no diário.
psusi 12/07/11
@psusi Não: com um único disco, cada setor está no novo estado ou no estado antigo. Com vários discos, se o driver usar a abordagem ingênua de substituir o setor em cada disco sem armazenar informações em outro lugar, um setor que estava em um estado transitório (estado antigo em alguns discos, novo estado em outros) não poderá ser recuperado. O erro pode ser detectado (se você tiver sorte: a paridade pode corresponder por acidente), mas não pode ser corrigida.
Gilles 'SO- stop be evil'
1

Aqui está um blog explicando o problema com o RAID5 e como o ZFS RAIDZ está resolvendo isso .

Seus pontos principais são:

O RAID-5 (e outros esquemas de dados / paridade, como RAID-4, RAID-6, ímpar e paridade diagonal das linhas) nunca cumpriu a promessa de RAID - e não pode - devido a uma falha fatal conhecida como o orifício de gravação RAID-5. Sempre que você atualiza os dados em uma faixa RAID, também deve atualizar a paridade, para que todos os discos XOR sejam zero - é essa equação que permite reconstruir os dados quando um disco falha. O problema é que não há como atualizar dois ou mais discos atomicamente, para que as faixas RAID possam ser danificadas durante uma falha ou falta de energia.

e

O RAID-Z é um esquema de dados / paridade como o RAID-5, mas usa largura de faixa dinâmica. Cada bloco é sua própria faixa RAID-Z, independentemente do tamanho do bloco. Isso significa que toda gravação RAID-Z é uma gravação de faixa completa. Isso, quando combinado com a semântica transacional de cópia na gravação do ZFS, elimina completamente o furo de gravação RAID.

jlliagre
fonte