RAID por software no Linux

logo_linux

RAID por software no Linux com o mdadm

Vamos falar sobre um dos assuntos mais interessantes no Linux, que se destaca a redundância de discos usando o sistema de RAID por software pelo  poderoso mdadm. o RAID foi totalmente incorporado ao no kernel nas versões 2.0 e mesmo assim eram muitas falhas e incompletas. Antigamente muitos usavam o software raidtools para criar discos redundantes que se extendeu até a versão 2.4 do kernel e era muito instável e tinha muitos problemas. Ja no Kernel 2.6 os módulos referente a sistemas RAID e LVM (device mapper), melhoraram bastante e hoje utilizamos um software chamado mdadm que permite gerencia-lo com uma maior facilidade e com um resultado muito gratificante, o que esta muito estável no kernel 3.x. NÃO CONFUNDA, raid por hardware com raid por software, pois todo o processamento do raid por software depende do sistema operacional instalado, dos pacotes instalados, de memoria e principalmente a utilização do seu CPU, ao contrario do raid por hardware em que voce possui uma smart array controller específica para criar os arranjos de forma dedicada.

O device de RAID (para criação do arranjo), é o /dev/md0, sendo o primeiro (dispositivos MD). Alguns administradores geralmente colocam o /boot montado em 2 discos para o arranjo /dev/md0, em raid 1 e o seu /home, ou outro diretório importante qualquer em RAID5 ou  6, que automaticamente  poderá ser personalizado como /dev/md1. Eu tenho observado muitos posts por ai, em que andam ensinando uma “estranha” distribuição de dispositivos em md, se esquecendo as vezes ate mesmo do básico sobre RAID. Não se faz RAID em partições, pois se você perde o disco, vai todas partições FD (Raid Linux Autodetect), para o espaço, e eu tenho certeza que voce não vai querer isso, o que voce pode fazer é criar uma UNICA partição do tipo FD que abrange todo o conteúdo do disco, tal como /dev/sda1, /dev/sdb1 e outros devices ou usar o proprio disco sem particionar, portanto, a tecnologia de RAID foi criar em  Berkeley , com o nome de Berkeley RAID, o que permite combinar dois ou mais dispositivos e aplicar uma tolerância a falhas nos discos usados, atraves de um algorítimo e arranjo dos discos. No Linux temos um RAID muito mais aproveitado do que nos sistemas M$Windows. Lembrando que vc pode instalar o sistema Linux em RAID 0,1,5 e 6. Um simples Debian Installer/ANACONDA permite isso.

É possivel atraves do mdadm gerenciar sistemas RAID nos níveis Linear, que não deu muito certo, e todos os outros níveis de raid que estão listados abaixo:

RAID 0 é utilizado restritamente para aprimorar o desempenho. Ele utiliza duas ou mais unidades IGUAIS de acesso para reduzir os tempos de gravação no disco e dispositivo de raid.

RAID 1 que permite o espelhamento de informações de um disco para o outro e oferece uma redundẫncia de até um disco de reserva(spare). Lembrando que o desempenho é um pouco prejudicado porque as informações são gravadas sempre mais de uma vez. Usamos 2 discos para o espelhando.

RAID 5, onde ganhamos grande tolerancia a falhas e ao mesmo tempo divide informações em DADOS e PARIDADES criando uma arquitetura redundante e ao mesmo tempo aprimorando o desempenho de leitura e escrita. O RAID 5 requer 3 discos e suporta 1 disco de spare(reserva). Ao contrario do raid4, que dedicava um disco para paridade.

RAID 6 é um padrão totamente novo e o kernel ja tem suporte. ele é semelhante ao RAID 5 porem usa o dobro da gravação de PARIDADE e depende de 4 discos sendo que suporte até 2 discos de SPARE. Caso 2 discos venham a falhar os 2 discos de spare entram no seu lugar ao mesmo tempo.

RAID 10 é a combinação de discos espelhados com raid 1 e com a segmentação de dados do raid 0 ligando os discos e funcionando em par.

INSTALAÇÃO DO MDADM

Instalação no Debian e no Ubuntu
#apt-get install mdadm -y

Instalação no RHEL, CentOS, e Fedora
#yum install mdadm -y

Instalação no SuSE Enterprise e OpenSuSE
#yast -i mdadm (apesar de que é padrão das instalações suse e opensuse, vc tb pode usar o zypper).

RECOMENDO, voce instalar o postfix ou o sendmail (exim e variantes), para que a opção –monitor trabalhe enviando email para voce, em caso de falhas, utilizando a variável MAILADDR no mdadm.conf.

Utilizando o mdadm

/proc/mdstat –> arquivo do kernel para monitoramento do RAID.

Vc pode utilizar o fdisk ou o cfdisk para criar as devidas partições no disco do tipo 0xFD Linux RAID – Linux Raid Autodetect.  Logicamente é muito mais interessante criar uma partição primaria em cada disco para facilitar o gerenciamento do mdadm,  ou então utilizar todo o conteudo do disco para utilizar como parte do arranjo de raid.

No SuSE vc pode utilizar os modulos do YaST para criar os discos ou gerenciar os discos com o comando:

#YaST disk

Para criar um arranjo de RAID 1 com o mdadm

#mdadm -C /dev/md0 -a yes -v -l 1 -n 2 /dev/sdb1 /dev/sdc1 -x 1 /dev/sdd1

Para criar um arranjo de RAID 5 com o mdadm

#mdadm -C /dev/md0 -a yes -v -l 5 -n 3 /dev/sdb1 /dev/sdc1 /dev/sdd1 -x 1 /dev/sde1

NOTA: a opção -x ou –spare é opcional. Vc tb pode utilizar de intervalos de campos como sd[a,b,c].

Vamos entender o comando mdadm e suas opções: -C cria um novo arranjo no dispositivo /dev/md0 que é o seu primeiro disposito de RAID no Linux, ja a opção “-a yes” é muito importante porque em vez de vc perder o seu tempo em criar o dispositivo com o mknod (ex: mknod /dev/md0 b 9 0)caso ele não exista é muito melhor vc colocar esta opção porque caso nao exista o dispositivo ele cria. As opções -v é para verbose maior e -l declara o nível de RAID utilizado, -n seria o número de discos utilizados na sua estrutura de raid e o -x seria para definir o número de discos de spare que seria os reservas. Existem outros flags tb como -a ou –ad que adciona novos discos ao arranjo, -r ou –remove que remove discos do arranjo, –re-add que adciona novamente o disco com problemas que foi removido indevidamente ou com problemas resolvidos, –detail que da no mesmo que -D para monitorar o raid em detalhes somente local e a opção –monitor que detalha o raid por email baseado no seu arquivo de configuração. Existe tb o flag –fail ou -f para falhar um dispositivo ou simular uma falha.

Assim que vc criar o arranjo colocando um “y” para prosseguir, vc pode acompanhar o seu progresso de criação da estrutura de arranjo com:

#watch -n 1 cat /proc/mdstat

ENTENDENDO O DISPOSITIVO DE RAID

Quando um dos discos do arranjo falha o sistema de RAID do kernel (que é um módulo),  faz o processo de rebuilding que é quando o mdadm (neste caso), chama o disco que esta em spare(reserva), para entrar no lugar dele e então começa o procedimento de reconstrução, para trazer ao novo disco as mesmas coisas que o disco anterior tinha para que a sua estrutura de raid não seja ferida. Só que muitos administradores de sistema reclamam que o procedimento de “rebuild/reconstrução”, é muito lento ou muuuiittoo lento. Até mesmo quando criamos um laboratório com discos de 2GB apenas em cada disco se um deles falhar o procedimento de rebuild é muito lento. Mas isso é devido a um padrão que se encontra no kernel linux pois existe uma diferença de latências de um raid por hardware e um por software. Apesar de que eu acho que raid por hardware é coisa de gente preguiçosa eu vou te mostrar como melhorar isso. O RAID por software depende muito da capacidade da máquina e processos que estão sendo executados. Isso tudo vai depender de processamento, memória e informações lógicas de processos que estão em funcionamento. O valor é calculado como padrão se baseando nesse padrão. A velocidade mínima padrão de um sistema Linux é que o procedimento de rebuild gere em torno de 1MB de velocidade  sincrona para gerar os discos do arranjo do dispositivo e de no máximo 200MB de velocidade sincrona. É lógico que em um sistema externo ou por hardware a velocidade é muito maior. Desde que vc tenha uma boa maquina que não consuma tanto com aplicações mas que seja dedicada para arquivos, então podemos alterar os padrões de valores nos arquivos speed_limit_min e speed_limit_max do kernel. A taxa recomendada é de 50MB de taxa de transferencia para o processo mínimo de rebuild que pode ser trocado assim (mesmo assim, não confunda raid por hardware pelo por software):

#echo 50000 > /proc/sys/dev/raid/speed_limit_min

Os resultados são imediatos e diretamente sendo visualizados no arquivo /proc/mdstat

Os logs são gerados com a saida abaixo:

md: minimum _guaranteed_ reconstruction speed: 50000KB/sec/disc.
md: using maximum available idle IO bandwidth (but not more than 200000 KB/sec) for reconstruction.

O ARQUIVO mdadm.conf

O ARQUIVO /etc/mdadm.conf (RedHat/SuSE) OU /etc/mdadm/mdadm.conf (Debian/Ubuntu), deve ser configurado sem questionamentos pois ele documenta a configuração do dispositivo de RAID por padrão e fornece informações em caso de problemas ao administrador do sistema.

A configuração do mdadm.conf vai depender muito da distribuição que vc utiliza, como por exemplo a distribuição RHEL que há uma grande necessidade de ser gerado para que o boot do dispositivo de raid seja efetuado com sucesso e para que o administrador tambem não venha ter que quebrar o teclado.

#mdadm –detail –scan   >> /etc/mdadm.conf        (ele faz um dump da configuração atual do dispositivo e gera o arquivo de configuração).
#cat /etc/mdadm.conf

NOTA: O arquivo deve conter alguma semelhança a saida abaixo.

DEVICE partitions
ARRAY /dev/md0 level=raid1 num-devices=2 spares=2 UUID=490f3db6:cea49fa3:345b7477:817747f3
ARRAY /dev/md1 level=raid1 num-devices=2 spares=2 UUID=0726d925:6e4e7a99:bcdab21b:f117ebf9
ARRAY /dev/md2 level=raid5 num-devices=4 UUID=9d07bdb8:ede8880b:54422443:48105f18
MAILADDR root

NOTA: verifique se realmente foi criado com sucesso e se os valores de UUID foram adcionados ao arquivo, pois isso garante maior segurança na posição dos discos, se sim é possivel ativar o dispositivo com o comando mdadm -As /dev/md0 ou para desativar o arranjo com o mdadm -S /dev/md0.

Para monitorar o dispositivo de RAID

#mdadm -D /dev/md0

#mdadm –detail /dev/md0

NOTA: eu recomendo que vc deixe o mdadm -D sendo repetido pelo comando ” watch -n 1 ” que vai manter em repetições o comando acima. O flag “-n 1” é para que o comando repita o comando de 1 em 1 segundo, o padrão é de 2 em 2.
#watch -n 1 mdadm -D /dev/md0. (NOTA: vc pode verificar o seu raid device com o comando mdadm –examine –scan ou mdadm –misc –detail –brief /dev/md0)

Para monitorar por email

no arquivo /etc/mdadm/mdadm.conf vc deve alterar o atributo MAILADDR apontando para o seu email e então:

#mdadm –monitor /dev/md0

Caso vc queira falhar um dispositivo ;)

#mdadm /dev/md0 -f /dev/sdc1

Removendo dispositivo falhado

#mdadm /dev/md0 -r /dev/sdc1

Verificando os logs do mdadm

#tail -f /var/log/messages

 

Powered by Moblie Video for WordPress + Daniel Watrous