Instalando e configurando um sistema RAID 1 no Debian Lenny

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

Transcript of Instalando e configurando um sistema RAID 1 no Debian Lenny

Page 1: Instalando e configurando um sistema RAID 1 no Debian Lenny

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

Page 2: Instalando e configurando um sistema RAID 1 no Debian Lenny

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!

Page 3: Instalando e configurando um sistema RAID 1 no Debian Lenny

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

Page 4: Instalando e configurando um sistema RAID 1 no Debian Lenny

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

Page 5: Instalando e configurando um sistema RAID 1 no Debian Lenny

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.

Page 6: Instalando e configurando um sistema RAID 1 no Debian Lenny

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

Page 7: Instalando e configurando um sistema RAID 1 no Debian Lenny

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

Page 8: Instalando e configurando um sistema RAID 1 no Debian Lenny

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.

Page 9: Instalando e configurando um sistema RAID 1 no Debian Lenny

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.

Page 10: Instalando e configurando um sistema RAID 1 no Debian Lenny

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.