Para o HDD , os IOPS geralmente são dominados pelo tempo de acesso do disco, que é a soma da latência de busca + atraso de rotação + atraso de transferência. Como essas variáveis dependem fortemente dos padrões de acesso e têm interações não óbvias com o layout RAID específico (por exemplo: tamanho da faixa) e o controlador (por exemplo: ajuste de leitura antecipada), qualquer resposta simples SERÁ ERRADA.
No entanto, vamos tentar ter uma figura aproximada. Em uma primeira aproximação, o IOPS garantido por uma matriz de n discos deve ser n vezes o IOPS de um único disco. No entanto, o nível de RAID e o padrão de acesso a dados , alterando o peso entre a latência de busca / rotação / transferência, mudam dramaticamente essa aproximação de primeira ordem.
Vamos dar alguns exemplos, assumindo 100 IOPS por discos únicos (um valor típico para discos de 7200 RPM) e matrizes de 4 discos (exceto RAID1, geralmente limitados apenas a 2 vias):
- um único disco tem 100 IOPS, tanto de leitura quanto de gravação (nota: devido à coalescência de gravação, as IOPS de gravação geralmente são mais altas que as IOPS de leitura, mas vamos ignorá-lo por simplicidade)
- O RAID0 (distribuição de 4 vias) tem até 4x o IOPS aleatório e até 4x o IOPS seqüencial. A palavra-chave aqui é "até": devido à natureza da distribuição e do alinhamento de dados, se os setores acessados aleatoriamente residirem predominantemente em um único disco, você terminará com IOPS muito mais baixos.
- O RAID1 (espelhamento bidirecional) é mais complexo para o perfil. Como discos diferentes podem procurar dados diferentes, ele possui até 2x o IOPS de leitura aleatória, mas o mesmo 1x (ou ligeiramente menor, devido à sobrecarga) IOPS de gravação aleatória. Se todas as coisas alinhar bem (ou seja: grande, mas não 100% leituras seqüenciais, um controlador RAID usando pedaços / listras conceito / manuseio mesmo em modo de espelhamento, read-ahead funcionando corretamente, etc.) leituras seqüenciais pode em algum momento ser de até 2x o único valor do disco, enquanto as gravações seqüenciais permanecem limitadas a 1x o disco único (ou seja: sem aceleração)
- O RAID10 (espelhamento em quatro direções) é, em termos de desempenho, a meio caminho entre a faixa RAID0 em quatro direções e o espelhamento em duas direções. Possui até 4x o IOPS de leitura aleatória e até 2x o IOPS de gravação aleatória. Para transferências sequenciais, a ressalva RAID1 se aplica: em algum momento ela tem até 4x as IOPS de leitura sequencial, mas apenas 2x as IOPS de gravação sequencial. Observe que algumas implementações de RAID10 (ou seja, Linux MDRAID) fornecem layouts diferentes para matrizes RAID10, com diferentes perfis de desempenho .
- O RAID5 (paridade distribuída) tem até 4x o IOPS de leitura aleatória, enquanto o IOPS de gravação aleatória, dependendo de vários fatores, como o tamanho da gravação em relação ao tamanho da faixa, a disponibilidade de um cache de faixa grande, o algoritmo de reconstrução de faixa em si (leitura-reconstrução-gravação x leitura-modificação-gravação), etc., pode estar 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 gravação)
- O RAID6 (paridade dupla listrada) se comporta como seu irmão RAID5, mas com desempenhos de gravação mais baixos. Possui até 4x o IOPS de leitura aleatória de um único disco, mas seu desempenho de gravação aleatória é ainda menor que o RAID5, com os mesmos valores absolutos (0,5x - 2x), mas com menor média de palavras reais. As leituras e gravações sequenciais estão limitadas a 2X o IOPS de um único disco.
Deixe-me repetir: as opções 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 aqui .
Agora, volte para o mundo real. Nas cargas de trabalho do mundo real, o RAID10 é frequentemente a escolha mais rápida e preferida , mantendo alto desempenho mesmo diante de uma matriz degradada . O RAID5 e o RAID6 não devem ser usados em cargas de trabalho sensíveis ao desempenho, a menos que sejam centradas na leitura ou sequenciais por natureza. Vale a pena notar que os controladores RAID sérios têm um grande cache de write-back protegido contra perda de energia, principalmente para superar (pelo cache pesado de faixas) o baixo desempenho de gravação aleatória 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 bestas diferentes, pensou. Como eles possuem um tempo médio de acesso muito menor, os RAIDs baseados em paridade geram uma sobrecarga de desempenho muito menor e são uma opção muito mais viável do que nos HDDs. No entanto, em uma pequena carga de trabalho centralizada de gravação aleatória, eu usaria uma configuração RAID10 de qualquer maneira.