A regra de ouro que eu uso para E / S de disco é:
75 IOPs por eixo para SATA.
150 IOPs por eixo para FC / SAS
1500 IOPs por eixo para SSD.
Assim como as IOPs por matriz, considere também as IOPs por terabyte. Não é incomum acabar com uma taxa de IOP / TB muito ruim se estiver usando SATA + RAID6. Isso pode não parecer muito, mas muitas vezes você acaba com alguém identificando 'espaço livre' em uma matriz e deseja usá-lo. É comum as pessoas comprarem shows e ignorarem Iops, quando na verdade o oposto é verdadeiro na maioria dos sistemas empresariais.
Em seguida, adicione o custo da penalidade de gravação para RAID:
- 2 para RAID1, RAID1 + 0
- 4 para RAID5 (ou 4)
- 6 para RAID6.
A penalidade de gravação pode ser parcialmente atenuada, com grandes caches de gravação e nas circunstâncias certas. Se você tiver muitas E / S de gravação sequencial (como logs de banco de dados), poderá reduzir significativamente essas penalidades de gravação no RAID 5 e 6. Se você pode escrever uma faixa completa (por exemplo, um bloco por eixo), não precisa ler para calcular a paridade.
Suponha um conjunto 8 + 2 RAID 6. Em operação normal para uma única E / S de gravação, você precisa:
- Leia o bloco 'atualizado'.
- Leia o primeiro bloco de paridade
- Leia o segundo bloco de paridade
- Recompute a paridade.
- escreva todos os 3. (6 IOs).
Com uma gravação em faixa completa em cache - por exemplo, 8 'pedaços' consecutivos do tamanho da faixa RAID, você pode calcular a paridade em todo o lote, sem precisar de uma leitura. Então você só precisa de 10 gravações - uma para cada dado e duas paridades.
Isso torna sua penalidade de gravação 1.2.
Você também precisa ter em mente que o IO de gravação é fácil de armazenar em cache - não é necessário colocá-lo em disco imediatamente. Ele opera com uma restrição de tempo branda - desde que, em média, suas gravações recebidas não excedam a velocidade do eixo, tudo poderá ser executado na 'velocidade de cache'.
O IO de leitura, por outro lado, sofre uma restrição de tempo difícil - você não pode concluir uma leitura até que os dados sejam buscados. Os algoritmos de cache de leitura e carregamento de cache se tornam importantes nesse ponto - padrões de leitura previsíveis (por exemplo, seqüenciais, como você obteria do backup) podem ser previstos e pré-buscados, mas os padrões de leitura aleatórios não podem.
Para bancos de dados, geralmente sugiro que você assuma que:
a maior parte do seu pedido de informação de base de dados é de leitura aleatória. (por exemplo, ruim para acesso aleatório). Se você puder pagar a sobrecarga, o RAID1 + 0 é bom - porque os discos espelhados fornecem duas fontes de leitura.
a maior parte do seu IO 'log' é gravação sequencial. (por exemplo, bom para armazenamento em cache e, ao contrário do que muitos DBAs sugerem, você provavelmente deseja RAID50 em vez de RAID10).
A proporção dos dois é difícil, é difícil dizer. Depende do que o DB faz.
Como a E / S de leitura aleatória é o pior caso de armazenamento em cache, é onde o SSD realmente se destaca - muitos fabricantes não se incomodam em armazenar em cache o SSD porque, de qualquer maneira, é a mesma velocidade. Portanto, especialmente para itens como bancos de dados temporários e índices, o SSD oferece um bom retorno sobre o investimento.