Neste artigo, dividido em duas partes, o objetivo é levar o leitor a conhecer a tecnologia de RAID que provê segurança aliada à performance e baixo custo.

E principalmente, quando falamos em bancos de dados, performance e segurança são fundamentais, e por que não obter estas condições sem comprometer o orçamento? Definitivamente, é um ponto a ser analisado.

Espero que este artigo lhe mostre um pouco sobre está tecnologia que tende a ser cada vez mais utilizada em ambientes de produção. Boa navegação!

Conceitos

A idéia básica do RAID (Redundant Array of Independent Disks – Disposição Redundante de Discos Independentes) é combinar múltiplos discos de baixo custo em uma disposição que obtenha performance, capacidade de armazenamento e segurança que superem um único disco robusto. Para o servidor, ou máquina em que o dispositivo será instalado, a combinação de discos será transparente, ou seja, aparecerá como uma única unidade lógica.

O tempo médio entre falhas (Mean Time Between Failure - MTBF) de uma disposição de discos é igual ao MTBF de um disco individual, dividido pelo número de discos na disposição. Por esse motivo, o MTBF de uma disposição sem redundância (RAID 0) é muito baixo para um sistema de missão crítica. De qualquer forma, disposições de disco podem ser feitos com tolerância a falha através do armazenamento redundante de informações de várias maneiras.

Foram definidos inicialmente cinco tipos de arquiteturas de disposição de discos, RAID 1 até RAID 5, cada qual com tolerância a falhas porém com diferentes propostas de características e performance. Além destas cinco arquiteturas, tornou-se comum referir-se a uma disposição não redundante como RAID 0.

Faixa de discos - Disk Striping

Essencial para a tecnologia de RAID é o que chamamos de striping, que é a combinação de vários discos em apenas uma única unidade lógica de armazenamento. Esta técnica particiona o espaço de armazenamento de cada disco em faixas, que podem ser tão pequenas quanto um setor (512 bytes) ou grandes, com vários megabytes. Essas faixas são intercaladas em uma seqüência cíclica, portanto o espaço combinado é composto por faixas alternadas de cada disco (Figura 1).  Cada tipo específico de operação irá determinar se será usada uma faixa larga ou estreita. Atualmente a maioria dos sistemas operacionais suporta operações de I/O concorrentes em vários discos, no entanto, a fim de maximizar o ritmo de transferência de dados, a carga de I/O deve ser balanceada entre os discos de maneira que cada disco pode ficar ocupado enquanto for possível. Em um sistema sem a utilização de striping, a carga de I/O nunca é balanceada perfeitamente, ocasionando um acesso freqüente a um determinado disco e raro em outro.

Faixas de disco - Striping

Figura 1: Faixas de disco - Striping

Os diferentes níveis de RAID

RAID 0

É definido como um grupo de discos em faixa (striping) sem paridade ou redundância de dados. Pode ser configurada com uma faixa larga para um ambiente multi-usuário ou estreita para um sistema de usuário único que acessa uma grande quantidade de informações seqüenciais.

O RAID 0 oferece a melhor eficiência e performance no armazenamento de dados que qualquer outro tipo de disposição, já que o acesso aos discos tanto para escrita quanto leitura dos dados será feito em paralelo, garantindo performance (Figura 2). A desvantagem é que o RAID 0 não é tolerante a falhas, ou seja, caso um disco falhe, todo o sistema de armazenamento falhará.

Escrita de dados pode ocorrer simultaneamente

RAID 0 – Performance sem tolerância a falhas

Leitura de dados pode ocorrer simultaneamente.

O uso de RAID 0 é mais indicado quando custo e performance são críticos e a integridade de dados pode ser colocada de lado.

RAID 1

Esta configuração também é conhecida como espelhamento (mirroring). É simplesmente um par de discos que armazenam duplicadamente os dados, porém aparece para o sistema como apenas um disco. Imagine que tenhamos dois discos com 20 GB cada.

Para o sistema, existirá apenas uma unidade com 20 GB, pois os dados estarão sendo duplicados (espelhados) no segundo disco, e por esse motivo passamos a ter tolerância a falhas, pois se um disco falhar o conjunto continua em operação e, se os discos suportarem a tecnologia de hot-swap (troca à quente), o disco defeituoso poderá ser substituído e o sistema fará o sincronismo sem a necessidade de parada do equipamento.

Embora a técnica de striping não é usada em um único par de discos espelhados, múltiplas configurações de RAID 1 podem receber uma configuração de striping formando, juntos, um grande dispositivo de armazenamento único porém com a devida redundância oferecida pelo RAID 1 (Figura 3).

Toda escrita de dados irá para ambos os discos do par espelhado de maneira que as informações nos discos se mantenham idênticas. No entanto, cada disco pode apresentar simultâneas ou independentes operações de leitura. Portanto, o espelhamento dobra a performance de leitura em relação a um disco não espelhado enquanto que a performance de escrita se mantém a mesma. Desta forma, o RAID 1 oferece a melhor performance de qualquer tipo de disposição redundante.

Dados duplicados são escritos nos pares de disco.

Tolerância a falhas através do espelhamento

Figura 3: Tolerância a falhas através do espelhamento

As leituras podem acontecer simultaneamente em todos os discos

RAID 2

Num conjunto de RAID 2, alguns discos irão armazenar informação ECC (Error Correcting Code – Código de Correção de Erros) sobre os dados. Basicamente, teremos dois conjuntos lógicos, um armazenando dados, e outro armazenando informação ECC (Figura 4), mas apenas o conjunto que armazena os dados será visível para o usuário. Tem um custo relativamente mais alto e é tão eficaz quanto o RAID 1. Um detalhe é que esta configuração não é suportada por controladoras de RAID Adaptec.

Cada operação de escrita envolve todos os discos

Armazenamento de informações ECC

Figura 4: Armazenamento de informações ECC

Cada operação de leitura envolve todos os discos

RAID 3

Como o RAID 2, também executa um stripe nos dados entre os grupos de discos, mas apenas um disco é dedicado ao armazenamento das informações de paridade (Figura 5).

 

Ele depende da informação de ECC embutida em cada setor para detecção de erro. No caso de uma falha de disco, a recuperação dos dados é executada através do cálculo da informação faltante. Isso é feito em um sistema binário e, deste modo, se tivermos 2 dos 3 bits, pode-se recriar o bit faltante, recuperando os dados. Os registros, tipicamente, envolvem todos os discos, o que otimiza a taxa de transferência para o disco.

A vantagem desse nível é a performance e a segurança, porém, com o RAID 3 existe uma sobrecarga no disco que contém a paridade, já que tudo tem que ser calculado e escrito nele. Para cada bit escrito em qualquer outro disco, um bit é escrito no disco de paridade, gerando um gargalo de performance.

Esta configuração necessita de no mínimo 3 discos e um número ímpar de discos. Tem um alto custo devido ao grande consumo de processamento, além de também não ser suportada por controladoras de RAID Adaptec.

Cada operação de leitura e escrita envolve todos os discos

Armazenamento de informações de paridade

Figura 5: Armazenamento de informações de paridade

O acesso paralelo diminui o tempo de transferência para longos dados sequenciais.

Conclusões

Nesta primeira parte, pudemos conhecer os conceitos da tecnologia RAID e também os 4 primeiros níveis básicos de RAID, o RAID 0, 1, 2 e 3.

Pudemos perceber também que esta tecnologia permite alcançar ótimos níveis de desempenho e segurança das informações aliado a um custo baixo, se comparado aos enormes e custosos dispositivos de armazenamentos robustos, os conhecidos storages.

Daremos continuidade no próximo artigo aos níveis básicos restantes, RAID 4, 5, 6 e 7 e também aos níveis compostos mais utilizados, RAID 0+1 e RAID 0+5.

Espero contar com seu acesso na continuação deste artigo.  Até a próxima.