27.9.06

Hardware: RAID

RAID, é a sigla de Redundant Array of Independent Disks e é basicamente um meio de se criar unidades virtuais, compostas por vários discos físicos independentes, com as funcionalidades de duplicação (redundância) ou balanceamento (operações de input e output em paralelo).
É uma tecnologia que combina vários discos rígidos para formarem uma única unidade lógica onde os dados são armazenados. Para o utilizador, não existem vários discos rígidos, mas sim um. A grande vantegem deste sistema é a tolerância a falhas pois, se um disco avariar, os outros continuam a funcionar (atenção que existem vários níveis de RAID).
Como é óbvio, a tecnologia RAID só faz sentido se existerem mais de dois discos rígidos.

Existem então três conceitos importantes para conhecermos em detalhe o RAID: mirroring, duplexing e data stripping.

1. Mirroring

É a forma pela qual fazemos um mirror (espelho) de um disco para outro; basicamente, é a execução de uma cópia de um disco para outro.
Ao ser feita uma escrita de dados no disco 1, os mesmos são também escritos no disco 2 (redundância dos dados).
Esta operação é excelente, caso um dos discos falhe, pois a informação começa a ser transferida do disco de suporte enviando um alerta ao administrador do sistema; o grande problema, é se a falha ocorrer no controlador dos discos, impedindo o acesso aos dois...
Por uma questão de optimização, as duas unidades de disco (o disco 1 e o disco 2) devem ter a mesma dimensão.

2. Duplexing

O duplexing é exactamente igual ao mirroring, com a excepção de ter um controlador por disco, aumentando assim a tolerância a falhas.

3. Data Stripping

Vamos supor que se tem um sistema com dois discos rígidos iguais: 80 Gb + 80 Gb.
Num sistema sem RAID, o acesso aos discos é feito de forma independente.
Ao dividirmos os dados, os dois discos farão parte do mesmo conjunto, criando um só disco virtual de 160 Gb (também não é assim tão linear, mas serve para exemplo). Ao gravar o ficheiro, o mesmo será partido em dois, sendo cada metade gravada em cada um dos discos físicos. O utilizador não tem qualquer intervenção neste processo.
Um dos maiores problemas nos sistemas é a velocidade de acesso aos discos. Com o RAID, este problema é resolvido.
Se tivermos um ficheiro com uma dimensão 2n e o quisermos gravar por inteiro num disco, ele ocupará um dado tempo t para o acesso, utilizando o único canal de comunicação disponível; mas, se tivermos dois discos em RAID, o ficheiro será dividido em dois ficheiros de dimensão n cada um e gravado em simultâneo nos dois discos, num intervalo de tempo t/2. Desta forma, a velocidade de acesso 'duplicou'!
Quantos mais discos tivermos, mais eficiente se tornará o sistema, e também mais caro...

O stripping do disco parte então os dados em pequenas porções e escreve-as em simultâneo em pequenas áreas denominadas stripes (tiras).
O stripping dos dados apenas aumenta a performance do sistema, não implementando tolerância a falhas.


Níveis de RAID:

RAID 0
Implementa o Data Stripping sem quaisquer métodos de segurança e integridade.
Como não tem qualquer tipo de redundância, se um disco avariar, os dados perdem-se.
Vantagens: é económico e não necessita de hardware de alta performance. Muito utilizado em sistemas com aplicações que necessitem de grande capacidade de armazenamento e acessos rápidos. Só é conveniente a sua utilização, caso exista um serviço de backup de dados.

RAID 1
Implementa o Mirroring.
Fornece dois métodos para optimizar a performance de leitura: round-robin schedulling e assigned cylinder schedulling.
No round-robin, os pedidos de leitura são alternados entre os discos; o segundo método permite dar a cada uma das unidades de disco a responsabilidade de cobrir metade do disco. Assim, os cilindros do disco são dividido em tantos sectores de 'responsabilidade' para as cabeças de leitura, quantos os discos que existirem.
O RAID fornece baixa performance de escrita mas uma excelente redundância dos dados.

RAID 2
Implementa o Data-Stripping com Detecção de Erros.
Distribui os dados pelas unidades de disco, utilizando um processo de detecção e correcção de erro.
Armazena informação ECC (Error Correcting Code), que é a informação de controle de erros.

RAID 3
É um Data-Stripping com uma técnica de recuperação de dados através de uma drive que armazena apenas bits de paridade.
Se tivermos RAID 3 com 3 discos (o ficheiro a graver será dividido em 3): os stripes 1 e 3 irão para o disco A; o stripe 2 irá para o disco B; o disco C armazena um bit de paridade que permitirá recuperar os dados caso um dos discos avarie.
Usa o menor tamanho possível para o stripe.

RAID 4
É semelhante ao RAID 3 mas implenta a distribuição dos dados ao nível de sectores ao invés de bytes (RAID 3).
É mais performante que o seu congénere e necessita de 3 ou mais discos iguais.

RAID 5
Igual aos anteriores mas, neste caso, todas as drives são do mesmo tamanho, uma das unidades fica inacessível ao Sistema Operativo e o bit de paridade é escrito em todas as drives.
Se tivermos 3 discos de 100 Gb, o espaço equivalente a um dos discos será reservado para os bits de paridade, disponibilizando apenas 200 Gb ao Sistema Operativo.

RAID 6
É uma actualização mais comercial do RAID 5.
Existe um disco adicional que entra em funcionamento caso um dos discos activos avarie.

RAID 10
Basicamente é RAID 0 + RAID 1 mas necessita de 4 discos rígidos.


Tipos de RAID:

Existem 2 tipos de RAID, sendo um baseado em hardware e o outro baseado em software.
O primeiro tipo é o mais utilizado, pois não depende do sistema operativo (pois estes visualizam um único disco grande) e são bastante rápidos, o que possibilita explorar integralmente seus recursos. A sua principal desvantagem é ser caro inicialmente.
O RAID baseado em hardware, utiliza dispositivos denominados "controladores RAID", que podem ser, inclusive, conectados nos slot da motherboard do computador.
O RAID baseado em software não é muito utilizado, pois apesar de ser mais barato, é mais lento, possui mais dificuldades de configuração e depende do sistema operativo para ter um desempenho satisfatório. O RAID por software ainda fica dependente das capacidades de processamento do computador em que é utilizado.

11.9.06

A grande engenharia sempre presente.

O que é preciso é boa disposição para levarmos o barco a bom porto.
Uma imagem de dois dos nossos engenheiros tentando montar um sistema baseado num chip 555...