Sunteți pe pagina 1din 10

Instalando e configurando um sistema RAID 1 no Debian Lenny

Tipos de Raid

RAID 0 - striping sem tolerância à falha

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.

RAID 1 (mirror e duplexing)

O RAID 1 também é conhecido como "espelhamento", ou seja, os dados do computador são


divididos e gravados em dois ou mais discos ao mesmo tempo, oferecendo, portanto, uma
redundância dos dados com segurança contra falha em disco. Esse nível de RAID tende a ter uma
demora maior na gravação de dados nos discos, pelo fato da replicação ocorrer entre os dois
discos instalados, mais sua leitura será mais rápida, pois o sistema terá duas pontes de procura
para achar os arquivos requeridos.

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.

RAID 10 (mirror e striping com alta performance)

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.

RAID 0+1 (alta performance com tolerância)

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.

RAID 3 (cópia em paralelo com paridade)

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.

RAID 4 (paridade em separado)

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.

RAID 5 (paridade distribuída)

O RAID 5 é comparável ao RAID 4, mas ao invés de gravar a paridade em um disco separado, a


gravação é distribuída entre os discos instalados. O RAID 5 aumenta a velocidade em gravações
de arquivos pequenos, uma vez que não há um disco separado para a paridade. Porém como o
dado de paridade tem que ser distribuído entre todos os discos instalados, durante o processo de
leitura, a performance deverá ser um pouco mais lenta que o RAID 4. O RAID 5 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:

RAID 6 (dupla paridade)

É essencialmente uma extensão do RAID 5 com dupla paridade

RAID 7 (altíssima performance)

As informações são transmitidas em modo assíncrono que são controladas e cacheadas de modo
independente, obtendo performances altíssimas.

RAID 53 (alta performance)

É essencialmente um RAID 3 com cinco discos rígidos.

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.

Descrição do RAID feito por Danilo Montagna - obrigado pelo texto!


Montando o sistema RAID
Depois de analisar o cenário que estamos inseridos, optei pelo RAID 1. Fazer a redundância entre
2 HDs resolvia eficientemente nosso problema.

Nosso hardware:

 Pentium dual core

 4 gigas de RAM

 2 HDS sata de 500 gigas

 placa mãe asus

Instalando o Debian no primeiro HD, /dev/sda


A instalação do Debian não tem segredo. Os passos não serão descritos aqui neste artigo. Um
artigo, aqui mesmo do VOL trata detalhadamente do assunto: Instalação do Debian GNU/Linux -
Passo a passo

No meu caso específico, a instalação foi default, a única interação de minha parte foi no
particionamento:

 /dev/sda1 - / - raiz - ext3 - 300.1 gigas

 /dev/sda5 - /home - ext3 - 198 gigas

 /dev/sda6 - swap - 2 gigas

Instalação do mdadm
Depois de instalado o Debian, a instalação do pacote mdadm é fundamental para a configuração
do RAID.

# apt-get install mdadm

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.

Alteração das partições sda1, sda5 e sda6 para "FD":

# 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.

Copiando a tabela de particionamento


Depois de reiniciar, as modificações feitas já foram efetivadas. Como temos dois HDs, temos que
fazer o particionamento deste. Uma alternativa é abrir o cfdisk, desta vez trabalhando com o
/dev/sdb, ou usar o sfdisk para copiar a tabela de partições do HD master (/dev/sda) para um
arquivo txt e depois pegar a tabela de partições descritas neste arquivo e importar para o segundo
HD.

É 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.

# sfdisk -d /dev/sda > /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):

# sfdisk /dev/sdb < /root/partitions.txt

Para efetivar as mudanças, reiniciar o computador.

Criando os dispositivos RAID


Com todos os HDs e partições já configurados para trabalharem como RAID, agora está na hora
de fazer a configuração.

Relembrando a estrutura criada na hora da instalação do Ubuntu.

 O /dev/sda tem 3 partições: Raiz, /home e swap

 O /dev/sdb tem 3 partições: Raiz, /home e swap, feitas a partir do sfdisk.

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á:

 a raiz é /dev/sda1 e /dev/sdb1

 o home é /dev/sda5 e /dev/sdb5

 swap é /dev/sda6 e /dev/sda6

Criando o primeiro dispositivo md0


Até este ponto de nossa instalação, criamos toda a estrutura para que o RAID fosse
implementado, mas ele ainda não foi efetivamente feito. A partir de agora usaremos toda a
estrutura para implementar o sistema.

O mdadm foi instalado e está pronto para ser usado.

# mdadm --create /dev/md0 --level=1 --raid-devices=2 missing /dev/sdb1

A sintaxe e os parâmetros do comando:

 --create: cria o dispositivo;

 /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;

 --level=1: é o nível do RAID, estamos usando RAID 1

 --raid-devices=2: número de devices/HDs no RAID. No nosso caso são 2 HDs;

 missing: uma partição está faltando no array (momentaneamente, depois será

adicionada)

 /dev/sdb1: Partição que será adicionada ao array /dev/md0

Criando o segundo dispositivo md1


Vamos criar agora o /dev/md1. Ele será o /home:

# mdadm --create /dev/md1 --level=1 --raid-devices=2 missing /dev/sdb5

Criando o terceiro dispositivo md2


Vamos criar agora o /dev/md2. Ele será a swap:

# mdadm --create /dev/md2 --level=1 --raid-devices=2 missing /dev/sdb6

Vamos reiniciar o sistema para o kernel ler as novas configurações (não é necessário, mas é bom
né?).

Depois do reboot, vamos verificar se os novos dispositivos foram criados.

Digite:

# cat /proc/mdstat

Provavelmente eles estarão como: --active (auto-read-only)

Depois de criados o sistema de arquivos os dispositivos (md0 e md1) ficarão: active raid1 sdb1

Criando o sistema de arquivos das partições RAID


Com o segundo HD, e suas respectivas partições, já inserido no array, vamos criar o filesystem
para cada uma destas partições.
Criar um filesystem ext3 na partição /dev/md0 - RAIZ:

# mke2fs -j /dev/md0

Cria um filesystem ext3 na partição /dev/md1 - /home:

# mke2fs -j /dev/md1

Criar um filesystem swap na partição /dev/md2:

# mkswap /dev/md2

Copiando o conteúdo do primeiro HD para o segundo


O segundo HD já está pronto, o filesystem já foi criado, mas as partições ainda estão vazias, sem
a estrutura de diretórios e seus respectivos arquivos.

Antes de iniciar a cópia dos dados, vamos alterar o menu.lst.

1) Alterar o menu.lst

title Debian GNU/Linux, kernel 2.6.24-1-686


root (hd1,0)
kernel /vmlinuz-2.6.24-1-686 root=/dev/md0 ro
initrd /initrd.img-2.6.24-1-686
savedefault

Este é o menu.lst de meu Debian. Em outro Linux, a versão do kernel e do initrd podem ser
diferentes.

As alterações ocorreram nas linhas:

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.

Criando o sistema de arquivos das partições RAID - cont

Copiando para o segundo HD (hd1) os dados das partições do primeiro HD (hd0).

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.

Seguindo o mesmo raciocínio, copiaremos a partição /home:

# 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.

O próximo passo é alterar o arquivo /etc/fstab que está no diretório /mnt/raiz/etc/fstab. A


alteração deste arquivo é importante pois ele montará os devices do sistema. O fstab que foi lido
na hora do boot não reflete o novo ambiente com o RAID 1 configurado. No novo fstab, os devices
devem ser alterados para md0 e md1.

/etc/fstab:

proc /proc proc defaults 0 0


/dev/md0 / ext3 defaults,errors=remount-ro 0
1
/dev/md1 /home ext3 defaults 0 2
/dev/sda6 none swap sw 0 0
/dev/hda /media/cdrom0 udf,iso9660 user,noauto 0 0

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.

É só cruzar os dedos e esperar que dê boot corretamente.

Adicionando o primeiro HD ao RAID 1


Se tudo correu bem, o gdm pediu o usuário e a senha. Depois do login o Debian abriu direitinho.
Parece que nada mudou, tudo estava igual como era antes. Mas há um pequeno detalhe, o boot
foi dado no segundo HD, recém configurado.

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.

# mdadm /dev/md0 -a /dev/sda1


# mdadm /dev/md1 -a /dev/sda5
# mdadm /dev/md2 -a /dev/sda6

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.

Para verificar o processo de sincronização pode-se usar o comando:

# watch --interval 1 'cat /proc/mdstat'


Este comando lhe passará o conteúdo do arquivo /proc/mdstat (que contém o status atual dos
dispositivos RAID do sistema) em um intervalo de 1 segundo.

Depois do término da sincronização pode-se ver o conteúdo o do arquivo /proc/mdstat:

# cat /proc/mdstat

Repita a adição de cada partição.

Instalando o Grub nos dois HDs


Depois da sincronização dos 2 HDs, o /boot/grub/menu.lst deixou de refletir o estado real do
sistema, então é fundamental a instalação do grub. Para a instalação, abra um terminal e logue
como root.

Digite:

# grub (o programa de configuração do grub é executado)


grub> device (hd0) /dev/sda - habilita o /dev/sda como primeiro HD do sistema
grub> root (hd0,0) - especifica a partição onde está instalado o sistema
grub> setup (hd0) - especifica onde será gravado o grub

Depois é preciso repetir a mesma operação para o segundo HD, o /dev/sdb

grub> device (hd0) /dev/sdb


grub> root (hd0,0)
grub> setup (hd0)

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.

Configurando o novo Grub

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:

kernel /boot/vmlinuz-2.6.26-2-686 root=/dev/sda1 ro quiet

Troque para:

kernel /boot/vmlinuz-2.6.26-2-686 root=/dev/md0 ro

Obs.: A versão do kernel poderá ser diferente na versão do Linux instalado.


O /dev/md0 é a primeira posição do array criado pelo mdadm, usando o /dev/sda1 e /dev/sdb1.

Depois destas configurações, o sistema está pronto para suportar uma eventual falha de um dos
HDs.

Verificando e testando o sistema na ocorrência de falhas


O sistema está atualizado e funcionando, mas precisamos fazer uma simulação real de um HD
queimado. Podemos retirar um dos HDs e reiniciar o sistema ou usar o mdadm para simular o
erro.

Utilizando o mdadm:

# mdadm --manage --set-fault /dev/md1 /dev/sdb5

Este comando fará com que o segundo disco (/dev/sdb5), primeira partição, que está no array
md0 pare de funcionar.

Os parâmetros:

 --manage - chama o módulo de gerência

 /dev/md0 - primeiro dispositivo RAID

 /dev/sdb5 - partição lógica no segundo HD

Este comando "danificou" o array /dev/md1. Para verificar o erro digite:

# mdadm --detail /dev/md1

No final da listagem aparecerá:

Number Major Minor RaidDevice State

0 8 5 0 Active sync /dev/sda5

1 0 0 1 Removed

2 8 21 - Fault spare /dev/sdb5

O sistema está com um "crash". Segundo o comando, o /dev/sdb5 foi removido do RAID.

O /proc/mdstat dará a mesma informação:

md1: active raid1 sdb5[2] (F) sdb5[0]

O (F) é a indicação de fault.

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:

# mdadm /dev/md1 -r /dev/sdb5

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.

S-ar putea să vă placă și