Por que o RAID 1 + 6 não é um layout mais comum?

17

Por que os níveis de RAID aninhados 1 + 5 ou 1 + 6 são quase desconhecidos? O artigo da Wikipedia sobre níveis RAID aninhados está ausente nas seções. Não entendo por que eles não são mais comuns que o RAID 1 + 0, especialmente quando comparado ao espelhamento triplo do RAID 1 + 0.

É aparente que o tempo de reconstrução está se tornando cada vez mais problemático, pois as capacidades da unidade estão aumentando mais rapidamente do que seu desempenho ou confiabilidade. Disseram-me que o RAID 1 é reconstruído mais rapidamente e que uma matriz RAID 0 de pares RAID 1 evita o problema, mas certamente o faria uma matriz RAID 5 ou 6 de pares RAID 1. Eu pelo menos esperaria que eles fossem uma alternativa comum ao RAID 1 + 0.

Para 16 dos drives de 1 TB, aqui estão meus cálculos da probabilidade ingênua de recorrer ao backup, ou seja, com a suposição simplificada de que os drives são independentes com probabilidade uniforme:

RAID | storage | cumulative probabilities of resorting to backup /m
 1+0 |     8TB | 0, 67, 200, 385, 590, 776, 910, 980, 1000, 1000, 1000
 1+5 |     7TB | 0,  0,   0,  15,  77, 217, 441, 702,  910, 1000, 1000
 1+6 |     6TB | 0,  0,   0,   0,   0,   7,  49, 179,  441,  776, 1000
(m = 0.001, i.e. milli.)

Se isso estiver correto, é bastante claro que o RAID 1 + 6 é excepcionalmente mais confiável que o RAID 1 + 0, apenas para uma redução de 25% na capacidade de armazenamento. Como é o caso em geral, a taxa de transferência teórica de gravação (sem contar os tempos de busca) é a capacidade de armazenamento / tamanho da matriz × número de unidades × taxa de transferência de gravação da unidade mais lenta da matriz (os níveis de RAID com redundância têm uma amplificação de gravação mais alta para gravações que não preencha uma faixa, mas isso depende do tamanho do pedaço), e a taxa de transferência de leitura teórica é a soma das taxas de transferência de leitura das unidades na matriz (exceto que RAID 0, RAID 5 e RAID 6 ainda podem ser teoricamente limitados por as taxas de leitura mais lenta, 2ª mais lenta e 3ª mais lenta, respectivamente). Ou seja, assumindo unidades idênticas, que seriam respectivamente 8 ×, 7 ×,

Além disso, considere um quádruplo RAID 0 de triplos RAID 1, ou seja, espelhamento triplo RAID 1 + 0 de 12 unidades e um sextuplo RAID 6 de pares RAID 1, ou seja, RAID 1 + 6 de 12 unidades. Novamente, essas são unidades de 1 TB idênticas. Ambos os layouts têm o mesmo número de unidades (12), a mesma quantidade de capacidade de armazenamento (4 TB), a mesma proporção de redundância (2/3), a mesma taxa de transferência máxima de gravação (4 ×) e a mesma taxa de transferência máxima de leitura ( 12 ×). Aqui estão meus cálculos (até agora):

RAID      | cumulative probabilities of resorting to backup /m
1+0 (4×3) | 0, 0, 18,  ?,   ?,   ?,   ?,   ?, 1000
1+6 (6×2) | 0, 0,  0,  0,   0,  22, 152, 515, 1000

Sim, isso pode parecer um exagero, mas onde o espelhamento triplo é usado para separar um clone para backup, o RAID 1 + 6 também pode ser usado, simplesmente congelando e removendo 1 de cada unidade de todos, exceto 2 do RAID 1 pares e, ao fazê-lo, ainda tem uma confiabilidade muito melhor quando degradada do que a matriz RAID 1 + 0 degradada. Aqui estão meus cálculos para 12 unidades degradadas por 4 desta maneira:

RAID      | cumulative probabilities of resorting to backup /m
1+0 (4×3) | (0, 0, 0, 0), 0, 143, 429, 771, 1000
1+6 (6×2) | (0, 0, 0, 0), 0,   0,  71, 414, 1000

A taxa de transferência de leitura, no entanto, pode ser reduzida para 6 × durante esse tempo para o RAID 1 + 6, enquanto o RAID 1 + 0 é reduzido apenas para 8 ×. No entanto, se uma unidade falhar enquanto a matriz estiver nesse estado degradado, a matriz RAID 1 + 6 teria 50 a 50 chances de permanecer em cerca de 6 × ou ficar mais limitada a 5 ×, enquanto a matriz RAID 1 + 0 ser limitado a um gargalo de 4 × . A taxa de transferência de gravação não deve ser afetada (pode até aumentar se as unidades tomadas para backup forem as mais lentas e limitantes).

De fato, ambos podem ser vistos como 'espelhamento triplo' porque a matriz RAID 1 + 6 degradada é capaz de separar um grupo RAID 6 adicional de 4 unidades. Em outras palavras, esse layout RAID 1 + 6 de 12 unidades pode ser dividido em 3 matrizes RAID 6 degradadas (mas funcionais)!

Então, é que a maioria das pessoas não estudou a matemática em detalhes? Estaremos vendo mais RAID 1 + 6 no futuro?

James Haigh
fonte
2
Parece que o seu cálculo de saída não levou em consideração a amplificação de gravação para criar a paridade.
`` #
1
@ JamesRyan: Sim, eu realmente considerei que a paridade precisa ser escrita. É para isso que serve a “capacidade de armazenamento / tamanho da matriz” - o recíproco é o fator de amplificação de gravação, não incluindo a amplificação adicional de gravação associada a unidades de estado sólido. Observe que isso inclui a amplificação de gravação da redundância RAID 1 também. Basicamente, o fator de amplificação de gravação é igual ao recíproco de 1 menos a proporção de redundância. Portanto, 50% de redundância fornece um fator de amplificação de gravação de 2; A redundância de 62,5% (10/16) fornece um fator de amplificação de gravação de ~ 2,67 (16/6).
James Haigh
1
não, isso está incorreto. Cada gravação RAID6 leva 6 IOs e cada gravação RAID1 leva 2 IOs, estas são multiplicativas. Portanto, no RAID 1 + 6, cada gravação terá 12 E / S, pois o RAID 10 são 2 E / S. A taxa de transferência de gravação em 12 unidades será 1x para RAID1 + 6 e 6x para RAID10!
22415 JamesRyan
@ JamesRyan: Ah, eu vejo aonde você está indo agora - para gravações com menos de uma faixa completa, o fator de amplificação de gravação pode dobrar para RAID 1 + 6, reduzindo pela metade a taxa de transferência máxima de gravação. Para uma faixa completa, sim, existem 12 gravações no exemplo 6 × 2, mas você esquece que se trata de 4 pedaços de dados. Para 4, 3, 2, 1 blocos, respectivamente, os fatores de amplificação de gravação são (6 × 2) / 4 = 3, (5 × 2) / 3 = ~ 3,33, (4 × 2) / 2 = 4, ( 3 × 2) / 1 = 6, fornecendo taxas de transferência máximas de gravação de 4 ×, 3,6 ×, 3 ×, 2 ×. Para RAID 1 + 0 4 × 3, é (4 × 3) / 4, (3 × 3) / 3, (2 × 3) / 2, (1 × 3) / 1, dando uma constante 4 ×. ...
James Haigh
2
Você declarou com base em seus cálculos que o RAID1 + 6 tem a mesma taxa de transferência de gravação que o RAID10 com triplos. Na realidade, o RAID1 + 6 nem sequer remotamente registra a taxa de transferência do RAID10; portanto, seus cálculos ou suposições estão baseados erradamente . Eu estava tentando ajudá-lo a entender por que, se você se recusar a ouvir, podemos estar desperdiçando nosso tempo, mas é você quem está desperdiçando.
21415 JamesRyan

Respostas:

17

Geralmente, eu diria que o RAID 1 + 0 tenderá a ser mais amplamente usado que 1 + 5 ou 1 + 6, porque o RAID 1 + 0 é confiável o suficiente e fornece um desempenho marginalmente melhor e armazenamento mais utilizável.

Eu acho que a maioria das pessoas consideraria o fracasso de um par completo de RAID 1 dentro do grupo RAID 1 + 0 como um evento incrivelmente raro que vale a pena interromper os backups - e provavelmente não está muito entusiasmado com a redução de 50% de sua capacidade física. disco como espaço utilizável.

Se você precisar de uma confiabilidade melhor que o RAID 1 + 0, vá em frente! ..mas a maioria das pessoas provavelmente não precisa disso.

Shane Madden
fonte
1
O problema que tenho com o RAID 1 + 0 é que ele tem uma proporção ruim de confiabilidade para armazenamento. Se o RAID 6 fosse arbitrariamente extensível a qualquer número de paridades (abaixo de n - 1), para as mesmas unidades, você poderia obter maior armazenamento e melhor confiabilidade do que o RAID 1 + 0. Para o exemplo acima, se fosse possível ter o RAID 6 com 4 paridades, você teria 50% mais armazenamento e taxa de transferência máxima de gravação do que o RAID 1 + 0, mas teria uma confiabilidade excepcionalmente mais alta. O RAID 6 com 3 ou 4 paridades teria um bom compromisso entre confiabilidade e armazenamento.
James Haigh
4
@JamesHaigh RAID 6 vs RAID 1 + 0 é uma discussão muito diferente de RAID 1 + 6 vs RAID 1 + 0, você meio que mudou de assunto. O raidz3 do ZFS parece que seria o seu beco? De qualquer forma, no seu ponto de vista, existem algumas vantagens de desempenho que o RAID 1 + 0 mantém sobre o RAID 6, como pequenas gravações em bloco único que precisam tocar em um número muito menor de unidades (e voltando ao raidz3, o ZFS lida com isso de maneira inteligente, escrevendo vários cópias completas em vez de gravar em todos os discos para gravações pequenas)
Shane Madden
Desculpe, sim, acho que é isso que estou perseguindo. Desde esse último comentário, escrevi uma nova pergunta especificamente sobre RAID com 3 ou mais paridades . Isso seria melhor do que o RAID 1 + 6, eu acho. Também seria mais flexível e mais simples obter o trade-off desejado. Você pode continuar com essa pergunta.
James Haigh
3
O RAID 6 não pode ser estendido linearmente, porque não funciona dessa maneira. O cálculo da síndrome para segunda paridade não será trivialmente escalável para terceiros. Mas você pode facilmente criar grupos menores de RAID 6 - não há motivo real para fazer 14 + 2 e, em vez disso, fazer 2 + 2 ou 4 + 2 e ganhar muita confiabilidade.
Sobrique
1
@JamesHaigh O que você parece querer é um raidz8 de 12 vias. Com base na lógica que entra nos cálculos de paridade, isso vai atrelar os processadores em perpetuidade, mesmo com dados triviais. A paridade única é essencialmente XOR (fácil). Paridade dupla é algo a ver com quadrados (não é difícil, mas não é fácil). A paridade tripla é baseada em cubo ou similar (difícil). A paridade de 4, 5, 6, 7 ou 8 exige cálculos ainda maiores (em escala exponencial) (que podem precisar de computadores quânticos para acompanhar). Lembre-se de que, à medida que a forma aumenta, há ZERO aumento de IOPS. Para a mídia, quem se importa? Para VMs, mata.
Killermist
16

A resposta prática está em algum ponto da interseção das especificações do controlador RAID de hardware, tamanhos médios de disco, fatores de forma da unidade e design do servidor.

A maioria dos controladores RAID de hardware é limitada nos níveis de RAID suportados. Aqui estão as opções de RAID para um controlador HP ProLiant Smart Array:

[raid=0|1|1adm|1+0|1+0adm|5|50|6|60]

nota: o "adm" é apenas o espelhamento triplo

Controladores LSI RAID suportam: 0, 1, 5, 6, 10, 50, and 60

Portanto, esses controladores são capazes apenas de RAID 50 e 60 como níveis aninhados. O LSI (ou Dell PERC ) e a HP compreendem a maior parte do mercado de adaptadores de armazenamento para servidores corporativos. Essa é a principal razão pela qual você não vê algo como RAID 1 + 6 ou RAID 61 em campo.

Além dessa consideração, os níveis de RAID aninhados além do RAID 10 requerem um número relativamente grande de discos. Dadas as crescentes capacidades de unidade disponíveis atualmente (com unidades SAS e SATA nearline de 3,5 "), juntamente com o fato de muitos chassis de servidor serem projetados em torno de compartimentos de unidade de 8 x 2,5", não há muita oportunidade de configurar fisicamente o RAID 1+ 6 ou RAID 61.

As áreas em que você pode ver algo como RAID 1 + 6 seriam grandes soluções RAID de software de chassi. O MD MD RAID ou o ZFS do Linux são definitivamente capazes disso. Porém, a essa altura, a falha da unidade pode ser atenuada por discos quentes ou de reposição a frio. Atualmente, a confiabilidade do RAID não é um problema muito grande, desde que você evite combinações tóxicas de nível e hardware de RAID (por exemplo, discos RAID 5 e 6 TB). Além disso, o desempenho de leitura e gravação seria abstraído por camadas e camadas de armazenamento em cache. As cargas de trabalho médias de armazenamento geralmente se beneficiam de uma ou de outra.

Então, no final, parece que a necessidade / demanda simplesmente não existe.

ewwhite
fonte
1
Há uma demanda na forma de replicação de matriz. Conheço vários sites que realizam DR em vários sites, que praticamente fala RAID 10 ou 5 ou 6 replicados em um site remoto (RAID 10 ou 5 ou 6) remoto. Em grande parte - além de um certo nível de confiabilidade do disco, seus processadores, controladores, redes, energia, ar-condicionado e incêndio no centro de dados são ameaças maiores à sua confiabilidade.
Sobrique
1
Acho que o OP nem considerou a replicação ou o uso de vários sites.
ewwhite
1
Não, provavelmente não. Como você diz - simplesmente não há demanda porque é um exagero. É o único caso de uso que eu posso pensar de onde ele não é um exagero embora :)
Sobrique
Eu (brevemente) configurei algo como um ataque 6 + 1 - um sincronizador local da Netapp criará uma cópia idêntica de si mesmo e leituras multiplex em ambos os plexos, enquanto espelha gravações. É usado principalmente para migrar o Netapp V-Series para novos LUNs de back-end; no entanto, se eu quisesse dobrar minha confiabilidade, poderia fazer isso com isso.
Basil
12
  • Você tem retornos decrescentes de confiabilidade. É pouco provável que o RAID 6 componha falhas mesmo em unidades SATA desagradáveis ​​com uma taxa de 1 em 10 ^ 14 UBER. Em unidades FC / SAS, seu UBER é de 1 em 10 ^ 16 e você obtém consideravelmente mais desempenho.

  • A confiabilidade do grupo RAID não protege você contra exclusão acidental. (então você precisa dos backups de qualquer maneira)

  • além de certos níveis de RAID, suas chances de falha composta em discos se tornam menores do que a falha composta de infraestrutura de suporte (energia, rede, vazamento de ar condicionado, etc.)

  • Escreva penalidade. Cada gravação recebida no seu RAID 61 acionará 12 operações de E / S (ingenuamente realizadas). O RAID 6 já é doloroso em cenários de 'baixo nível' em termos de PIOs por gravação aleatória de TB. (e em níveis mais altos, sua taxa de falhas é 100x melhor de qualquer maneira)

  • não é 'redução de 25%', é mais uma redução de 25%. Seu 16TB está se transformando em 6TB. Então você está recebendo 37,5% de armazenamento utilizável. Você precisa de 3x o número de discos por capacidade e de 3x o máximo de espaço no datacenter. Você provavelmente obteria mais confiabilidade simplesmente criando conjuntos RAID6 menores. Não fiz o processamento de números, mas tente - por exemplo, as somas de RAID 6 em conjuntos de 3 x 3 + 2 (15 unidades, menos sobrecarga de armazenamento que o seu RAID10). Ou fazendo espelhos de 3 vias.

Dito isto, é mais comum do que você pensa em fazer DR em vários sites. Executo matrizes de armazenamento replicadas nas quais tenho grupos RAID5 / 6 / DP RAID de forma assíncrona ou síncrona em um site de recuperação de desastres. (Não faça a sincronização se você puder evitá-la - parece bom, é realmente horrível).

Com meu NetApps, esse é um metrocluster com alguns agregados espelhados. Com meus VMAXes, temos o Symmetrix Remote Data Facility (SRDF). E meus 3PARs fazem cópias remotas.

É caro, mas fornece os níveis de DR de 'data center pegando fogo'.

Em relação aos espelhos triplos - eu os usei, mas não como medidas diretas de resiliência RAID, mas como clones completos como parte de uma estratégia de backup. Sincronize um terceiro espelho, divida-o, monte-o em um servidor separado e faça backup usando uma infraestrutura totalmente diferente. E às vezes gire o terceiro espelho como uma opção de recuperação.

O ponto que estou tentando destacar é que, em minha experiência direta como administrador de armazenamento - em uma área de aproximadamente 40.000 eixos (sim, estamos substituindo dezenas de unidades diariamente) - tivemos que fazer backups para uma variedade de razões nos últimos 5 anos, mas nenhuma delas foi falha do grupo RAID. Debatemos os méritos relativos e o tempo de recuperação aceitável, o ponto de recuperação e as janelas de interrupção. E apoiar tudo isso SEMPRE é o custo da resiliência extra.

Nossa matriz prevê toda a eliminação e falha de mídia, além de poupar e testar agressivamente as unidades.

Mesmo que houvesse uma implementação adequada de RAID, o custo-benefício simplesmente não existe. O dinheiro gasto no espaço de armazenamento seria melhor investido em uma retenção mais longa ou em um ciclo de backup mais frequente. Ou comunicações mais rápidas. Ou apenas eixos geralmente mais rápidos, porque mesmo com números de resiliência idênticos, a reconstrução mais rápida de peças aumenta a probabilidade de falha composta.

Portanto, acho que ofereceria a resposta para sua pergunta:

Você não vê o RAID 1 + 6 e 1 + 5 com muita frequência, porque o custo-benefício simplesmente não se compara. Dada uma quantidade finita de dinheiro e dada a necessidade de implementar uma solução de backup em primeiro lugar, tudo o que você está fazendo é gastar dinheiro para reduzir sua frequência de interrupções. Existem melhores maneiras de gastar esse dinheiro.

Sobrique
fonte
“A confiabilidade do grupo RAID não protege você contra exclusão acidental. (portanto, você precisa dos backups de qualquer maneira) ”- não impliquei que isso tornasse desnecessários os backups (sei bem que o RAID não é um backup ). Na verdade, eu imploro o inverso dizendo "probabilidades cumulativas de recorrer ao backup" - estou considerando que os backups são uma prática padrão. Eu concordo com este ponto, no entanto, é apresentado como contrariar meu raciocínio sobre o RAID 1 + 6, o que não faz sentido.
James Haigh
"RAID 61" - RAID 6 + 1 seria uma matriz RAID 1 de matrizes RAID 6. É um aninhamento invertido e acho que teria muito menos confiabilidade. Ou seja, o que acontece se três unidades falharem no mesmo array RAID 6 aninhado? Toda essa matriz RAID 6 aninhada não precisa ser reconstruída? As mesmas unidades aninhadas como RAID 1 + 6 sustentariam essas mesmas três falhas de unidade sem colocar offline nenhuma unidade em funcionamento.
James Haigh
“Além de certos níveis de RAID, suas chances de uma falha composta em discos tornam-se menores do que uma falha composta de infraestrutura de suporte (energia, rede, vazamento de ar condicionado, etc.)”; “É uma redução adicional de 25%” - verdadeiro e verdadeiro, é um layout de aninhamento de exagero. Mas então por que uma Terra alguém usaria uma matriz RAID 0 de triplos RAID 1? Obrigado por me lembrar sobre o espelhamento triplo RAID 1 + 0! "Eu não fiz a trituração de números"; “Ou, ao invés disso, fazer espelhos de três vias.” - Você realmente deve fazer alguns cálculos antes de apresentar um caso de suporte como um contra-exemplo. Estes cálculos devem ser exploradas ...
James Haigh
1
Minha experiência direta é essa: tenho 40.000 eixos em minha propriedade, em uma variedade de configurações. Não tivemos um grupo fracassado nos últimos 5 anos. Eu usei espelhos triplos, mas não para resiliência - eles são para fazer cópias de clone por motivos de backup. Eu usei réplicas de vários sites por razões de recuperação de desastres - que usei -, mas nenhuma delas também foi necessária para falhas de RG.
Sobrique
1
Você está entendendo mal o que é penalidade de gravação. É que, para uma única substituição, você deve ler seus dois dispositivos de paridade, computar paridade, escrever de volta para você dois dispositivos de paridade e seu bloco de destino. Assim, 6 IOs por 'gravação'. Esta não é uma limitação de software ou implementação. Você mitiga parcialmente com um bom cache de gravação, mas apenas parcialmente.
Sobrique
3

Sistemas modernos e avançados não implementam formas assim porque são excessivamente complicados, completamente desnecessários e contrários a qualquer aparência de eficiência.

Como outros já apontaram, a proporção de espaço bruto para espaço útil é essencialmente 3: 1. São essencialmente três cópias (duas cópias redundantes). Devido ao custo de cálculo de "raid6" (duas vezes, se espelhado) e a perda resultante de IOPS, isso é muito ineficiente. No ZFS, que é muito bem projetado e ajustado, a solução equivalente, em termos de capacidade, seria criar uma faixa de espelhos de três vias.

Por exemplo, em vez de um espelho de 6 formas raid6 / raidz2 (total de 12 unidades), o que seria muito ineficiente (também não é algo que o ZFS tenha algum mecanismo para implementar), você teria quatro espelhos de três vias (também 12 unidades). E, em vez de 1 unidade no valor de IOPS, você teria 4 unidades no valor de IOPS. Especialmente com máquinas virtuais, essa é uma grande diferença. A largura de banda total para as duas formas pode ser muito semelhante nas leituras / gravações sequenciais, mas a faixa dos espelhos de três vias seria mais responsiva com a leitura / gravação aleatória.

Resumindo: o raid1 + 6 geralmente é impraticável, ineficiente e, sem surpresa, nada que alguém sério sobre armazenamento considere desenvolver.

Para esclarecer a disparidade de IOPS: Com um espelho de formas raid6 / raidz2, a cada gravação, todas as 12 unidades devem agir como uma. Não há capacidade para a forma total dividir a atividade em várias ações que várias formas podem executar independentemente. Com uma faixa de espelhos de três vias, cada gravação pode ser algo com o qual apenas um dos quatro espelhos deve lidar; portanto, outra gravação que chega não precisa esperar a forma omnibus inteira lidar antes de analisar outras ações .

killermist
fonte
2

Como ninguém disse isso diretamente o suficiente: o desempenho de gravação do Raid6 não é marginalmente pior. É horrível além da descrição se for carregado.

A gravação sequencial é boa e, desde que o cache, a mesclagem de gravações etc. sejam capazes de encobri-la, ela parece correta. Sob carga alta, as coisas parecem ruins e esse é o principal motivo pelo qual uma configuração 1 + 5/6 quase nunca é usada.

Florian Heigl
fonte
Eu concordo, mas é principalmente porque o que você disse é apenas uma versão super resumida do que eu disse. E é claro que concordo comigo mesma.
precisa
1

Tempos de busca

A questão é que, a amplificação de busca por gravação se comporta de maneira muito diferente da amplificação da taxa de transferência de gravação . A amplificação mínima da taxa de transferência de gravação com paridade ocorre quando uma faixa inteira é gravada de uma só vez (vamos chamar esse adjetivo de 'faixa completa'), mas a amplificação mínima da pesquisa de gravação ocorre, por outro lado, quando a gravação inteira após uma busca no dispositivo virtual se encaixa um único pedaço. Antes de entrar em detalhes, os relacionamentos são muito mais fáceis de transmitir em forma de tabela:

RAID | write throughput amplification factor | write seek amplification factor
     | full-stripe (e.g.) | single-chunk     | full-stripe  | single-chunk
   0 | 1           ;  1   | 1           ;  1 | n       ; 12 | 1           ;  1
   1 | n           ; 12   | n           ; 12 | n       ; 12 | n           ; 12
   5 | n/(n - 1)   ; ~1.1 | min [3, n]  ;  3 | n       ; 12 | min [3, n]  ;  3
   6 | n/(n - 2)   ;  1.2 | min [5, n]  ;  5 | n       ; 12 | min [5, n]  ;  5
*1+0 | n₁          ;  3   | n₁          ;  3 | n       ; 12 | n₁          ;  3*
 1+5 | n/(n₅ - 1)  ;  2.4 | expr₁       ;  5 | n       ; 12 | expr₁       ;  5
*1+6 | n/(n₆ - 2)  ;  3   | expr₂       ;  8 | n       ; 12 | expr₂       ;  8*
expr₁ = 2n₁ + min [1, n₅ - 2]
expr₂ = 3n₁ + min [2, n₆ - 3]

onde n é o número total de unidades, n₁ é o número de unidades nos grupos RAID 1 e n₅ e n₆ são o número de grupos nas matrizes RAID 5 ou RAID 6, respectivamente. Os exemplos estão relacionados ao exemplo de 12 unidades na pergunta (as linhas relevantes são ' *bolded*'); exemplos para os níveis de RAID 1 + 0, 1 + 5, 1 + 6 são 4 × 3, 6 × 2, 6 × 2, respectivamente.

Observe que apenas o fator de amplificação da taxa de transferência de gravação de faixa completa está diretamente relacionado à proporção de redundância. Os casos de bloco único são mais complicados para aqueles com paridade. Eles surgem porque a gravação de um único bloco exige a leitura do que for mais fácil entre os blocos de paridade ou os outros blocos de dados, antes de gravar os blocos de paridade junto com o novo bloco de dados. (Eles não são diretamente multiplicativos porque as leituras induzidas devem ser multiplicadas pelo respectivo fator de ampliação da taxa de transferência / busca de leitura para o RAID 1, sendo ambos 1; veja abaixo.)

Infelizmente, escolher um tamanho de bloco que minimize essa amplificação extra da taxa de gravação tem o efeito colateral de realmente maximizara gravação busca amplificação. Para gravações minúsculas com um tempo de gravação desprezível em comparação com o tempo de busca, o desempenho de gravação de faixas com um tamanho de bloco muito pequeno (para ser uma faixa completa) é de apenas 1 ×, como espelhamento, pois exige que todas as unidades procurem os blocos para cada gravação e a taxa de transferência obtida com a mobilização de todas essas unidades são irrelevantes. Ele dividiu a proporção entre o tempo de gravação e o tempo de busca pelo número de unidades na matriz, mas, para pequenas gravações, isso já era insignificante. Não faria sentido usar um tamanho de pedaço tão pequeno que faça gravações minúsculas serem de faixa completa. Para gravações pequenas o suficiente para sentir os efeitos da busca, é melhor que caibam em um único pedaço.

RAID | large contiguous write throughput    | concurrent tiny writes throughput
     | full-stripe    | single-chunk        | full-stripe | single-chunk
   0 | n×       ; 12× | n×          ; 12×   | 1×     ; 1× | n×          ; 12×
   1 | 1×       ;  1× | 1×          ;  1×   | 1×     ; 1× | 1×          ;  1×
   5 | (n - 1)× ; 11× | max[n/3, 1]×;  4×   | 1×     ; 1× | max[n/3, 1]×;  4×
   6 | (n - 2)× ; 10× | max[n/5, 1]×;  2.4× | 1×     ; 1× | max[n/5, 1]×;  2.4×
*1+0 | n₀×      ;  4× | n₀×         ;  4×   | 1×     ; 1× | n₀×         ;  4×  *
 1+5 | (n₅ - 1)×;  5× | expr₃×      ;  2.4× | 1×     ; 1× | expr₃×      ;  2.4×
*1+6 | (n₆ - 2)×;  4× | expr₄×      ;  1.5× | 1×     ; 1× | expr₄×      ;  1.5×*
expr₃ = n/(2n₁ + min [1, n₅ - 2]) = max [n/(2n₁ + 1), n/(2n₁ + n₅ - 2)]
expr₄ = n/(3n₁ + min [2, n₆ - 3]) = max [n/(3n₁ + 2), n/(3n₁ + n₆ - 3)]

Nota: As duas colunas de taxa de transferência do meio podem ser ignoradas, devido a um tamanho de bloco sensível que é maior que as gravações para as quais o tempo de busca é significativo, mas pequeno o suficiente para que gravações grandes sejam de faixa completa. O tamanho grande da parte da segunda coluna de taxa de transferência é mais semelhante às unidades estendidas. Uma gravação 'minúscula' é onde o efeito da taxa de transferência é insignificante.

Ter um tamanho de pedaço inapropriadamente pequeno também aumenta o efeito da amplificação de busca para leituras, embora não tanto e apenas no caso de faixa completa.

RAID | read throughput amplification factor | read seek amplification factor
     | full-stripe      | single-chunk      | full-stripe (e.g.) | single-chunk
   0 | 1                | 1                 | n      to n;    12 | 1
   1 | 1                | 1                 | 1      to n;  1–12 | 1
   5 | 1                | 1                 | n - 1  to n; 11–12 | 1
   6 | 1                | 1                 | n - 2  to n; 10–12 | 1
*1+0 | 1                | 1                 | n₀     to n;  4–12 | 1           *
 1+5 | 1                | 1                 | n₅ - 1 to n;  5–12 | 1
*1+6 | 1                | 1                 | n₆ - 2 to n;  4–12 | 1           *

Nota: O 'to n' ocorre porque, quando apenas uma leitura ocorre simultaneamente, é teoricamente possível mobilizar todas as unidades para procurar locais apropriados e ler coletivamente os dados para obter uma taxa de transferência de leitura contígua máxima máxima.

RAID | large contiguous read throughput | concurrent tiny reads throughput
     | full-stripe (e.g.)| single-chunk | full-stripe         | single-chunk
   0 | n×          ; 12× | n×     ; 12× | 1×          ;  1×   | n×     ; 12×
   1 | n×          ; 12× | n×     ; 12× | n×          ; 12×   | n×     ; 12×
   5 | n×          ; 12× | n×     ; 12× | n/(n - 1)×  ; ~1.1× | n×     ; 12×
   6 | n×          ; 12× | n×     ; 12× | n/(n - 2)×  ;  1.2× | n×     ; 12×
*1+0 | n×          ; 12× | n×     ; 12× | n₁×         ;  3×   | n×     ; 12×*
 1+5 | n×          ; 12× | n×     ; 12× | n/(n₅ - 1)× ;  2.4× | n×     ; 12×
*1+6 | n×          ; 12× | n×     ; 12× | n/(n₆ - 2)× ;  3×   | n×     ; 12×*

Nota: Novamente, as duas colunas de taxa de transferência do meio podem ser ignoradas, considerando um tamanho de bloco sensato. A terceira coluna de taxa de transferência está novamente estreitamente conectada à proporção de redundância.

No entanto, um tamanho de bloco grande o suficiente significa que pequenas leituras nunca são de faixa completa. Portanto, dada uma implementação eficiente e um tamanho de bloco apropriado, o desempenho da leitura deve ser proporcional ao número de unidades idênticas quando não degradadas.

Realmente, 'fator de amplificação' é muito mais complicado do que a fórmula da pergunta, onde apenas a amplificação da taxa de transferência de faixa completa foi considerada. Em particular, o desempenho de gravação de 6 × 2 RAID 1 + 6 para gravações simultâneas pequenas o suficiente para serem vinculadas à procura será pior do que o de 4 × 3 RAID 1 + 0. E para gravações pequenas, todas procuradas, o desempenho pode ser apenas cerca de um terço do valor de 4 × 3 RAID 1 + 0 no melhor absoluto (ou seja, com uma implementação perfeita).

Depois de esclarecer essa questão, a comparação de 12 unidades não tem um vencedor definitivo:

                                  | 4×3 RAID 1+0 | 6×2 RAID 1+6
   number of identical 1TB drives | 12           | 12
                 storage capacity | 4TB          | 4TB
            redundancy proportion | 2/3          | 2/3
large contiguous write throughput | 4×           | 4×
 large contiguous read throughput | 12×          | 12×
concurrent tiny writes throughput |*4×           | 1.5×
 concurrent tiny reads throughput | 12×          | 12×
safe number of random drive loses | 2            |*5
    12 - 1 large write throughput | 4×           | 4×
     12 - 1 large read throughput | 8×           |*11×
    12 - 1 tiny writes throughput |*4×           | ~1.42×
     12 - 1 tiny reads throughput | 8×           |*~9.33×
  can split-off a copy for backup | yes[1]       | yes[1]
                  2-site failover | yes          | yes
    2-copy large write throughput | 4×           | 4×
     2-copy large read throughput |*8×           | 6×
    2-copy tiny writes throughput |*4×           | ~1.28×
     2-copy tiny reads throughput |*8×           | 6×
   2-copy safe random drive loses | 1            |*2
2-copy - 1 large write throughput | 4×           | 4×
 2-copy - 1 large read throughput | 4×           |*5× or 6×[2]
2-copy - 1 tiny writes throughput |*4×           | ~1.46× or 1.2×[2]
 2-copy - 1 tiny reads throughput | 4×           |*3.6x or 6×[2]
can be divided into 3 full copies | yes          | yes
                  3-site failover | yes          | yes
    1-copy large write throughput | 4×           | 4×
     1-copy large read throughput | 4×           | 4×
    1-copy tiny writes throughput |*4×           | ~0.85×
     1-copy tiny reads throughput |*4×           | 2×
   1-copy safe random drive loses | 0            | 0
                       complexity |*simple       | more complex

Nota 1: Uma cópia completa dos dados armazenados é respectivamente um RAID 0 quádruplo ou um RAID 6 degradado 4/6. Nota 2: Há uma chance uniforme de saber se a falha da unidade desconectou um dos quatro pares de RAID 1 degradados ou degradou um dos dois pares normais.

No entanto, ele teria o dobro do desempenho de leitura de uma matriz de 6 unidades RAID 6 e a pequena taxa de transferência de gravações deveria ser 25% melhor (1,5 / 1,2), devido à divisão das leituras necessárias entre os pares RAID 1, e o RAID 6 obviamente têm aplicações adequadas, portanto, em aplicações de alta disponibilidade que têm gravações maiores ou que estão mais preocupados com o desempenho de leitura do que o desempenho de gravação, talvez lá é um nicho para RAID 1 + 6 afinal. Mas isso não é tudo…

Complexidade

Isso ainda é apenas na teoria até agora (principalmente combinatória ), na prática a complexidade significará que as implementações do RAID 1 + 6 podem ter deficiências que perdem oportunidades e não atingem os resultados teóricos. O RAID 6 já é mais complexo e o aninhamento acrescenta um pouco mais de complexidade.

Por exemplo, não é imediatamente óbvio que 6 × 2 RAID 1 + 6 podem ser abstraídos como tendo 3 cabeças de leitura virtuais independentes capazes de ler simultaneamente 3 leituras grandes contíguas com taxa de transferência 4 × cada, assim como 4 × 3 RAID 1 + 0. Simplesmente aninhar 6 pares RAID 1 em uma matriz RAID 6 usando um RAID de software pode não ser tão elegante; a implementação pode ser estúpida e complicada (ainda não testei essa hipótese).

A complexidade também apresenta um aumento no custo de desenvolvimento de implementações e ferramentas. Mesmo que haja aplicativos que possam se beneficiar desse aninhamento, as melhorias podem não valer os custos de desenvolvimento.

James Haigh
fonte
Por favor, indique sua fonte para essas informações. Um teste prático com gravações grandes ou pequenas não concorda com o desempenho que você sugeriu.
JamesRyan
@ JamesRyan: Esta não é uma informação de segunda mão. Os resultados teóricos são derivados dos fundamentos de como os níveis padrão de RAID funcionam. Tudo o que é necessário para a teoria é um entendimento de como o RAID funciona e um entendimento da lógica e da derivação matemática. Se esses cálculos fossem feitos por outra pessoa, é claro que eu declararia isso e forneceria links para referência, se possível. Observe que existem muitas maneiras pelas quais uma implementação prática de RAID 1 + 6 pode ser abaixo do ideal, mas diferentes implementações variam. O que eu gostaria de saber é por que seu teste prático não coincide.
James Haigh
@ JamesRyan: Você poderia dar mais detalhes sobre qual implementação você usou, quais unidades você usou, em quais configurações e com quais métodos de benchmarking? Você tentou uma matriz RAID 6 de 6 pares RAID 1 e uma matriz RAID 0 de 4 triplos RAID 1 com as mesmas 12 unidades e tamanho de bloco? Foi um RAID de software?
precisa
Como você está propondo uma teoria não testada que desafia a sabedoria convencional, por que você não detalha sua configuração onde mostrou que ela funciona? Eu acho que, como a matemática é diferente de qualquer outra fonte sobre esse assunto, bem como os testes do mundo real, a razão pela qual não funciona é que a matemática está errada.
JamesRyan