raid no linux

RAID por sofwtare no Linux com o mdadm

Estou aqui hoje para falar sobre um dos assuntos mais interessantes no Linux que se destaca a redundância de discos usando o sistema de RAID por software usando o 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 modulos 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.

A tecnologia de RAID foi criar em Beskley para permitir combinar dois ou mais dispositivos e aplicar uma tolerância a falhas nos discos usados. 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 DebianInstaller faz isso (por exemplo).

É possivel atraves do mdadm gerenciar sistemas RAID nos níveis Linear (o primeiro que não deu muito certo), RAID 0 que é utilizado estritamente para aprimorar o desempenho dos discos pois utiliza 2 ou mais unidades para reduzir os tempos de gravação.

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. O RAID 1 suporte discos combinados e de no mínimo 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).

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

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

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

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 reconstruction 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 é 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:

#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

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

logo_linux

Leave a Comment

Your email address will not be published.

Powered by Moblie Video for WordPress + Daniel Watrous