Documente Academic
Documente Profesional
Documente Cultură
Tipos de Raid
Este nível tem o nome de "striping". Os dados do computador são divididos entre dois ou mais
discos rígidos, o que oferece uma alta performance de transferência de dados, porém não oferece
segurança de dados, pois caso haja alguma pane em um disco rígido, todo o conteúdo gravado
neles irá ser perdido. O RAID 0 pode ser usado para se ter uma alta performance, porém não é
indicado para sistemas que necessitam de segurança de dados.
É possível usar de dois a quatro discos rígidos em RAID 0, onde os mesmos serão acessados como
se fosse um único disco, aumentando radicalmente o desempenho do acesso aos HDs. Os dados
gravados são divididos em partes e são gravados por todos os discos. Na hora de ler, os discos
são acessados ao mesmo tempo. Na prática, temos um aumento de desempenho de cerca de 98%
usando dois discos, 180% usando 3 discos e algo próximo a 250% usando 4 discos. As
capacidades dos discos são somadas. Usando 4 discos de 10 GB, por exemplo, você passará a ter
um grande disco de 40 GB.
Este modo é o melhor do ponto de vista do desempenho, mas é ruim do ponto de vista da
segurança e da confiabilidade, pois como os dados são divididos entre os discos, caso apenas um
disco falhe, você perderá os dados gravados em todos os discos. É importante citar que neste
nível você deve usar discos rígidos idênticos. É até possível usar discos de diferentes capacidades,
mas o desempenho ficará limitado ao desempenho do disco mais lento.
Neste nível são utilizados dois discos, sendo que o segundo terá uma cópia idêntica do primeiro,
ou seja, um CLONE. Na prática, será como se existisse apenas um único disco rígido instalado,
pois o segundo seria usado para espelhamento dos dados gravados no primeiro - mas caso o disco
principal falhe por qualquer motivo, você terá uma cópia de segurança armazenada no segundo
disco. Este é o modo ideal se você deseja aumentar a confiabilidade e a segurança do sistema.
Um detalhe importante em RAID 1 é que, caso os dois discos estejam na mesma IDE, (1º em
master e o 2º em slave), você teria que resetar o micro caso o primeiro disco quebrar, usando um
disco por IDE a placa fará a troca automaticamente, sem necessidade de reset.
O RAID 10 pode ser usado apenas com 4 discos rígidos. Os dois primeiros trabalharão em modo
Striping (aumentando o desempenho), enquanto os outros dois armazenarão uma cópia exata dos
dois primeiros, mantendo uma tolerância à falhas. Este modo é na verdade uma junção do RAID 0
com o RAID 1 e é muito utilizado em servidores de banco de dados que necessitem alta
performance e tolerância à falhas.
Ao contrário do que muitos pensam, o RAID 0+1 não é o mesmo que o RAID 10: embora ambos
exijam no mínimo quatro discos rígidos para operarem e funcionam de uma maneira similar, o
RAID 0+1 e tem a mesma tolerância à falha do RAID 5. No RAID 0+1, se um dos discos rígidos
falhar, ele se torna essencialmente um RAID 0
RAID 2 (ECC)
Este nível de RAID é direcionado para uso em discos que não possuem detecção de erro de
fábrica. O RAID 2 é muito pouco usado uma vez que os discos modernos já possuem de fábrica a
detecção de erro no próprio disco.
O RAID 3 divide os dados, a nível de byte, entre vários discos. A paridade é gravada em um disco
em separado. Para ser usado este nível, o hardware deverá possuir este tipo de suporte
implementado. Ele é muito parecido com o RAID 4.
O RAID 4 divide os dados, a nível de "blocos", entre vários discos. A paridade é gravada em um
disco separado. Os níveis de leitura são muito parecidos com o RAID 0, porém a gravação requer
que a paridade seja atualizada toda as vezes que ocorrerem gravações no disco, tornando-a mais
lenta a gravação dos dados no disco. O RAID 4 exige no mínimo três discos rígidos.
Existem outros RAID que são utilizados em menor escala e/ou são baseados naquele acima
mencionados:
As informações são transmitidas em modo assíncrono que são controladas e cacheadas de modo
independente, obtendo performances altíssimas.
Com certeza pode-se afirmar que o Sistema de arquitetura RAID é o mais utilizado entre
empresas que querem manter segurança de dados em seus servidores. Algumas soluções são
bastante caras, mas permitem um nível de segurança compatível com o investimento realizado.
Nosso hardware:
4 gigas de RAM
No meu caso específico, a instalação foi default, a única interação de minha parte foi no
particionamento:
Instalação do mdadm
Depois de instalado o Debian, a instalação do pacote mdadm é fundamental para a configuração
do RAID.
Configurando o HD e as partições
Depois de instalado o mdadm, vamos utilizar o cfdisk para alterar o tipo de filesystem das
partições. Durante a criação das partições na instalação, a raiz e o home foram formatadas como
ext3 e a memória virtual como swap.
# cfdisk /dev/sda
O cfdisk é um dos programas para criação e alteração das partições do HD. Para alterar o tipo de
filesystem das partições, depois de executar o comando cfdisk, com as setas do teclado, as setas
PARA BAIXO e PARA CIMA, selecione a partição "sda1".
Com as setas PARA A ESQUERDA e PARA A DIREITA, selecione TYPE , serão mostradas todos os
filesystens que o Linux suporta, escolha a opção LINUX RAID AUTODETECT, ou digite na caixinha
as letras referentes a esta opção: "FD".
Repita a operação para todas partições. Depois é só selecionar a opção ESCREVER. A nova tabela
de partições será refeita. Para que as novas configurações sejam efetivadas, vamos reiniciar o
micro.
É bom lembrar e deixar bem claro que os dois HDs não precisam obrigatoriamente ser do mesmo
tamanho, o fundamental é que as partições tenham exatamente o mesmo tamanho. No meu caso,
os dois HDs eram exatamente iguais, então a tabela de particionamento é a mesma para ambos.
No caso de HDs com tamanhos diferentes, ou mesmo fazer o RAID em uma ou duas partições, o
uso do cfdisk talvez seja a opção mais adequada.
Se os dois HDs forem idênticos, é só seguir a próxima etapa. O sfdisk é um manipulador das
tabelas de partições do Linux, o "-d" fará um dump do /dev/sda e a saída será redirecionada para
/root/partitions.txt.
Depois é só fazer o caminho inverso, pegar a tabela de particionamento que está descrita no
arquivo /root/partitions.txt e jogar no copiar depois a tabela de partições do arquivo partitions.txt
para o o segundo HD, (sdb):
O RAID irá trabalhar utilizando um dos HDs e suas respectivas partições e atualizando as partições
do outro HD, deixando-as sempre em sincronia para uma eventual falha. Desde modo, podemos
dizer que a estrutura do RAID será:
/dev/md0: ao invés de ser um dispositivo do tipo /dev/md0, ele cria um dispositivo MD,
que significa Multiple Device, ou seja, pode-se ter múltiplos dispositivos neste array;
adicionada)
Vamos reiniciar o sistema para o kernel ler as novas configurações (não é necessário, mas é bom
né?).
Digite:
# cat /proc/mdstat
Depois de criados o sistema de arquivos os dispositivos (md0 e md1) ficarão: active raid1 sdb1
# mke2fs -j /dev/md0
# mke2fs -j /dev/md1
# mkswap /dev/md2
1) Alterar o menu.lst
Este é o menu.lst de meu Debian. Em outro Linux, a versão do kernel e do initrd podem ser
diferentes.
root (hd1,0)
kernel /vmlinuz-2.6.24-1-686 root=/dev/md0 ro
Esta alteração vai fazer com que o sistema dê o boot pelo /dev/md0, a partição raiz, mas no
segundo HD, o hd1,0.
Antes o boot era dado no HD (hd0,0), primeiro HD, primeira partição. Agora é dado no (hd1,0),
segundo HD, primeira partição, ou seja, no HD RAID.
Vamos agora copiar os dados do /dev/sda para /dev/sdb. Primeiro vamos montar as partições do
segundo HD em /mnt.
Nós temos duas partições com dados: raiz e /home. Primeiro copiaremos a partição raiz.
# cd /mnt
# mkdir raiz
# mount -t ext3 /dev/md0 raiz
# cd raiz
# mkdir initrd mnt proc sys
# cp -a /boot /bin /cdrom /dev /etc /initrd.img /lib /media ./
# cp -a /opt /root /sbin /selinux /srv /tmp /usr /var /vmlinuz ./
Foram criados dentro do diretório raiz algumas pastas, mas não foram copiados para elas nenhum
dado. Isto se deu porque estes diretórios são diretórios com conteúdos dinâmicos.
A cópia dos outros diretórios tem o parâmetro "-a". Este parâmetro faz a cópia dos arquivos com
suas respectivas permissões.
# cd /mnt
# mkdir home
# mount -t ext3 /dev/md1 home
# cd home
# cp -a /home/* ./
Este processo de cópia poderá demorar devido o tamanho do HD, então é só esperar.
/etc/fstab:
Agora é hora de reiniciar o sistema. Com a cópia do conteúdo das partições para o novo HD
montado em /mnt, a alteração do menu.lst dando o boot em (HD1,0) e do fstab montando os
devices /dev/md0 e /dev/md1 o sistema carregará o novo HD.
Nós adicionamos inicialmente o segundo HD ao RAID 1, agora com o sistema rodando no segundo
HD do RAID, vamos adicionar o primeiro HD.
A adição de cada elemento no RAID pode demorar dependendo do tamanho da partição. Depois do
primeiro comando mdadm que adicionou o /dev/md0 a sincronização começa imediatamente, só
depois que terminar a sincronização é que o terminal estará livre para o segundo comando e a
sincronia do segundo elemento.
# cat /proc/mdstat
Digite:
A diferença na execução dos 2 grupos de comandos é que no primeiro ele assume o /dev/sda
como partição de trabalho, no segundo ele assume o /dev/sdb. Isto foi feito para escrever na MBR
de cada HD as informações de onde está o /boot.
O menu.lst foi (re)criado em /boot/grub, mas ele ainda está sem indicar que o sistema é um
RAID, o parâmetro root ainda está apontando para o sda1, lugar onde originalmente está o /boot.
É necessário alterar este parâmetro para que se um dos HDs falhar, na hora do próximo boot ele
assuma que o outro HD é o principal.
Para editar:
# vim /boot/grub/menu.lst
Na linha:
Troque para:
Depois destas configurações, o sistema está pronto para suportar uma eventual falha de um dos
HDs.
Utilizando o mdadm:
Este comando fará com que o segundo disco (/dev/sdb5), primeira partição, que está no array
md0 pare de funcionar.
Os parâmetros:
1 0 0 1 Removed
O sistema está com um "crash". Segundo o comando, o /dev/sdb5 foi removido do RAID.
Corrigindo o problema
Vimos que o /dev/md1 /dev/sdb5 está danificado. Poderia ser um erro por causa de um erro físico
no HD, ou mesmo um HD queimado.
Se for um HD com problemas físicos, a primeira coisa a ser feita é colocar outro HD no lugar.
Depois é necessário remover do RAID as partições que estão no array para depois adicioná-las
novamente.
Para remover:
Supondo que o HD pifou de vez e tenha que colocar outro, a melhor alternativa é colocar um HD
igual ao primeiro, mas não é a única chance do RAID funcionar, o fundamental é que as partições
tenham o mesmo tamanho.
Para colocar o novo HD fazendo o RAID, basta seguir os passos a partir do item COPIANDO A
TABELA DE PARTICIONAMENTO e seguir até o final.
Considerações finais
Esta solução é uma boa alternativa para dar uma segurança ao sistema em caso de falhas. Mas é
bom lembrar que o RAID não é backup. Um backup sempre é importante, mesmo em sistemas
RAID.