Buscar

Como calcular a performance de um grupo de discos?

Como calcular a performance de um grupo de discos com RAID e IOPS — as métricas que importam, a write penalty de cada nível e uma conta de dimensionamento passo a passo.

Gabriel Pedroso11 min de leitura
performance de um grupo de discos

Calcular a performance de um grupo de discos é, no fundo, uma conta de IOPS: você parte do IOPS que cada disco entrega, aplica a write penalty do nível RAID sobre as escritas da sua carga e descobre quantos discos precisa para sustentar o desempenho exigido — capacidade utilizável e tolerância a falhas entram depois, como consequência do arranjo escolhido.

O erro clássico é dimensionar storage só pela capacidade em terabytes, ou confundir métricas que medem coisas diferentes. O caminho para acertar segue etapas bem definidas:

1Meça o IOPS do discoLevante o IOPS aleatório de um disco do modelo escolhido, no tamanho de bloco da carga.
2Defina o read/write ratioDescubra a proporção de leituras e escritas da carga real, ex.: 70/30.
3Escolha o RAID e a write penaltyRAID 0=1, RAID 1 e 10=2, RAID 5=4, RAID 6=6 operações por escrita.
4Aplique a fórmula de backendIOPS de backend = leituras + (escritas × write penalty).
5Divida pelo IOPS por discoNº de discos = IOPS de backend ÷ IOPS de um disco, arredondando para cima.
6Valide com folgaSome margem para picos, rebuild e overhead do controlador antes de fechar.
O caminho para dimensionar um arranjo por IOPS: medir o IOPS de cada disco, definir a proporção leitura/escrita da carga, escolher o nível RAID e sua write penalty, aplicar a fórmula de backend (leituras + escritas × penalty), dividir pelo IOPS de cada disco para achar quantos discos são necessários e validar com folga.

Três métricas que não se confundem

Antes de qualquer cálculo, vale separar as três métricas que descrevem o desempenho de um disco ou arranjo. Elas medem coisas distintas, e trocar uma pela outra leva a dimensionamentos errados.

  • IOPS (Input/Output Operations Per Second): quantas operações de leitura ou escrita o storage executa por segundo. Manda em bancos de dados, VMs e aplicações transacionais, com muitas operações pequenas e aleatórias. Um HDD entrega, na prática, de poucas dezenas a cerca de 200 IOPS aleatórios, conforme o RPM e o padrão de acesso; SSDs SATA e NVMe operam em ordens de grandeza maiores, das dezenas de milhares ao patamar do milhão nos modelos de ponta.
  • Throughput (MB/s): o volume de dados transferido por segundo. Importa em I/O sequencial grande — backup, transferência de arquivos, streaming de vídeo, big data. HDDs sequenciais ficam na casa das centenas de MB/s; SSDs NVMe modernos alcançam vários GB/s.
  • Latência (ms/µs): o tempo de resposta de uma única operação. HDDs respondem em alguns milissegundos (o seek mecânico); SSDs caem para frações de milissegundo e o NVMe chega aos microssegundos. Cargas sensíveis à latência, como OLTP, se beneficiam muito do NVMe.

A regra prática: IOPS para I/O aleatório, throughput para I/O sequencial, latência para tempo de resposta. Um arranjo pode ter IOPS alto e mesmo assim sofrer com latência sob carga pesada.

RAID: como os discos trabalham juntos

RAID (Redundant Array of Independent Disks) combina múltiplos discos em um único volume lógico, com trade-offs diferentes entre performance, capacidade e redundância. O que muda de um nível para outro é como leitura, escrita e paridade se distribuem — e isso determina o desempenho do conjunto. Nas fórmulas abaixo, N é o número de discos e IOPS é o IOPS de um único disco.

  • RAID 0 (striping): dados fatiados por todos os discos, sem redundância. Leitura e escrita escalam com N (N× IOPS em ambos); capacidade utilizável = N. Se um disco falhar, perde-se tudo. Uso: cache e dados descartáveis onde só a velocidade importa.
  • RAID 1 (mirroring): cada disco tem uma cópia idêntica. A leitura pode ser distribuída entre os espelhos (até N×); a escrita vai para todos os espelhos, então o arranjo entrega (N × IOPS) / 2 — em um par de 2 discos, isso equivale ao IOPS de um disco. Capacidade utilizável = N/2. Uso: volumes de boot e sistema operacional.
  • RAID 5 (striping com paridade): um bloco de paridade por stripe, rotacionado entre os discos; tolera a falha de 1 disco, mínimo de 3. Leitura escala em (N-1)×. A escrita entrega (N × IOPS) / 4, porque cada escrita do host gera quatro operações no backend: ler o dado antigo, ler a paridade antiga, escrever o dado novo e escrever a paridade nova. Capacidade utilizável = (N-1).
  • RAID 6 (dupla paridade): dois blocos de paridade; tolera a falha de 2 discos, mínimo de 4. Leitura em (N-2)×; a escrita entrega (N × IOPS) / 6, porque a dupla paridade impõe seis operações de backend por escrita. Capacidade utilizável = (N-2).
  • RAID 10 (mirror + stripe): pares espelhados agrupados em stripe, mínimo de 4. Leitura em N×; escrita em (N × IOPS) / 2 = (N/2)×. Capacidade utilizável = N/2. É o favorito para produção transacional.

RAID 5 com HDDs grandes (8 TB ou mais) pode ser arriscado: o rebuild após uma falha leva muitas horas ou dias, e a leitura intensiva durante a reconstrução aumenta a chance de um segundo disco falhar antes de terminar. Para discos grandes, o RAID 6 é mais seguro por tolerar duas falhas.

Write penalty: por que a escrita custa mais

O ponto que mais gente esquece ao dimensionar storage é que uma escrita do host não equivale a uma escrita no backend. Em arranjos com paridade ou espelho, cada escrita solicitada dispara várias operações de I/O nos discos. Esse multiplicador é a write penalty, e os fatores são consensuais:

Nível RAIDWrite penaltyTolerância a falhasUso típico
RAID 01NenhumaCache e dados descartáveis onde só a velocidade importa
RAID 121 disco (espelho)Volumes de boot e sistema operacional
RAID 541 discoNAS e arquivos de leitura predominante
RAID 662 discosArquivamento com HDDs grandes, rebuild longo
RAID 1021 disco por par espelhadoBancos de dados e cargas transacionais

As leituras não têm penalidade em nenhum nível — elas apenas se distribuem entre os discos disponíveis. É a escrita que paga o preço da redundância, e é por isso que RAID 5 e RAID 6, apesar de econômicos em capacidade, sofrem em cargas com muita escrita aleatória.

A fórmula: dimensionando um arranjo por IOPS

Com a write penalty na mão, o cálculo de quantos discos você precisa fica direto. A fórmula do IOPS de backend (o esforço real que os discos precisam sustentar) é:

IOPS de backend = leituras + (escritas × write penalty)

As leituras e escritas saem da divisão do IOPS que o host exige, conforme o read/write ratio da sua carga. Um exemplo concreto: sua aplicação precisa de 1.000 IOPS de front-end, com carga de 70% de leitura e 30% de escrita, e você cogita RAID 5 com HDDs de ~150 IOPS cada.

  • Leituras: 70% × 1.000 = 700 IOPS
  • Escritas: 30% × 1.000 = 300 IOPS
  • IOPS de backend (RAID 5, penalty 4): 700 + (300 × 4) = 700 + 1.200 = 1.900 IOPS
  • Número de discos: 1.900 ÷ 150 ≈ 12,7 → 13 discos, arredondando para cima

Agora compare com RAID 10 (penalty 2) na mesma carga: o backend cai para 700 + (300 × 2) = 1.300 IOPS, ou seja, 1.300 ÷ 150 ≈ 8,7 → 9 discos, que viram 10 por o RAID 10 exigir número par. RAID 10 precisa de menos discos para o mesmo IOPS por ter metade da penalidade de escrita — mas entrega só 50% de capacidade utilizável, contra cerca de 92% do RAID 5 com 13 discos. Aí está o trade-off, em números.

Valide sempre com folga. O cálculo puro assume o mundo ideal; overhead do controlador, latência de barramento, workload misto e picos reduzem o desempenho real. Some uma margem (algo como 20% a 40%) sobre o IOPS de backend e reserve capacidade para operar durante um rebuild. Para throughput sequencial a lógica é análoga, somando as taxas em MB/s dos discos em vez do IOPS.

Tabela comparativa das configurações RAID

RAIDCapacidade utilizávelIOPS de leituraIOPS de escritaWrite penaltyTolerância a falhasMín. discos
RAID 0100% (N)1Nenhuma2
RAID 150% (N/2)até N×(N × IOPS) / 221 por espelho2
RAID 5(N-1)/N(N-1)×(N × IOPS) / 441 disco3
RAID 6(N-2)/N(N-2)×(N × IOPS) / 662 discos4
RAID 1050% (N/2)(N/2)×21 por par4

Para o embasamento formal dos níveis padrão e do custo de escrita da paridade, a documentação de referência sobre RAID na Wikipédia reúne as definições e o comportamento de cada configuração.

Perguntas frequentes sobre performance de discos

Como calcular o IOPS de um arranjo RAID?

Parta do IOPS de backend necessário: some as leituras exigidas pela carga com as escritas multiplicadas pela write penalty do nível RAID (IOPS de backend = leituras + escritas × write penalty). Depois divida esse total pelo IOPS que cada disco entrega para descobrir quantos discos são necessários. Exemplo: 1.000 IOPS a 70% de leitura em RAID 5 (penalty 4) exigem 700 + 300 × 4 = 1.900 IOPS de backend; com discos de ~150 IOPS, são cerca de 13 discos, antes da folga.

O que é a write penalty do RAID?

É o número de operações de I/O que o backend precisa executar para cada escrita solicitada pelo host, por causa da leitura e do recálculo de paridade ou do espelhamento. Os fatores consensuais são: RAID 0 = 1, RAID 1 e RAID 10 = 2, RAID 5 = 4 e RAID 6 = 6. Por isso as escritas custam muito mais que as leituras em arranjos com paridade, e ignorar esse fator é o erro mais comum ao dimensionar storage.

RAID substitui o backup?

Não. O RAID protege contra a falha física de disco, mas não contra exclusão acidental, ransomware, corrupção lógica, falha do controlador ou desastre no local. Backup continua obrigatório, seguindo a regra 3-2-1: três cópias, em duas mídias diferentes, com uma fora do site. RAID é disponibilidade; backup é recuperação — são coisas distintas.

Qual nível de RAID é melhor para banco de dados?

RAID 10 é o padrão para bancos de dados relacionais, porque combina leitura rápida com a menor write penalty entre os níveis redundantes (fator 2), o que importa em cargas transacionais com muita escrita aleatória. O custo é a capacidade: só metade do espaço bruto fica utilizável. Com NVMe muito rápido, às vezes se usa RAID 1 ou RAID 10 com menos discos de ponta.

Qual a diferença entre IOPS, throughput e latência?

São três métricas distintas e não intercambiáveis. IOPS mede quantas operações por segundo o storage executa, e domina cargas de I/O pequeno e aleatório (bancos, VMs). Throughput mede o volume de dados por segundo em MB/s, e importa em I/O sequencial grande (backup, streaming). Latência é o tempo de resposta de cada operação, em milissegundos ou microssegundos. Um arranjo pode ter IOPS alto e ainda assim latência ruim sob carga.

Conclusão

Calcular a performance de um grupo de discos é unir as métricas (IOPS, throughput e latência, sem confundi-las) com a write penalty de cada nível RAID. A conta é simples: leituras mais escritas vezes a penalidade, dividido pelo IOPS de cada disco, com folga por cima. Não existe nível universalmente melhor — RAID 10 para cargas transacionais, RAID 5 ou 6 para arquivos de leitura predominante, RAID 0 para cache descartável. E, em qualquer cenário, RAID não dispensa backup.

Explore mais conteúdos sobre infraestrutura e tecnologia no Atraca para aprofundar em storage, servidores e hardware.