sexta-feira, 29 de agosto de 2014

Escolher um sistema de RAID

Introdução

Quando se pensa em adquirir ou configurar um Servidor, uma das primeiras preocupações é escolher o sistema de RAID mais adequado.

Neste artigo não se pretende descrever exaustivamente as várias arquitecturas e níveis de RAID, mas sim apresentar uma comparação entre as opções mais utilizadas e tentar perceber qual a melhor opção para cada caso.

Vamos apenas referir que um sistema RAID é composto por um conjunto de 2 ou mais unidades de disco iguais, com dois objectivos base:

  • Maior rapidez de leitura e escrita (I/O) dos dados (striping)
  • Maior segurança dos dados e tolerância a falhas (mirror)

Para quem queira perceber melhor o que é o RAID e as várias opções disponíveis, a Wikipédia oferece uma explicação muito clara e concisa, aqui.

Conteúdo

Níveis de RAID e utilização de discos

Embora não seja o objectivo deste artigo a descrição detalhada das tecnologias de RAID, é útil apresentar uma tabela com a utilização de discos para cada nível.

Nível
Designação
Redundância
Utilização Discos p/ Dados
Nº Mínimo Discos
0
Striping
Não
100%
2 (n*2)
1
Mirror
Sim
50%
2 (n*2)
5
Paridade
Sim
66.6% – 97%
3 (n+1)
6
Paridade (recente)
Sim
50% – 88%
4 (n+2)
01 / 10
Striping + Mirror
Sim
50%
4 (n*2*2)
50
Paridade + Striping
Sim
66.6% – 97%
2 (n*2)
100
Striping + Mirror + Striping
Sim
50%
8 (n*2*2*2)

Nota: não são apresentados os níveis RAID 2, 3 e 4, porque caíram em desuso

Níveis de RAID base

RAID 0

Divide-se a gravação dos dados por dois ou mais discos, em simultâneo, aumentando assim a velocidade de I/O. Num sistema de dois discos, p.ex., o tempo que leva a gravar 1 byte num só disco, permite a gravação simultânea de 2 bytes (um em cada disco). Quantos mais discos tiver o sistema de RAID, mais rápida será a velocidade.

Toda a capacidade dos discos é aproveitada para os dados, todavia, se um dos discos falhar, todo o sistema falha, com perda total dos dados.

RAID 1

Cada disco, onde os dados são gravados, tem outro igual que funciona como espelho (mirror). Neste nível de RAID, os discos são sempre instalados aos pares.

Apesar de cada par ter discos iguais, somente a capacidade de um deles é aproveitada para guardar os dados. Todavia, se um dos discos falhar, o outro entra imediatamente em funcionamento, não havendo falhas no sistema.

RAID 5

Neste nível o foco também está na redundância e recuperação dos dados, mas em vez de existir um disco completo como réplica, a própria unidade garante a protecção dos dados. Isto permite uma poupança de recursos em relação ao RAID 1, podendo, inclusivamente, configurar-se RAID 5 num número ímpar de discos.

A redundância é obtida recorrendo a algoritmos de paridade. Os dados gravados no disco são divididos em pequenos blocos e cada um deles recebe um bit adicional – o bit de paridade, de acordo com a seguinte regra: se a quantidade de bits '1' do bloco for par, seu bit de paridade é '0'; se a quantidade de bits '1' for ímpar, o bit de paridade é '1'.

Estes bits de paridade são gravados numa área específica do próprio disco cujo tamanho é proporcional à quantidade de blocos de dados a controlar. Quando há uma falha (bit desconhecido), basta contar a quantidade de bits ‘1’ do bloco + bit paridade. Se for par, o bit em falta é ‘0’, se for ímpar, o bit em falta é ‘1’.

Tipicamente, numa configuração multidiscos, o espaço reservado para a paridade corresponde ao tamanho de um disco individual. Assim, numa configuração de 3 discos de 500 GB, ficamos com 1 TB para dados e 500 GB para paridade (33.33%).

RAID 0+1 vs RAID 1+0

A combinação dos níveis RAID 0 e RAID 1, permite obter o melhor de dois mundos:

  • O mirror dá-nos o mais alto nível de disponibilidade e os mais rápidos tempos de reconstrução, quando um disco falha;
  • O striping é a base da alta performance de I/O.

A combinação destes dois níveis, pode ser feita de duas formas:

  • RAID 01: primeiro fazemos o stripe e depois o mirror;
  • RAID 10: primeiro fazemos o mirror e depois o stripe.

À primeira vista parece que os processos são semelhantes e comutativos, mas não são. Vamos perceber porquê (exemplos para 3+3 discos):

RAID 0+1 ou RAID 01

Primeiro faz-se o stripe dos discos:

E depois faz-se o mirror do conjunto de discos em stripe:

 

RAID 1+0 ou RAID 10 

Primeiro faz-se o mirror de cada um dos discos:

E depois faz-se o stripe pelos pares de discos em mirror:

 

Diferenças

OK, a arquitectura interna pode ser um pouco diferente, mas o resultado final é o mesmo: usamos o mesmo número de discos, temos o mesmo disco lógico, fazemos striping por 3 discos (velocidade a triplicar) e temos redundância de dados. Porque é que nos temos que preocupar?

Temos que nos preocupar porque a grande diferença está na tolerância a falhas.

Relembremos que o RAID 1 tem uma tolerância de 1 disco por cada par em mirror.

Na configuração em RAID 01, temos apenas um mirror (de um stripe de 3 discos), pelo que o sistema apenas permite falha num dos discos físicos. Se um disco falhar, o sistema, automaticamente, começa a usar o outro bloco do mirror. Se falhar um segundo disco, desse bloco, o sistema pára.

No caso do RAID 10, temos 3 mirrors, pelo que o sistema permite a falha de um disco em cada par. Por exemplo, podem falhar os discos 1, b e 3 e o sistema continuar a funcionar. Claro que se falharem dois discos do mesmo par em mirror (p.ex. 1 e a) o sistema pára também.

A conclusão é que temos mais vantagem em usar o RAID 10 em vez do RAID 01 porque, com o mesmo número de discos, obtemos a mesma performance mas uma melhor tolerância a falhas.

RAID 10 vs RAID 50

RAID 50

De forma análoga ao RAID 10, numa configuração de RAID 50, primeiro faz-se RAID 5 e de seguida faz-se stripe aos discos já com redundância.

Diferenças

Performance
Uma configuração RAID 50 permite leituras mais rápidas que numa RAID 10, com o mesmo número de discos. No entanto, as operações de escrita em RAID 50 são mais lentas do que em RAID 10. Esta diferença torna-se muito significativa em operações de escrita intensiva (p.ex. bases de dados).

A correcção de performance de um sistema em RAID 50 é cara, exigindo ou a compra de muito mais discos RAID 5 do que aqueles inicialmente previstos, ou a conversão num sistema RAID 10, que tem um menor custo por operação de escrita.

Uma configuração RAID 50, apesar de ser tolerante à falha de uma disco, sofre uma degradação massiva de performance quando isto ocorre. Numa configuração RAID 10, se um disco falhar, o sistema continua a funcionar sem qualquer degradação de performance.

Redundância
Uma configuração RAID 10 oferece mais redundância de dados que uma RAID 50. 

Arquitectura
Uma configuração RAID 10 oferece maior flexibilidade de arquitectura do que uma RAID 50. Para além disso, a quantidade de espaço livre também é minimizada ao usar uma configuração RAID 10.

Controlador
Uma configuração RAID 5 exige uma placa controladora de alto desempenho. Se a implementação de RAID 5 estiver a ser feita pelo sistema operativo,  então o resultado será o de abrandar o desempenho do computador. No caso de uma configuração RAID 10, qualquer controlador de hardware pode ser utilizado.

Ocorrência falhas
Uma configuração RAID 50 tem uma probabilidade de falha, pelo menos, 3 vezes superior a uma configuração RAID 10 equivalente. E quanto maior for o número de discos RAID 5, mais aumenta esta probabilidade.

Recuperação de dados
A recuperação de dados numa configuração RAID 5 vai consumir cerca de metade da capacidade de IOPS (Operações de I/O por segundo) e ainda alguns ciclos do controlador ou do CPU. A recuperação de dados numa configuração RAID 10 é tão simples como copiar um disco.

Custos
A principal motivação para o aparecimento do RAID 5 foi o elevado custo por byte dos discos, para fazer RAID 1. Mas isso foi conseguido à custa do sacrifício da performance. Hoje em dia o custo dos discos já não é tão significativo e a exigência de um controlador mais sofisticado provoca que os sistemas em RAID 50 não ofereçam vantagens económicas significativas em relação ao RAID 10.

Conclusões

Pelo que foi exposto, na grande maioria dos cenários, uma configuração RAID 10 é a que apresenta mais vantagens.

O RAID 01 não oferece qualquer vantagem sobre o RAID 10 e o RAID 50 tem graves problemas de performance nas operações de escrita. Este último poderá ser equacionado quando há um pequeno número de discos (até 3) ou em sistemas em que o peso está nas operações de leitura.

Em qualquer dos casos, deve-se fazer sempre uma análise cuidadosa do cenário, requisitos e recursos disponíveis para implementar uma solução de RAID.

Referências

http://www.zdnet.com/blog/storage/raid-10-is-the-cadillac-of-raid/131

http://www.miracleas.com/BAARF/RAID5_versus_RAID10.txt

http://www.miracleas.com/BAARF/1.Millsap2000.01.03-RAID5.pdf

Sem comentários:

Enviar um comentário