Como criar um software RAID em linux com mdadm

Hoje quisemos alargar este artigo sobre como criar um software RAID em linux com mdadm. Começamos com a teoria.

O que é um RAID?

Um raid de discos pode ser definido como um grupo ou conjunto de discos independentes, de facto RAID é um acrónimo de Redundant Array of Independent Disks. Os discos são unificados por software ou hardware para redundar dados e/ou utilizar a capacidade total de cada disco em conjunto. Isto será mais fácil de compreender quando mais tarde definirmos cada tipo de RAID.

Diferença entre RAID por hardware e RAID por software

O que é software RAID?

O RAID por software é, como o nome indica, uma aplicação que permite a criação de RAID a um nível lógico a partir de discos ligados ao nosso equipamento. Este software cria um sistema de ficheiros em que funciona comportando-se de acordo com o tipo de RAID configurado.

O que é RAID Hardware?

Um raid de hardware é um dispositivo físico que permite a criação de um RAID de discos.  Pode ser uma placa de expansão PCI ou PCIE ou pode ser integrado na placa-mãe, este hardware integra tudo o que é necessário para realizar um RAID sem utilizar o processador ou a RAM do sistema (como regra geral), pode também integrar uma cache. Esta cache pode acelerar as operações de leitura/escrita.

Quais são as suas principais diferenças e as vantagens de cada uma delas?

  • O RAID de hardware requer hardware que vem com um custo.
  • Com RAID por hardware, em caso de falha do disco, basta inserir o novo disco e o RAID é normalmente reconstruído sem quaisquer passos adicionais (como regra geral).
  • O software RAID evita o ponto de falha de uma única placa RAID. Se esta placa falhar, o RAID não funcionará.
  • Nos sistemas actuais, a diferença de desempenho em comparação com o RAID por hardware é menos notória, uma vez que os processadores são mais potentes.
  • O RAID de hardware não utiliza os recursos do processador da máquina anfitriã.

Níveis RAID mais utilizados

· RAID 0 (Data Striping, Striped Volume)

Esta rusga toma a capacidade dos discos adicionados e adiciona-os juntos. Por exemplo, se tivermos 2 discos de 1TB com este RAID obteremos um volume de 2TB. Se os discos forem de diferentes capacidades, é sempre necessário o mais baixo a utilizar, bem como as RPM (rotações por minuto) do disco. Ou seja, se tivermos um disco de 2 TB a 7200RPM e outro de 1 TB a 5400RPM, teremos um volume de 2 TB a 5400RPM, ou seja, teremos novamente um volume de 2 TB mas mais lento. É por isso que é importante que os discos sejam semelhantes.

Por outro lado, neste tipo de RAID, o desempenho é uma prioridade mas não a segurança, não há redundância de dados, portanto, se um disco se partir, o volume será corrompido.

raid-0

· RAID 1 (espelho)

Este RAID, tal como no RAID anterior e em todos os RAIDs anteriores, os discos devem ter a mesma capacidade para evitar o desperdício de discos. Neste modo RAID os dois discos são configurados em espelho, o que significa que todo o conteúdo do disco é replicado noutro disco para cada 2 discos 1 disco é dedicado a dados redundantes. É recomendado para 2 discos. Este RAID tem uma vantagem adicional e que é uma maior velocidade de leitura multi-utilizador, uma vez que os dados podem ser lidos a partir de ambos os discos. No entanto, as escritas são mais lentas, pois têm de ser feitas em ambos os discos.

raid-1

· RAID 5

Este RAID é o mais popular devido ao seu baixo custo. Com 3 discos, aproximadamente 75% da capacidade do disco está disponível. Requer apenas um mínimo de 3 discos e suporta a perda completa de um disco. A informação é servida em blocos distribuídos pelo número total de discos, pelo que quanto mais discos, maior o desempenho. Quanto maiores forem os discos, mais tempo demora a reconstruir o RAID no caso de uma falha do disco. Este RAID protege contra falhas, distribuindo o cálculo da paridade por todos os discos e protegendo assim contra possíveis erros de hardware.

O ponto fraco deste tipo de RAID é que se um disco falhar, até ser substituído, o volume fica desprotegido contra a falha de outro disco. É aqui que entram os discos de reserva. Um disco de reserva é um disco de reserva que “entra em jogo” quando um dos discos falha, de modo que o número de discos que podem falhar é de dois (desde que o RAID não esteja a ser reconstruído quando o segundo disco falha). Desta forma evitamos o ponto de falha mencionado anteriormente. Quando o disco de reserva é adicionado, este tipo de RAID é também conhecido como RAID 5E. Existem dois tipos de sobressalentes: “sobressalentes de reserva” e “sobressalentes quentes”.

Se for um disco de reserva, envolve um processo de reconstrução durante a adição do disco de reserva em substituição do disco avariado; no entanto, se for um disco de reserva quente, este tempo é minimizado.

raids-RAID-5

· RAID 6

Digamos que é a evolução do RAID 5, precisa de pelo menos 4 discos. Funciona como RAID 5 mas com dupla banda de paridade que também está espalhada por todos os discos. Este tipo de RAID suporta a falha total de até dois discos, mesmo durante a reconstrução do RAID. É menos utilizado porque quando poucos discos são utilizados, a capacidade de dois discos é desperdiçada porque não atingem o máximo teórico, com 4 discos o RAID terá cerca de metade da capacidade dos discos. Quanto mais discos forem utilizados no RAID, mais capacidade de cada disco é utilizada.

Como no RAID 5, no RAID 6 podem ser adicionados discos sobressalentes (normalmente chamados RAID 6E) para suportar um terceiro disco avariado (o terceiro disco pode falhar sem corromper o volume enquanto o raid não estiver a ser reconstruído).

raids-RAID-6

Niveles RAID anidados

Os níveis de RAID aninhados são “RAID em RAID”. Trata-se de um RAID de um tipo montado em cima de RAID(s) de outro tipo. Desta forma, pode tirar partido dos benefícios de cada RAID. Por exemplo:

  • RAID 0+1 : É um espelho de RAIDs 0, ou seja, se tivermos 4 discos, 2 raids 0 são criados com cada par de discos e com os 2 volumes RAID criados é criado um raid 1. Desta forma, adicionamos redundância ao RAID 0.
  • RAID 1+0: Este é um RAID 0 de dois espelhos (RAID 1). Dois RAID 1 são criados com cada par de discos e com o par de discos RAID 1 criado, é criado um RAID 0.
  • RAID 50 (5+0): É necessário um mínimo de 6 discos para este RAID. Com cada trio de discos é criado um RAID 5. Depois com cada RAID criado é criado um RAID 0 com o RAID 5 criado. Com 6 discos, é atingido um total de aproximadamente 65% da capacidade do disco.

Os tipos RAID mais comuns são

  • RAID 0: Para armazenamento de dados não críticos, dos quais a perda não é importante.
  • RAID 1: Para sistemas operativos, por exemplo, em servidores. O sistema operativo é normalmente instalado em RAID 1.
  • RAID 5: Armazenamento em geral, devido ao seu baixo custo e boa fiabilidade.

Como montar em linux cada tipo de RAID com “mdadm”:

Uma incursão no linux é muito fácil de montar utilizando os seguintes passos:

Passo 1: Instalar mdadm: por defeito não é normalmente instalado no Linux.

Em debian e derivados:

apt-get install mdadm

Em RedHat / CentOS e derivados:

yum install mdadm

install-mdadmPasso 2: Os discos a serem incluídos no RAID devem ser preenchidos com zeros para evitar problemas com os sistemas de ficheiros existentes:

root@localhost:~# mdadm --zero-superblock /dev/hdb /dev/hdc

(E tantos outros discos para usar) ou com DD:

dd

Passo 3: O próximo passo seria criar o RAID, basicamente com ele:

mdadm -C /dev/NOMBRERAID --level=raid[NUMERO] --raid-devices=NUMERO_DE_DISCOS /dev/DISCO1 /dev/DISCO2
  • RAID 0: São seleccionados pelo menos dois discos (por exemplo, vdc e vdd):
mdadm -C /dev/md0 --level=raid0 --raid-devices=2 /dev/vdc /dev/vdd

 

RAID-0-terminal

Como crear un RAID por software en linux con mdadm

  • RAID 1: No caso do RAID 1 é melhor seleccionar um máximo de 2 discos / volumes (usamos vdc e vdd como exemplos):

 

mdadm -C /dev/md0 --level=raid1 --raid-devices=2 /dev/vdc /dev/vdd

 

raid1

  • RAID 5: Pelo menos três discos:

 

mdadm -C /dev/md0 --level=raid5 --raid-devices=3 /dev/vdb /dev/vdc /dev/vdd

 

raid5

Se quisermos um disco de reserva (temos de adicionar todos os discos incluindo o de reserva ao RAID desde o início):

 

mdadm -C /dev/md0 --level=raid5 --raid-devices=3 --spare-devices=1 /dev/vdb /dev/vdc /dev/vdd /dev/vde

 

 

  • RAID 6: Pelo menos 4 discos

 

mdadm -C /dev/md0 --level=raid5 --raid-devices=4 /dev/vdb /dev/vdc /dev/vdd /dev/vde

 

E com spares:

 

mdadm -C /dev/md0 --level=raid5 --raid-devices=4 --spare-devices=1 /dev/vdb /dev/vdc /dev/vdd /dev/vde /dev/vdf

 

 

Em caso de falha de um disco RAID só temos de o remover e inserir o novo disco e quando inserimos o novo disco (olhando para o log in /var/log/messages do sistema) executamos:

 

mdadm --add /dev/RAID /dev/NUEVO_DISCO

 

No caso de querer parar um RAID:

 

mdadm --stop /dev/md0 && mdadm --remove /dev/md0
Y para consultar el estado:

cat /proc/mdstat

E isso é tudo sobre como criar um RAID de software em linux com mdadm.

Se gostou do artigo, deixe um comentário e/ou partilhe-o nas suas redes sociais.

Até breve!

Deixe uma resposta