Para HDD , as IOPS são geralmente dominadas pelo tempo de acesso do disco, que é a soma de latência de pesquisa + atraso de rotação + Como essas variáveis dependem strongmente dos padrões de acesso e têm interações não óbvias com o layout específico do RAID (por exemplo: tamanho da faixa) e do controlador (isto é: ajuste de leitura antecipada), qualquer resposta simples SEJA ERRADO.
No entanto, vamos tentar ter uma estimativa. Em uma primeira aproximação, o IOPS garantido por um array de n-discos deve ser n vezes o IOPS de um único disco. No entanto, tanto o nível de RAID quanto o padrão de acesso a dados , deslocando o peso entre a latência de busca / rotação / transferência, mudam dramaticamente essa aproximação de primeira ordem.
Vamos fazer alguns exemplos, assumindo 100 IOPS por disco único (um valor típico para discos de 7200 RPM) e matrizes de 4 discos (exceto para RAID1, geralmente limitado a somente 2 vias):
- um único disco é 100 IOPS, tanto leitura quanto escrita (observação: devido à combinação de gravação, o IOPS de gravação é geralmente maior que IOPS de leitura, mas ignoramos isso para simplificar)
- O RAID0 (distribuição de 4 vias) tem até 4x o IOPS aleatório e até 4x o IOPS sequencial. A palavra chave aqui é "up to": devido à natureza da distribuição e do alinhamento de dados, se os setores acessados aleatoriamente residirem predominantemente em um único disco, você terminará com muito menos IOPS.
- O RAID1 (espelhamento bidirecional) é mais complexo para o perfil. Como discos diferentes podem procurar dados diferentes, ele tem até 2x o IOPS de leitura aleatória, mas o mesmo IOPS de gravação aleatória de 1x (ou um pouco menor, devido à sobrecarga). Se todas as coisas estiverem bem alinhadas (ou seja, grandes, mas não 100% sequenciais, um controlador RAID usando pedaços / listras conceito / manipulação mesmo no modo de espelhamento, leitura antecipada funcionando corretamente, etc.) leituras sequenciais podem algum dia ser até 2x o valor do disco único, enquanto as gravações seqüenciais permanecem limitadas em 1x o disco único (ou seja: sem aceleração)
- O RAID10 (espelhamento de quatro direções) está, em termos de desempenho, a meio caminho entre a distribuição RAID0 de 4 vias e o espelhamento bidirecional. Ele tem até 4x a IOPS de leitura aleatória e até 2x a IOPS de gravação aleatória. Para transferências seqüenciais, a ressalva RAID1 se aplica: em algum momento ela tem até 4x a IOPS de leitura sequencial, mas apenas 2x a IOPS de gravação sequencial. Observe que algumas implementações do RAID10 (como o Linux MDRAID) fornecem layouts diferentes para arrays RAID10, com perfil de desempenho diferente .
- RAID5 (paridade distribuída) tem até 4x o IOPS de leitura aleatória, enquanto IOPS de gravação aleatória, dependendo de vários fatores como o tamanho da gravação é em relação ao tamanho da distribuição, a disponibilidade de um grande cache de distribuição O algoritmo de reconstrução de stripe em si (read-reconstruct-write versus read-modify-write), etc., pode estar em qualquer ponto entre 0.5x (ou inferior) e 2x o IOPS de um único disco. Cargas de trabalho sequenciais são mais previsíveis, com 3x o IOPS de um único disco (para leitura e escrita)
- O RAID6 (paridade dupla distribuída) se comporta de maneira muito parecida com o irmão RAID5, mas com desempenhos de gravação menores. Ele tem até 4x o IOPS de leitura aleatória de um único disco, mas seu desempenho de gravação aleatória é ainda menor do que o RAID5, com os mesmos valores absolutos (0,5x - 2x), mas com menor média real de palavras. As leituras e gravações sequenciais são limitadas em 2X a IOPS de um único disco.
Deixe-me repetir: o acima são aproximações simples e quase quebradas. De qualquer forma, se você quiser jogar com uma calculadora RAID IOPS (severamente incompleta), dê uma olhada here .
Agora, volte para o mundo real. Em cargas de trabalho do mundo real, o RAID10 é geralmente a escolha mais rápida e preferida , mantendo o alto desempenho mesmo em face de um array degradado . O RAID5 e o RAID6 não devem ser usados em cargas de trabalho sensíveis ao desempenho, a menos que sejam de natureza centralizada na leitura ou sequencial. É importante notar que os controladores RAID sérios têm um grande cache de write-back protegido contra perda de potência, principalmente para superar o baixo desempenho de gravação aleatória do RAID5 / 6. Nunca use o RAID5 / 6 com controladores RAID sem cache , a menos que você realmente não se importe com a velocidade do array.
SSD são animais diferentes, pensou. Como eles têm tempo de acesso médio muito mais baixo, os RAID baseados em paridade geram uma sobrecarga de desempenho muito menor e são opções muito mais viáveis do que nos HDDs. No entanto, em uma pequena carga de trabalho centrada em gravação aleatória, eu usaria uma configuração RAID10, de qualquer forma.