2 de abr. de 2013

RAID - Redundant Array of Independent Disks

Olá pessoal! É com muito prazer que retorno ao blog, abordando um tema muito recorrente nos dias de hoje, além de ser matéria obrigatória para aqueles que objetivam um emprego público na área de TI. Espero que apreciem!

O INICIO

Na década de 80, muitos computadores com um único disco, denominado SLED (Single Large Expensive Disk – Disco Único Grande e Caro), foram adotados como servidores em processos empresariais. No entanto, com a ideia de E/S paralela, o uso de um único disco foi substituído pela tecnologia RAID.

A tecnologia RAID foi proposta pelos projetistas Patterson, Gobson e Katz ao publicarem o artigo intitulado “A Case for Redundant Arrays of Inexpensive Disks (RAID)” em 1988, onde sugeriram técnicas com níveis de organizações de discos, as poderiam ser usadas para melhorar o desempenho e a confiabilidade dos discos.  

Como a tecnologia RAID foi rapidamente adotada pelos fabricantes, uma nova classe de dispositivos de E/S surgiu, chamada de RAID, porém, eles redefiniram o “I” para “Independet”.

Embora a tecnologia dos modernos discos proporcionem um desempenho satisfatório, ainda há um gap em relação ao desempenho da CPU.

OS MODOS DE IMPLEMENTAÇÃO

Os modos de implementação de RAID são:

Via Software:

A implementação e controle do RAID é em nível de Sistema Operacional sem a necessidade de um controlador de hardware dedicado para o gerenciamento. Todo o processamento necessário para o gerenciamento do RAID é feito pela CPU e toda a leitura e escrita é feita por uma camada de software que faz a abstração entre a operação lógica (RAID) e os discos físicos. 

Os benefícios referente ao custo e a simplicidade da implementação, porém, há limitações, por exemplo:


- Desempenho afetado devido aos ciclos adicionais de CPU necessários para os cálculos de RAID;

- Não há suporte a todos os níveis de RAID.

Via Hardware:

Sua implementação é feita por controladoras que realizam todas as operações via hardware especializado. É a maneira mais eficiente de implementar matrizes de discos rígidos; o acesso e a transferência são geridas pelo hardware da controladora provendo altas taxas de transferência sem a utilização da CPU do sistema e qualquer sistema operacional pode reconhecer uma matriz desse tipo, como um único disco.

Fake RAID (híbrido)

É utilizado pela maioria das controladoras de baixo custo, incluídas nas placas-mãe para desktop. Neste modo utiliza-se da combinação de funções adicionais no BIOS da placa e um driver que é executado  pelo sistema operacional. Entretanto, tudo é processado via software e não há ganho de desempenho em relação a implementação via Software, somente a configuração é simplificada.

AS TÉCNICAS E OS NÍVEIS 

Striping (Distribuição), Mirroring (Espelhamento) e Parity (Paridade) determinam a confiabilidade dos dados e as características de throughput (taxa de transferência efetiva ou quantidade de dados transferidos por unidade de tempo) de um array. Dependendo da natureza da aplicação a ser utilizada, que terá ou não como requisito(s) o melhor throughput e/ou a alta disponibilidade dos dados, pode-se implementar somente uma das técnicas, ou a combinação delas no array RAID.

Portanto, o entendimento dessas técnicas é essencial. Vamos entende-las:

Striping

Nessa técnica, dentro de cada um dos discos, um número predeterminado de blocos de filesystem endereçáveis de modo contíguo é definido como strips (Figura 1-a). Este conjunto de strips alinhados que se espalham por todos os discos dentro do array RAID é conhecido como Stripe (Figura 1-b). Veja as representações física e lógicas utilizando esta técnica. Esta organização de discos é também conhecido como  conjunto RAID Fracionado.

image
Figura 1-a

image
Figura 1-b

RAIDs Fracionados (Striping) NÃO PROTEGEM OS DADOS a menos que seja usada em combinação com uma outra técnica – Espelhamento ou Paridade.  O Foco desta técnica é melhorar significativamente o throughput do E/S.

MIrroring

Nessa técnica os dados são armazenados em pelo menos 2 discos distintos, produzindo duas cópias, ou seja, o espelhamento dos dados. Caso um dos discos apresente falhas os dados permanecem intactos no outro em funcionamento e o controlador continua no atendimento as solicitações de dados do host a partir do disco em perfeito estado do par espelhado.
image
Ao substituir o disco danificado por um novo, o controlador copia os dados do disco espelhado.

Percebemos com isto que o espelhamento, além de fornecer redundância completa dos dados, permite uma recuperação mais rápida dos dados.

É bom lembrar que a Técnica de Mirroring NÃO SUBSTITUI A BOA, VELHA E ESSENCIAL CÓPIA DE SEGURANÇA (BACKUP).

Pois a técnica somente captura as constantes alterações nos dados, enquanto que o BACKUP capitura a imagens de todos os dados em determinado momento.

Esta técnica, por envolver a duplicação dos dados, requer uma capacidade de armazenamento duas vezes a de dados sendo armazenados e por isso é considerada a mais dispendiosa. No entanto, seu uso é muito aconselhado e preferido em aplicações de missão critica.  

Apresenta um melhor throughput, pois as solicitações são atendidas simultaneamente por ambos os discos no array RAID, mas, no que tange a gravação, o desempenho é degradado devido a uma solicitação de gravação gerar duas nos discos. Neste aspecto, a técnica de Mirroring fica aquém se comparada com a técnica de Striping.

Parity

É uma técnica que utiliza um método de proteção de dados fracionado contra falhas de disco. Na figura abaixo, podemos observar que não é necessário a utilização do espelhamento, pois se utiliza um disco extra no montante de 5,  para a armazenagem da paridade (uma verificação de redundância que assegura  proteção  integral dos dados sem a necessidade de duplicação).

image
A paridade é um valor calculado e este dar-se-á por uma simples operação aritmética  BITWISE XOR sobre os dados. É uma função do controlador RAID prover este cálculo.  

As informações sobre paridades podem ser armazenadas em HDDs separados e dedicados ou ser distribuidas  por todos os discos do array RAID. 

Ao comparar esta técnica com a Striping/Espelhamento, há uma redução considerável dos custos associado a proteção dos dados. Entretanto, se houver alterações nos dados a paridade é novamente recalculada e este cálculo consome tempo além de afetar o desempenho do controlador RAID.

Agora, com um bom entendimento sobre cada uma das técnicas, podemos analisar os níveis RAID mais comuns. 

RAID nível 0 (Striping)
Corresponde ao “nível” com o maior desempenho onde são distribuídos strips de dados entre os discos do array RAID. Para ler os dados, todos os strips são juntados pelo controlador; o tamanho do stripe é especificado em um nível de host para RAID via Software e é específico do fornecedor, no caso de RAID por Hardware. É necessário pelo menos 2 unidades com a mesma capacidade de armazenamento. 
Na figura abaixo, é apresentado uma configuração RAID 0 em que os dados estão fracionados em 4 discos. Quando o número de discos aumenta o throughput melhora, pois mais dados podem ser lidos ou gravados simultaneamente.
image362

Como este nível não oferece redundância, ou seja, tolerância a falhas e proteção do dados, se um dos discos falhar, os dados de todos os discos tornam-se inacessíveis, uma vez que determinadas partes dos dados foram gravadas em todos os discos.
O RAID nível 0 é mais recomendado para utilização com aplicações de alto desempenho onde a perda de dados não é crítica. Exemplos: aplicações de CAD e tratamento de imagens e vídeos.

Para calcular a capacidade de armazenamento   devemos multiplicar o número de unidades pela capacidade do disco, ou seja, C = n*d, em que:

C = capacidade disponível;
n = número de discos;
d = capacidade do disco.

Por exemplo, em um array RAID nível 0, com quatro unidades de disco, cada unidade com a capacidade de 1000 GB, a capacidade total do conjunto seria de 4000 GB: C = (4*1000).

RAID nível 1 (Mirroring)

O “Espelhamento” é o nível tradicional para tolerância a falhas de discos, fornecendo 100% redundância. Ele consiste de pelo menos 2 discos e sempre que os dados são gravados em um disco, esses
image
mesmos dados também são gravados em um outro disco, o espelho. Assim, sempre há duas cópias dos dados.

Caso um disco falhe, o sistema simplesmente irá ao “espelho” para obter as informações desejadas.

Portanto, a falha ou a remoção de um disco, os dados preservados no outro disco permitem a não descontinuidade da operação do sistema.

As desvantagens são os custos, performance na escrita e o não uso da paridade

O RAID nível 1 é muito recomendado para aplicações que exigem alta disponibilidade com recuperação

O cálculo da  capacidade  de  armazenamento  nesta  configuração será dado pela seguinte equação: C = n*d/2 

RAID nível 2 (Bit-Striping + Hamming ECC)

Conforme se destacou no inicio do post, a tecnologia RAID surgiu no final dos anos 80, época em que os discos não eram produzidos com a tecnologia de correção de erro.
image382

Por esse motivo, foi criado o RAID nível 2, sistema que utilizava a tecnica ECC - Error Checking and Correction - conhecida como Hamming.

Tal nível não é mais utilizado por várias razões, dentre as quais podemos destacar a utilização da técnica ECC nos discos e a necessidade de grande quantidade de discos.

Vale ressaltar que este nível requer que os discos estejam com rotações sincronizadas para poder funcionar.

RAID nível 3 (Byte-Striping + Paridade dedicada)

Utiliza a distribuição a nível de bytes com um disco de paridade dedicado (veja na figura abaixo o Disk 4), isto é, os dados são fracionados entre os discos da matriz, exceto um, que armazena informações de paridade

image_thumb18_thumbUm conjunto de discos na matriz pode tolerar a falha de um disco sem (1) ocorrer qualquer perda de dados ou (2) provocar a interrupção do serviço, uma vez que a leitura dos dados é efetuada a partir de blocos de paridade.


Caso seja  necessário a substituição do disco apresentando a falha, os dados do mesmo podem ser reconstruídos num disco de substituição.No entanto, se um segundo disco falhar antes da reconstrução dos dados na unidade de substituição, todos os dados no conjunto serão perdidos. 


Vale ressaltar que este nível requer que os discos estejam com rotações sincronizadas para poder funcionar.


Este nível proporciona  uma  boa  segurança dos  dados  para  ambientes  onde  é  efetuada a leitura de grandes arquivos sequenciais


O RAID nível 3 não é recomendado  para  uma  utilização intensiva com arquivos não sequenciais, uma vez que o desempenho de leitura aleatório é prejudicado pelo disco de paridade dedicado.


A capacidade de armazenamento numa configuração RAID nível 3 é calculada através da equação:  C = (n-1)*d.

RAID nível 4 (Block-Striping + Paridade dedicada)

Semelhante ao RAID nível 3, o RAID nível 4 fraciona os dados a nível de blocos e dedica um só disco ao armazenamento da informação de paridade, o que permite que cada disco funcione independentemente quando se realiza um pedido ao sistema, seja de leitura ou escrita.

A diferença entre o nível 4 e o nível 3, é que em caso de falha de um dos discos, os dados podem ser reconstruídos em tempo real, através da utilização da paridade calculada a partir dos outros discos, sendo que cada um pode ser acessado de forma independente.


O RAID 4 é indicado para o armazenamento de arquivos grandes, onde é necessário assegurar a integridade das informações. Isso porque, neste nível, cada operação de gravação requer um novo cálculo de paridade, dando maior confiabilidade ao armazenamento, porém torna as gravações de dados mais lentas.


Para calcular a capacidade de armazenamento neste nível, a mesma equação vista no RAID nivel 3 é utilizada, ou seja,  C = (n-1)*d

RAID nível 5 (Block-Striping + Paridade distribuida)

O nível 5 é a tecnologia RAID mais popular em uso e combina a distribuição do RAID nível 0 com a redundância de dados num conjunto com um mínimo de três discos. Os dados são distribuídos por todos os discos sendo gravado um bloco de paridade (P) para cada bloco de dados na mesma faixa. Se um disco físico falhar, os dados do mesmo podem ser reconstruídos num disco de substituição
image_thumb21_thumb

Os dados, em caso de falha de um único disco, não são perdidos e nenhuma interrupção do serviço é provocada, uma vez que a leitura dos dados é efetuada a partir de blocos de paridade

No entanto, se um segundo disco falhar antes da reconstrução dos dados numa unidade de substituição, todos os dados no conjunto serão perdidos.

RAID-5 é uma boa opção para sistemas com alta dependência de leitura, como Data Mining, SGBD, etc.

O cálculo da capacidade de armazenamento numa configuração RAID nível 5 utiliza a equação C = (n-1)*d.

RAID nível 6 (Block-Striping + Paridade dupla distribuida)

Este nível funciona no modo Striping com paridade dupla (redundância de P + Q), ou seja, da mesma forma que o RAID nível 5, exceto pelo fato de que inclui um segundo elemento de paridade para permitir a sobrevivência em caso de falha de, no máximo, dois discos, sem qualquer perda de dados num array RAID, permitindo a reconstrução rápida dos dados.
image

No RAID 6 os dados são distribuídos (ou fracionados)  por todos os discos (quatro, no mínimo), sendo gravados dois blocos de paridade (P + Q) para cada bloco de dados na mesmo strip.

Se um disco físico falhar, os dados do mesmo podem ser reconstruídos num novo disco, porém, com uma demora maior do que a de RAID nível 5 devido à presença de dois conjuntos de paridade.

A  capacidade  de  armazenamento neste nível é calculada através da equação C = (n-2)*d. 


Níveis de RAID aninhados (Nested-RAID)

Além dos níveis simples descritos acima, existe a combinação de níveis que formam o Multi-RAID ou RAID aninhado (Nested-RAID). Estes níveis são muito utilizados em ambientes de Data Centers, onde o alto throughput e alta disponibilidade são essenciais. Os níveis mais utilizados são RAID 0+1 ou RAID 1+0.

RAID 0+1

Ou RAID 01 ou RAID 0/1 é conhecido como Striped Mirror, um modo RAID seguro constituído por uma replicação de conjuntos distribuídos/fracionados. Os conjuntos de discos RAID 0+1 devem conter discos em múltiplos de quatro
image
Veja no diagrama à direita que o conjunto B é uma replicação do conjunto A. 

Pode ocorrer uma falha em dois discos no máximo num conjunto de discos RAID 0+1 sem qualquer perda de dados, desde que os discos avariados não façam parte de pares RAID 0 diferentes. 

Exemplificando, no que diz respeito ao diagrama, pode ocorrer uma FALHA no Disk 1 e no Disk 2 que os dados serão preservados nos discos 3 e 4.

Este nível proporciona desempenho satisfatório devido à distribuição RAID 0, mas diminui a capacidade disponível de um dispositivo pela metade (partindo do princípio que todos os discos no conjunto têm a mesma capacidade).

A  capacidade  de  armazenamento  nesta  configuração é calculada pela seguinte equação: C = n*d/2

RAID 1+0

Ou RAID 10 ou RAID 1/0 é o inverso do RAID 0+1, ou seja, primeiro é feita a redundância (RAID 1) de discos e depois o Striping (RAID 0). Os conjuntos de discos RAID 1+0 devem conter discos em múltiplos de quatro.  
image
Num conjunto de discos RAID 10, pode ocorrer a falha de um disco em cada par replicado sem qualquer perda de dados. Entretanto, se no outro disco, que faz par com o disco problemático, ocorrer uma falha, será perdido todo o conjunto.

Na prática a grande diferença para o RAID 0+1 reside no fato da velocidade deste nível ser significativamente maior no momento da recuperação.

A  capacidade  de  armazenamento  nesta  configura-ão é calculada pela seguinte equação: C = n*d/2.




That’s all!!

[]’s e obrigado.

Juliano Ramalho

Referências:

Nenhum comentário:

Postar um comentário

Olá querido(a) leitor(a), sinta-se a vontade para deixar sua sugestão, dúvida, critica, opinião, etc. Muito obrigado. 8-)