Armazenamento de Alta Disponibilidade (I)


Conceitos sobre RAID


A sigla RAID significa Redundant Array of Inexpensive Disks e é uma tecnologia que fornece funções de armazenamento e fiabilidade através de redundância. Foi desenvolvida utilizando um grande número de discos rígidos de baixo custo unidos para formar um único dispositivo de armazenamento de grande capacidade que oferecia um desempenho, capacidade de armazenamento e fiabilidade superiores em relação aos sistemas mais antigos de armazenamento. Isto foi conseguido através da combinação de múltiplas unidades físicas numa única unidade lógica onde os dados foram distribuídos entre as unidades, numa de várias formas conhecidas como níveis de RAID.

Este conceito de virtualização de armazenamento foi inicialmente definido como Redundant Array of Inexpensive Disks (conjunto redundante de discos baratos) mas o termo mais tarde evoluiu para Redundant Array of Independent Disks como forma de dissociar a tecnologia RAID das expectativas de baixo custo.
Há duas principais razões pelas quais o RAID foi desenvolvido:

  • Redundância: Este é o factor mais importante no desenvolvimento de RAID para ambientes de servidor. Um sistema RAID típico vai garantir algum nível de tolerância a falhas, fornecendo recuperação de dados em tempo real com acesso ininterrupto no caso de ocorrer uma falha de disco; 

  • Aumento de desempenho: O aumento de desempenho só ocorre nalgumas versões específicas de RAID e será sempre dependente do número de unidades utilizadas e do controlador;

RAID baseado em software


Muitos sistemas operativos oferecem funcionalidades para a implementação de sistemas de RAID baseado em software onde o OS gera os algoritmos de RAID usando a CPU do servidor. Na verdade, a carga de processamento do RAID é suportada pela unidade de processamento central, em vez de ser pelo controlador RAID em si, o que pode limitar severamente o desempenho do RAID. Embora de implementação barata, estes sistemas não garantem qualquer tipo de tolerância a falhas; se um servidor falhar todo o sistema RAID é perdido.

RAID baseado em hardware


Ao usar controladores RAID de hardware, todos os algoritmos são gerados na placa controladora RAID, libertando assim a CPU do servidor. Num sistema desktop, um controlador RAID de hardware pode ser uma placa de expansão PCI ou PCIe placa ou um componente integrado na motherboard. Estes são mais robustos e tolerantes a falhas que o software RAID, mas requerem um controlador RAID dedicado a essa tarefa. Implementações de hardware fornecem um desempenho garantido, não acrescentam sobrecarga computacional para o computador e podem suportar muitos sistemas operativos; o controlador apresenta o conjunto RAID como apenas mais uma unidade lógica.

Unidade “Hot Spare”


Tanto os RAIDs de hardware como os de software podem suportar a utilização das chamadas drives “hot spare”, ou seja, uma unidade fisicamente instalada no conjunto mas que fica inactiva até que uma unidade activa falhe. O sistema automaticamente substitui a unidade que falhou com a de reserva, reconstruindo o conjunto com a unidade de reserva incluída. Isso reduz o tempo médio de recuperação (MTTR), mas não o elimina completamente porque uma falha adicional subsequente no mesmo grupo de redundância RAID antes deste ser totalmente reconstruído, pode resultar em perda de dados. A reconstrução pode levar várias horas, especialmente em sistemas muito carregados.


Níveis RAID Standard


RAID 0


Disco Distribuído Sem Tolerância a Falhas: Fornece distribuição de dados (data striping) espalhando blocos de cada ficheiro por várias unidades de disco, os dados são divididos em blocos e cada bloco é gravado num disco separado portanto, o desempenho de E/S é muito melhorado ao dividir a carga de E/S por muitos canais e unidades. Este nível não é um verdadeiro RAID porque não fornece qualquer redundância e não é tolerante a falhas; uma falha de apenas uma unidade resultará na perda de todos os dados do conjunto.

O RAID 0 só pode ser usado para tarefas que exigem acesso rápido a uma grande capacidade de armazenamento de disco temporária (tais como vídeo /áudio, multimédia, CAD, etc), onde em caso de uma falha de disco, os dados podem ser facilmente recarregados sem impacto para o negócio.

RAID 0

O RAID 0 oferece baixo custo e desempenho máximo e também não há desvantagens de desperdício porque todas as unidades disponíveis são usados.

RAID 1


Espelhamento: Fornece o espelhamento de disco permitindo o dobro da taxa de transacção de leitura de discos individuais e a mesma taxa de transacção que escrever em discos individuais. A taxa de transferência por bloco é igual à de um disco único mas com 100% de redundância de dados o que significa que não é necessário reconstruir em caso de uma falha no disco, apenas copiar para o disco de substituição.

RAID 1

O RAID 1 oferece uma boa relação custo-benefício e alta tolerância a falhas no entanto, tem o maior desperdício de disco de todos os tipos de RAID, porque a capacidade utilizável é de apenas 50% das unidades disponíveis no conjunto de RAID.

RAID 2


Codificação de Correcção de Erros: Não sendo uma implementação típica e por isso raramente usada, o nível 2 divide os dados ao nível do bit ao invés do nível de bloco escrevendo cada bit da palavra de dados para um disco de dados (4 neste exemplo: 0-3).

RAID 2

Cada palavra de dados tem o seu Código de Hamming Error Correcting Code (ECC) gravada nos discos ECC. Após a leitura, o código ECC verifica se os dados estão correctos ou corrige erros de disco. Tem correcção de erros em tempo real permitindo taxas de transferência de dados extremamente altas. No entanto já não é utilizado porque todos os discos modernos têm correcção de erros embutida no próprio firmware.

RAID 3


Cópia em Paralelo com Paridade: O bloco de dados é subdividido (em “fitas”), proporcionando divisão ao nível do byte e é escrito nos discos de dados, enquanto a paridade das fitas é escrita num disco de paridade dedicado.

RAID 3

Este nível, que não pode atender várias solicitações simultâneas, também é raramente usado.

RAID 4


Disco de Paridade Dedicado: O Nível 4 fornece divisão ao nível de bloco (como o nível 0) com um disco de paridade. Cada bloco inteiro é escrito num disco de dados. Paridade para blocos de mesma classificação é gerada na escrita, registada no disco de paridade e verificada na leitura. Se um disco de dados falhar, os dados de paridade são usados para criar um disco de substituição.

RAID 4

Uma desvantagem do Nível 4 é que o disco de paridade pode criar estrangulamentos de escrita porque a paridade tem que ser constantemente actualizada.

RAID 5


Paridade Distribuída por Blocos Intercalados: Fornece divisão de dados ao nível de byte e também informações de correcção de erros de cada “fita” de dados. Os dados são distribuídos em todas as unidades no conjunto, mas para cada fita através do conjunto (uma unidade de distribuição de cada disco) uma unidade de fita está reservada para armazenar dados de paridade calculada a partir das unidades de fita na mesma fita. Isso resulta num excelente desempenho e boa tolerância a falhas. O Nível 5 é uma das implementações mais populares do RAID.

RAID 5

A paridade RAID exige uma unidade de disco por conjunto RAID portanto, a capacidade utilizável para sempre será uma unidade de disco menor do que o número de discos disponíveis.

RAID 6


Discos de Dados Independentes com Dupla Paridade: Fornece divisão ao nível de bloco com paridade de dados distribuída por todos os discos. Para evitar perda de dados, um segundo conjunto de informações de paridade é adicionado; usando as fitas da informação de paridade já criadas, o controlador pode gerar um outro conjunto de paridade.

RAID 6

O RAID 6 oferece uma tolerância a falhas de dados extremamente alta e pode sustentar múltiplas falhas de disco simultâneas.

Níveis RAID não standard


Existem vários níveis RAID não standard, mas alguns deles são sistemas proprietários desenvolvidos e vendidos apenas por uma única empresa. Aqui estão os mais comuns:

RAID 0 +1


Espelho de Fitas: O RAID 0 +1 é implementado como um conjunto espelhado cujos segmentos são conjuntos RAID 0. Usado para replicar e partilhar dados entre discos.

RAID 0+1
  
Pode sustentar uma única falha num disco levando a que todo o conjunto se torne basicamente um único conjunto RAID 0. É muito caro, com um desperdício muito elevado.

RAID 10


Fita de Espelhos:  O RAID 10 é implementado como um conjunto dividido cujos segmentos são espelhos RAID 1. Este nível fornece o desempenho melhorado da divisão em fitas enquanto continua a fornecer a redundância do espelhamento.
   
RAID 10

O RAID 10 tem a mesma tolerância a falhas que o RAID 1; pode falhar um disco de cada subconjunto sem causar perda de dados. Este nível tem o mesmo desperdício que o espelhamento, ou seja, a capacidade utilizável do RAID 10 é de 50% das unidades de disco disponíveis tornando-o muito caro.

RAID 50


O RAID 50 consiste na divisão de RAID 0 distribuída por conjuntos RAID 5 de nível inferior. Altas taxas de transferência de dados são alcançadas graças aos segmentos de RAID 5, enquanto o RAID 0 permite a incorporação de vários discos numa única unidade lógica. O RAID 50 é mais tolerante a falhas que o RAID 5, mas tem o dobro da sobrecarga de paridade tornando-o assim muito caro de implementar.

RAID 50

A figura ilustra a implementação mais vulgar do RAID 50. A Falha de dois discos num dos segmentos RAID 5 torna todo o conjunto inutilizável mas o conjunto pode suportar a falha de um disco em cada um dos subconjuntos sem perda de dados.