# RAID

RAID foi originalmente denominado de "Redundant Array of Inexpensive Drives" (Conjunto Redundante de Discos Baratos). Com o tempo, numa tentativa de dissociar o conceito de "discos baratos", a indústria reviu o acrônimo para "Redundant Array of Independent Disks" (Conjunto Redundante de Discos Independentes).
RAID é um meio de se criar um subsistema de armazenamento composto por vários discos individuais, com a finalidade de ganhar segurança -- por meio da redundância de dados -- e desempenho. Popularmente, RAID seriam dois ou mais discos (por exemplo, HD ou disco rígido e até SSD) trabalhando simultaneamente para um mesmo fim, por exemplo, citando o exemplo de RAID 1 logo abaixo, serviria como um espelhamento simples, rápido e confiável entre dois discos, para se fazer uma cópia idêntica de um disco em outro.
O RAID oferece segurança e confiabilidade por meio da adição de redundância. Se um disco falhar, o outro continua funcionando normalmente e o usuário nem percebe diferença. O administrador é avisado pelo sistema e substitui o disco que falhou. Apesar disso, o RAID não protege contra falhas de energia ou erros de operação ou contra a falha simultânea dos dois discos. Falhas de energia, código errado de núcleo ou erros operacionais podem danificar os dados de forma irrecuperável. Por este motivo, mesmo usando-se o RAID não se dispensa a tradicional cópia de backup.

## História

O RAID foi proposto em 1988 por David A. Patterson, Garth A. Gibson e Randy H. Katz na publicação "Um Caso para Conjuntos de Discos Redundantes Econômicos (RAID)". Publicado na Conferência SIGMOD de 1988: pp. 109–16.

## Vantagens

* Ganho de desempenho no acesso.
* Redundância em caso de falha em um dos discos.
* Uso múltiplo de várias unidades de discos.
* Facilidade em recuperação de conteúdo perdido.
* Aumento de segurança.

## Arquiteturas
### Implementação via software

Na implementação via software, o sistema operacional gerencia o RAID através da controladora de discos, sem a necessidade de um controlador de RAIDs, tornando-a mais barata.
Nesse tipo de implementação, todo o processamento necessário para o gerenciamento do RAID é feito pela CPU. Toda movimentação de dados (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, e é controlada pelo sistema operacional.
A configuração do RAID via software é feita pelo sistema operacional, que precisa ser implementado no próprio núcleo a utilização de RAIDs via software. É possível criar RAIDs via software nos sistemas operacionais Apple Mac OS X, Linux, FreeBSD, OpenBSD e no Microsoft Windows (versão server). Alternativamente, também podem ser criados com algum software especialmente dedicado a manutenção de discos rígidos do fabricante da placa mãe (quando há suporte para RAID, é claro).

### Implementação via hardware

Controladoras RAID em hardware usam layouts de disco proprietários (e diferentes). Por isso, normalmente não é possível misturar controladoras de fabricantes diferentes. Eles não utilizam recursos do processador. O BIOS - Basic Input/Output System - pode iniciar (dar boot) por ela, e uma integração maior com o driver de dispositivo pode oferecer um melhor tratamento de erros.
Uma implementação de RAID em hardware requer pelo menos uma controladora especialmente dedicada para isso. Em uma estação de trabalho (PC comum) isso pode ser uma placa de expansão PCI, PCI-e ou uma placa integrada à placa-mãe. Controladoras utilizando a maioria dos tipos de drive podem ser usadas - IDE/ATA, Serial ATA, SCSI, SSA, Fibre Channel, e às vezes uma combinação. A controladora e os discos utilizados devem estar isolados. Podem estar conectados diretamente ao computador, ou conectados via SAN. A controladora gerencia os drives e faz os cálculos de paridade necessários pelo nível de RAID escolhido.
A maioria das implementações em hardware proveem cache de leitura e escrita, o que (dependendo da carga de I/O) melhora a performance. Na maioria dos casos, o cache de escrita é não-volátil (protegido por bateria), e portanto, escritas pendentes não são perdidas no caso de uma falha no suprimento de energia. Implementações em hardware promovem performance garantida, não sobrecarregam o processador e podem suportar vários sistemas operacionais, já que a controladora apresentará ao sistema operacional um disco simples.
A maioria das implementações em hardware também suporta o "hot-swapping", permitindo que discos com falha sejam substituídos enquanto o sistema está sendo executado.

### Falso RAID

A implementação via software geralmente não possui uma fácil configuração. Já na implementação via hardware as controladoras tem um preço muito elevado. Então foi criada uma "controladora barata" que em vez de um chip controlador RAID você utiliza uma combinação de funções especiais na BIOS da placa e drivers instalados no sistema operacional.

### Comparação entre as arquiteturas

Ao compararmos RAIDs por software e por hardware percebe-se que os implementados através de software são mais flexíveis que os via hardware. Por outro lado, os primeiros exigem da CPU mais tempo de processamento.
Comparando os dispositivos de blocos, os em software também são flexíveis podendo ser usados em discos inteiros, partições ou outro dispositivo de bloco.

### RAID

O sistema RAID consiste em um conjunto de dois ou mais discos rígidos com dois objetivos básicos:
* tornar o sistema de disco mais rápido (isto é, acelerar o carregamento de dados do disco), através da técnica de divisão de dados (data striping ou RAID 0), na qual segmentos consecutivos de dados lógicos são armazenados em diferentes dispositivos físicos de armazenamento;
* tornar o sistema de disco mais seguro, através da técnica de espelhamento (mirroring ou RAID 1), na qual volumes lógicos de discos são fisicamente separados em diferentes dispositivos físicos de armazenamento.
Essas duas técnicas podem ser usadas isoladamente ou em conjunto.

## Níveis padrão de RAID

Níveis de RAID são as várias maneiras de combinar discos para um fim.
Originalmente existiam 5 níveis de RAID, mas muitas variações surgiram, níveis RAID aninhados/híbridos (nested RAID) e níveis não padronizados (non-standard RAID, na maioria formatos proprietários). Os níveis RAID e os formatos de dados associados são padrões do Storage Networking Industry Association (SNIA) no padrão Common RAID Disk Drive Format (DDF):

### RAID 0 (Striping)

No striping, ou distribuição, os dados são subdivididos em segmentos consecutivos (stripes, ou faixas) que são escritos sequencialmente através de cada um dos discos de um array, ou conjunto. Cada segmento tem um tamanho definido em blocos. A distribuição, ou striping, oferece melhor desempenho comparado a discos individuais, se o tamanho de cada segmento for ajustado de acordo com a aplicação que utilizará o conjunto, ou array.
Há problemas de confiabilidade e desempenho. RAID-0 não terá desempenho desejado com sistemas operacionais que não oferecem suporte a busca combinada de setores. Uma desvantagem desta organização é que a confiança se torna geometricamente pior. Um disco SLED com um tempo médio de vida de 20.000 horas será 4 vezes mais seguro do que 4 discos funcionando em paralelo com RAID 0 (admitindo-se que a capacidade de armazenamento somada dos quatro discos for igual ao do disco SLED). Como não existe redundância, não há confiabilidade neste tipo de organização.
Vantagens:
* acesso rápido as informações
* custo baixo para expansão de memória.
Desvantagens:
* caso algum dos setores de algum dos HDs venha a apresentar perda de informações, o mesmo arquivo que está dividido entre os mesmos setores dos demais HDs não terão mais sentido existir, pois uma parte do arquivo foi corrompida, ou seja, caso algum disco falhe, não tem como recuperar;
* não tem espelhamento;
* não é usada paridade.

#### Vetor RAID 0 Linear

É uma simples concatenação de partições para criar uma grande partição virtual.

### RAID 1 (Mirroring)

RAID-1 é o nível de RAID que implementa o espelhamento de disco, também conhecido como mirror. Para esta implementação são necessários dois discos ou mais. O funcionamento deste nível é simples: todos os dados são gravados em discos diferentes; se um disco falhar ou for removido, os dados preservados no outro disco permitem a não descontinuidade da operação do sistema.
Vantagens:
* caso algum setor de um dos discos venha a falhar, basta recuperar o setor defeituoso copiando os arquivos contidos do segundo disco;
* segurança nos dados (com relação a possíveis defeitos que possam ocorrer no HD).
Desvantagens:
* custo relativamente alto se comparado ao RAID 0;
* ocorre aumento no tempo de escrita;
* Tem espelhamento;
* não é usada paridade.

### RAID 2

O RAID 2 surgiu no final dos anos 80, quando os HDs ainda não possuíam checagem de erros. Assim, pode-se dizer que o RAID 2 é similar ao RAID 0, mas possuindo algoritmos de Hamming ECC (Error Correcting Code), que é a informação de controle de erros, no lugar da paridade. Além disso, pode-se ter várias configurações, como 10 discos normais + 4 discos somente para ECC. Este fato possibilita uma proteção adicional, porém o RAID 2 ficou obsoleto pelas novas tecnologias de disco já possuírem este tipo de correção internamente. O RAID 2 origina uma maior consistência dos dados se houver queda de energia durante a escrita. Baterias de segurança e um encerramento correto podem oferecer os mesmos benefícios.
Vantagem:
* usa ECC, diminuindo a quase zero as taxas de erro, mesmo com falhas de energia.
Desvantagens:
* hoje em dia, há tecnologias melhores para o mesmo fim.
* dependendo da configuração e necessidade da empresa, era necessário a mesma quantidade de discos ECC para discos normais, isto é, desperdício de espaço que poderia ser usado para dados.

### RAID 3

O RAID 3 é uma versão simplificada do RAID nível 2. Nesse arranjo, um único bit de paridade é computado para cada palavra de dados e escrito em um drive de paridade. À primeira vista, pode parecer que um único bit de paridade dá somente detecção de erro, e não correção de erro. Para o caso de erros aleatórios não detectados, essa observação é verdadeira. Todavia, para o caso de uma falha de drive, ela provê correção total de erros de um bit, uma vez que a posição do bit defeituoso é conhecida. Se um drive falhar, o controlador apenas finge que todos os seus bits são "zeros". Se uma palavra apresentar erro de paridade, o bit que vem do drive extinto deve ter sido um "um", portanto, é corrigido.
A fim de evitar o atraso em razão da latência rotacional, o RAID 3 exige que todos os eixos das unidades de disco estejam sincronizados. A maioria das unidades de disco mais recentes não possuem a opção de sincronização do eixo, ou se são capazes disto, faltam os conectores necessários, cabos e documentação do fabricante.
Vantagens:
* leitura rápida;
* escrita rápida;
* possui controle de erros.
Desvantagem:
* Montagem difícil via software.

### RAID 4

O RAID 4 funciona com três ou mais discos iguais. Um dos discos guarda a paridade (uma forma de soma de segurança) da informação contida nos discos. Se algum dos discos avariar, a paridade pode ser imediatamente utilizada para reconstituir o seu conteúdo. Os discos restantes, usados para armazenar dados, são configurados para usarem segmentos suficientemente grandes (tamanho medido em blocos) para acomodar um registro inteiro. Isto permite leituras independentes da informação armazenada, fazendo do RAID 4 um array perfeitamente ajustado para ambientes transacionais que requerem muitas leituras pequenas e simultâneas.
O RAID 4 assim como outros RAID's, cuja característica é utilizarem paridade, usam um processo de recuperação de dados mais envolvente que arrays espelhados, como RAID 1. Este nível também é útil para criar discos virtuais de grande dimensão, pois consegue somar o espaço total oferecido por todos os discos, exceto o disco de paridade. O desempenho oferecido é razoável nas operações de leitura, pois podem ser utilizados todos os discos em simultâneo.
Sempre que os dados são escritos no array, as informações são lidas do disco de paridade e um novo dado sobre paridade deve ser escrito para o respectivo disco antes da próxima requisição de escrita ser realizada. Por causa dessas duas operações de I/O, o disco de paridade é o fator limitante do desempenho total do array. Devido ao facto do disco requerer somente um disco adicional para proteção de dados, este RAID é mais acessível em termos monetários que a implementação do RAID 1.
Vantagens:
* taxa de leitura rápida;
* possibilidade do aumento de área de discos físicos.
Desvantagens:
* taxa de gravação lenta;
* em comparação com o RAID 1, em caso de falha do disco, a reconstrução é difícil, pois o RAID 1 já tem o dado pronto no disco espelhado;
* tecnologia não mais usada por haver melhores para o mesmo fim.

### RAID 5 (Distributed parity)

O RAID 5 é frequentemente usado e funciona similarmente ao RAID 4, mas supera alguns dos problemas mais comuns sofridos por esse tipo. As informações sobre paridade para os dados do array são distribuídas ao longo de todos os discos do array, ao invés de serem armazenadas num disco dedicado, oferecendo assim mais desempenho que o RAID 4, e, simultaneamente, tolerância a falhas.
Para aumentar o desempenho de leitura de um array RAID 5, o tamanho de cada segmento em que os dados são divididos pode ser optimizado para o array que estiver a ser utilizado. O desempenho geral de um array RAID 5 é equivalente ao de um RAID 4, exceto no caso de leituras sequenciais, que reduzem a eficiência dos algoritmos de leitura por causa da distribuição das informações sobre paridade. A informação sobre paridade é distribuída por todos os discos; perdendo-se um, reduz-se a disponibilidade de ambos os dados e a paridade, até à recuperação do disco que falhou. Isto causa degradação do desempenho de leitura e de escrita.
Ao usar 8 HDs de 20 GB cada um, em RAID 5, em um total de 160 GB de dados, teremos 20 GB de paridade (capacidade de 1 HD) e 140 GB disponíveis.
Vantagens:
* maior rapidez com tratamento de ECC;
* leitura rápida (porém escrita não tão rápida).
Desvantagem:
* sistema complexo de controle dos discos.

### RAID 6 (Dual parity)

É um padrão relativamente novo, suportado por apenas algumas controladoras. É semelhante ao RAID 5, porém usa o dobro de bits de paridade, garantindo a integridade dos dados caso até 2 dos HDs falhem ao mesmo tempo. Mínimo de 4 HDs para ser implementado. Ao usar 8 HDs de 20 GB cada um, em RAID 6, em um total de 160 GB de dados, teremos 40 GB de paridade (capacidade de 2 HDs) e 120 GB disponíveis.
Vantagem:
* possibilidade falhar 2 HDs ao mesmo tempo sem perdas.
Desvantagens:
* precisa de N+2 HDs para implementar por causa dos discos de paridade;
* escrita lenta;
* complexo sistema de controle dos HDs.

## RAID aninhados (híbridos)

No que originalmente denominado RAID híbrido, muitos controladores de armazenamento permitem que níveis RAID sejam aninhados. Os elementos de um RAID podem ser drives individuais ou arrays.
O array final é chamado de top array. Quando o top array é RAID 0 (como em RAID 1+0 e RAID 5+0), é comum se omitir o separador "+" (ficando RAID 10 e RAID 50, respectivamente).

### RAID 01 (RAID 0+1)

O RAID 0+1 é uma combinação dos níveis 0 (Striping) e 1 (Mirroring), onde os dados são divididos entre os discos para melhorar o rendimento, mas também utilizam outros discos para duplicar as informações. Assim, é possível utilizar o bom rendimento do nível 0 com a redundância do nível 1. No entanto, é necessário pelo menos 4 discos, e em quantidade par, para montar um RAID desse tipo. Tais características fazem do RAID 0+1 o mais rápido e seguro, porém o mais caro de ser implantado.
No RAID 0+1, se um dos discos vier a falhar, o sistema vira um RAID 0.
Ex: se os dois discos que possuam a sequência A1,A3,A5,A7 falharem ao mesmo tempo, haverá perda de dados. Se apenas uma das controladoras falhar, o sistema continua funcionando, mas sem o ganho de velocidade nem tolerância a outra falha.
Vantagens:
* segurança contra perda de dados;
* pode falhar 1 dos HDs, ou os dois HDs do mesmo DiskGroup, porém deixando de ser RAID 0+1.
Desvantagens:
* alto custo de expansão de hardware (custo mínimo = 4N HDs);
* os drives devem ficar em sincronismo de velocidade para obter a máxima performance.

### RAID 10 (RAID 1+0)

O RAID 10 também é outra combinação dos níveis 0 (Striping) e 1 (Mirroring). Cada par será espelhado (RAID 1), garantindo redundância, e os pares serão distribuídos (RAID 0), melhorando desempenho. Assim como o RAID 0+1, o RAID 10 exige ao menos 4 discos rígidos, e em quantidade par. Até metade dos discos pode falhar simultaneamente, sem colocar o conjunto a perder, desde que não falhem os dois discos de um espelho qualquer — razão pela qual usam-se discos de lotes diferentes de cada "lado" do espelho. É o nível recomendado para bases de dados, por ser o mais seguro e dos mais velozes, assim como qualquer outro uso onde a necessidade de economia não se sobreponha à segurança e desempenho.
Vantagens:
* segurança contra perda de dados;
* pode falhar um ou dois dos HDs ao mesmo tempo, dependendo de qual avaria.
Desvantagens:
* alto custo de expansão de hardware (custo mínimo = 4N HDs);
* os drivers devem ficar em sincronismo de velocidade para obter a máxima performance.

### RAID 50 (RAID 5+0)

O RAID 50 é um arranjo híbrido que usa as técnicas de RAID com paridade (RAID 5) em conjunção com a segmentação de dados (RAID 0). Um arranjo RAID 50 é essencialmente um arranjo com as informações segmentadas através de dois ou mais arranjos. Veja o esquema representativo na imagem ao lado.
Vantagens:
* alta taxa de transferência;
* ótimo para uso em servidores.
Desvantagem:
* alto custo de implementação e expansão de memória.

### RAID 100 (RAID 10+0)

O RAID 100 é implementado utilizando uma combinação de software e hardware, ou seja, implementa-se o RAID 0 via software sobre o RAID 10 via hardware.

### JBOD

"Embora seja relacionado ao RAID, o JBOD não é um modo RAID, mas também é bastante usado, sobretudo em servidores de arquivos. No JBOD (Just a Bunch Of Disks) os HDs disponíveis são simplesmente concatenados e passam a ser vistos pelo sistema como um único disco, com a capacidade de todos somada. Os arquivos são simplesmente espalhados pelos discos, com cada um armazenando parte dos arquivos (neste caso arquivos completos, e não fragmentos como no caso do RAID 0).
No JBOD não existe qualquer ganho de desempenho, nem de confiabilidade. Caso um dos HDs apresente defeito, os arquivos armazenados nele são perdidos, mas os arquivos armazenados nos demais continuam intactos. Na verdade, o único ganho é o de praticidade, com a possibilidade de usar vários discos para formar um único volume de grande capacidade, ao invés de ter que espalhar os arquivos e pastas entre os vários HDs.
Ao contrário dos outros modos RAID, não existe nenhum problema em combinar HDs com capacidades e desempenho variados num sistema JBOD. Cada HD pode dar sua parcela de contribuição, independentemente de sua capacidade."
* Referencias: http://www.hardware.com.br