Como Criar Arrays RAID com mdadm no Ubuntu 22.04

Introdução

A utilidade mdadm pode ser utilizada para criar e gerenciar matrizes de armazenamento usando as capacidades de RAID de software do Linux. Os administradores têm grande flexibilidade ao coordenar seus dispositivos de armazenamento individuais e ao criar dispositivos de armazenamento lógicos com características de desempenho ou redundância superiores.

Neste guia, você realizará diferentes configurações de RAID que podem ser configuradas usando um servidor Ubuntu 22.04.

Pré-requisitos

Para seguir as etapas deste guia, você precisará:

  • A non-root user with sudo privileges on an Ubuntu 22.04 server. To learn how to set up an account with these privileges, follow our Ubuntu 22.04 initial server setup guide.
  • A basic understanding of RAID terminology and concepts. To learn more about RAID and what RAID level is right for you, read our introduction to RAID article.
  • Múltiplos dispositivos de armazenamento brutos disponíveis em seu servidor. Os exemplos neste tutorial demonstram como configurar vários tipos de matrizes no servidor. Portanto, você precisará de algumas unidades para configurar.
  • Dependendo do tipo de matriz, você precisará de dois a quatro dispositivos de armazenamento. Essas unidades não precisam ser formatadas antes de seguir este guia.

Informação: Devido à ineficiência das configurações de RAID em servidores virtuais privados, não recomendamos implantar uma configuração de RAID em droplets da DigitalOcean. A eficiência da replicação de disco em data centers torna os benefícios de um RAID insignificantes em comparação com uma configuração em hardware baremetal. Este tutorial tem como objetivo ser uma referência para uma configuração de RAID convencional.

Reinicialização de Dispositivos RAID Existentes (Opcional)

Se você ainda não configurou nenhum array, pode pular esta seção por enquanto. Este guia apresentará vários níveis diferentes de RAID. Se você deseja seguir e concluir cada nível de RAID para seus dispositivos, provavelmente desejará reutilizar seus dispositivos de armazenamento após cada seção. Esta seção específica Reinicialização de Dispositivos RAID Existentes pode ser consultada para redefinir seus dispositivos de armazenamento de componentes antes de testar um novo nível de RAID.

Aviso: Este processo destruirá completamente o array e quaisquer dados gravados nele. Certifique-se de estar operando no array correto e de ter copiado quaisquer dados que deseja manter antes de destruir o array.

Comece encontrando os arrays ativos no arquivo /proc/mdstat:

  1. cat /proc/mdstat
Output
Personalities : [raid0] [linear] [multipath] [raid1] [raid6] [raid5] [raid4] [raid10] md0 : active raid0 sdc[1] sdd[0] 209584128 blocks super 1.2 512k chunks unused devices: <none>

Em seguida, desmonte o array do sistema de arquivos:

  1. sudo umount /dev/md0

Agora, pare e remova o array:

  1. sudo mdadm --stop /dev/md0

Encontre os dispositivos que foram usados para construir o array com o seguinte comando:

Aviso: Lembre-se de que os nomes /dev/sd* podem mudar sempre que você reiniciar. Verifique-os toda vez para garantir que esteja operando nos dispositivos corretos.

  1. lsblk -o NAME,SIZE,FSTYPE,TYPE,MOUNTPOINT
Output
NAME SIZE FSTYPE TYPE MOUNTPOINT sda 100G linux_raid_member disk sdb 100G linux_raid_member disk sdc 100G disk sdd 100G disk vda 25G disk ├─vda1 24.9G ext4 part / ├─vda14 4M part └─vda15 106M vfat part /boot/efi vdb 466K iso9660 disk

Após descobrir os dispositivos usados para criar um array, zere o superbloco deles, que contém metadados para a configuração do RAID. Zerar isso remove os metadados do RAID e os redefine para o estado normal:

  1. sudo mdadm --zero-superblock /dev/sda
  2. sudo mdadm --zero-superblock /dev/sdb

É recomendado também remover quaisquer referências persistentes ao array. Edite o arquivo /etc/fstab e comente ou remova a referência ao seu array. Você pode comentá-lo inserindo um símbolo de hashtag # no início da linha, usando o nano ou seu editor de texto preferido:

  1. sudo nano /etc/fstab
/etc/fstab
. . .
# /dev/md0 /mnt/md0 ext4 defaults,nofail,discard 0 0

Também, comente ou remova a definição do array do arquivo /etc/mdadm/mdadm.conf:

  1. sudo nano /etc/mdadm/mdadm.conf
/etc/mdadm/mdadm.conf
. . .
# ARRAY /dev/md0 metadata=1.2 name=mdadmwrite:0 UUID=7261fb9c:976d0d97:30bc63ce:85e76e91

Finalmente, atualize o initramfs novamente para que o processo de inicialização não tente trazer um array indisponível online:

  1. sudo update-initramfs -u

A partir daqui, você deve estar pronto para reutilizar os dispositivos de armazenamento individualmente, ou como componentes de um array diferente.

Criando um Array RAID 0

O array RAID 0 funciona dividindo os dados em pedaços e distribuindo-os pelos discos disponíveis. Isso significa que cada disco contém uma parte dos dados e que vários discos serão referenciados ao recuperar informações.

  • Requisitos: Mínimo de 2 dispositivos de armazenamento.
  • Benefício principal: Desempenho em termos de leitura/gravação e capacidade.
  • Coisas a ter em mente: Certifique-se de ter backups funcionais. Uma falha em um único dispositivo destruirá todos os dados no array.

Identificação dos Dispositivos Componentes

Para começar, encontre os identificadores dos discos brutos que você usará:

  1. lsblk -o NAME,SIZE,FSTYPE,TYPE,MOUNTPOINT
Output
NAME SIZE FSTYPE TYPE MOUNTPOINT sda 100G disk sdb 100G disk vda 25G disk ├─vda1 24.9G ext4 part / ├─vda14 4M part └─vda15 106M vfat part /boot/efi vdb 466K iso9660 disk

Neste exemplo, você tem dois discos sem um sistema de arquivos, cada um com 100G de tamanho. Esses dispositivos foram dados os identificadores /dev/sda e /dev/sdb para esta sessão e serão os componentes brutos usados para construir o conjunto.

Criando o Conjunto

Para criar um conjunto RAID 0 com esses componentes, passe-os para o comando mdadm --create. Você terá que especificar o nome do dispositivo que deseja criar, o nível do RAID e o número de dispositivos. Neste exemplo de comando, você estará nomeando o dispositivo /dev/md0, e inclua os dois discos que construirão o conjunto:

  1. sudo mdadm --create --verbose /dev/md0 --level=0 --raid-devices=2 /dev/sda /dev/sdb

Confirme que o RAID foi criado com sucesso verificando o arquivo /proc/mdstat:

  1. cat /proc/mdstat
Output
Personalities : [linear] [multipath] [raid0] [raid1] [raid6] [raid5] [raid4] [raid10] md0 : active raid0 sdb[1] sda[0] 209584128 blocks super 1.2 512k chunks unused devices: <none>

Esta saída revela que o dispositivo /dev/md0 foi criado na configuração RAID 0 usando os dispositivos /dev/sda e /dev/sdb.

Criando e Montando o Sistema de Arquivos

Em seguida, crie um sistema de arquivos no array:

  1. sudo mkfs.ext4 -F /dev/md0

Depois, crie um ponto de montagem para conectar o novo sistema de arquivos:

  1. sudo mkdir -p /mnt/md0

Você pode montar o sistema de arquivos com o seguinte comando:

  1. sudo mount /dev/md0 /mnt/md0

Depois, verifique se o novo espaço está disponível:

  1. df -h -x devtmpfs -x tmpfs
Output
Filesystem Size Used Avail Use% Mounted on /dev/vda1 25G 1.4G 23G 6% / /dev/vda15 105M 3.4M 102M 4% /boot/efi /dev/md0 196G 61M 186G 1% /mnt/md0

O novo sistema de arquivos está agora montado e acessível.

Salvando o Layout do Array

Para garantir que o array seja reconfigurado automaticamente durante a inicialização, você precisará ajustar o arquivo /etc/mdadm/mdadm.conf. Você pode digitalizar automaticamente o array ativo e anexar o arquivo com o seguinte:

  1. sudo mdadm --detail --scan | sudo tee -a /etc/mdadm/mdadm.conf

Em seguida, você pode atualizar o initramfs, ou sistema de arquivos RAM inicial, para que o array esteja disponível durante o processo de inicialização inicial:

  1. sudo update-initramfs -u

Adicione as novas opções de montagem do sistema de arquivos ao arquivo /etc/fstab para montagem automática durante a inicialização:

  1. echo '/dev/md0 /mnt/md0 ext4 defaults,nofail,discard 0 0' | sudo tee -a /etc/fstab

Seu array RAID 0 agora será montado automaticamente em cada inicialização.

Agora você terminou a configuração do seu conjunto RAID. Se você quiser experimentar um RAID diferente, siga as instruções de redefinição no início deste tutorial para prosseguir com a criação de um novo tipo de array RAID.

Criando um Array RAID 1

O tipo de array RAID 1 é implementado espelhando dados em todos os discos disponíveis. Cada disco em um array RAID 1 recebe uma cópia completa dos dados, fornecendo redundância no caso de falha de um dispositivo.

  • Requisitos: Mínimo de 2 dispositivos de armazenamento.
  • Benefício principal: Redundância entre dois dispositivos de armazenamento.
  • Coisas para se ter em mente: Como duas cópias dos dados são mantidas, apenas metade do espaço do disco será utilizável.

Identificando os Dispositivos Componentes

Para começar, encontre os identificadores dos discos brutos que você irá utilizar:

  1. lsblk -o NAME,SIZE,FSTYPE,TYPE,MOUNTPOINT
Output
NAME SIZE FSTYPE TYPE MOUNTPOINT sda 100G disk sdb 100G disk vda 25G disk ├─vda1 24.9G ext4 part / ├─vda14 4M part └─vda15 106M vfat part /boot/efi vdb 466K iso9660 disk

Neste exemplo, você tem dois discos sem um sistema de arquivos, cada um com 100G de tamanho. Esses dispositivos receberam os identificadores /dev/sda e /dev/sdb para esta sessão e serão os componentes brutos que você usará para construir o array.

Criando o Array

Para criar um conjunto RAID 1 com estes componentes, passe-os para o comando mdadm --create. Você terá que especificar o nome do dispositivo que deseja criar, o nível do RAID e o número de dispositivos. Neste exemplo de comando, você estará nomeando o dispositivo como /dev/md0 e incluindo os discos que irão compor o conjunto:

  1. sudo mdadm --create --verbose /dev/md0 --level=1 --raid-devices=2 /dev/sda /dev/sdb

Se os dispositivos componentes que você está usando não são partições com a flag boot habilitada, provavelmente receberá o seguinte aviso. É seguro responder com y e continuar:

Output
mdadm: Note: this array has metadata at the start and may not be suitable as a boot device. If you plan to store '/boot' on this device please ensure that your boot-loader understands md/v1.x metadata, or use --metadata=0.90 mdadm: size set to 104792064K Continue creating array? y

A ferramenta mdadm começará a espelhar os discos. Isso pode levar algum tempo para ser concluído, mas o conjunto pode ser usado durante este tempo. Você pode monitorar o progresso da espelhação verificando o arquivo /proc/mdstat:

  1. cat /proc/mdstat
Output
Personalities : [linear] [multipath] [raid0] [raid1] [raid6] [raid5] [raid4] [raid10] md0 : active raid1 sdb[1] sda[0] 104792064 blocks super 1.2 [2/2] [UU] [====>................] resync = 20.2% (21233216/104792064) finish=6.9min speed=199507K/sec unused devices: <none>

Na primeira linha destacada, o dispositivo /dev/md0 foi criado na configuração RAID 1 usando os dispositivos /dev/sda e /dev/sdb. A segunda linha destacada revela o progresso da espelhação. Você pode prosseguir para a próxima etapa enquanto este processo é concluído.

Criando e Montando o Sistema de Arquivos

Em seguida, crie um sistema de arquivos no conjunto:

  1. sudo mkfs.ext4 -F /dev/md0

Depois, crie um ponto de montagem para anexar o novo sistema de arquivos:

  1. sudo mkdir -p /mnt/md0

Você pode montar o sistema de arquivos executando o seguinte comando:

  1. sudo mount /dev/md0 /mnt/md0

Verifique se o novo espaço está disponível:

  1. df -h -x devtmpfs -x tmpfs
Output
Filesystem Size Used Avail Use% Mounted on /dev/vda1 25G 1.4G 23G 6% / /dev/vda15 105M 3.4M 102M 4% /boot/efi /dev/md0 99G 60M 94G 1% /mnt/md0

O novo sistema de arquivos está montado e acessível.

Salvando o Layout do Array

Para garantir que o array seja reconfigurado automaticamente durante a inicialização, é necessário ajustar o arquivo /etc/mdadm/mdadm.conf. Você pode escanear automaticamente o array ativo e acrescentar o arquivo com o seguinte:

  1. sudo mdadm --detail --scan | sudo tee -a /etc/mdadm/mdadm.conf

Em seguida, você pode atualizar o initramfs, ou sistema de arquivos RAM inicial, para que o array esteja disponível durante o processo inicial de inicialização:

  1. sudo update-initramfs -u

Adicione as novas opções de montagem do sistema de arquivos ao arquivo /etc/fstab para montagem automática durante a inicialização:

  1. echo '/dev/md0 /mnt/md0 ext4 defaults,nofail,discard 0 0' | sudo tee -a /etc/fstab

Agora, seu array RAID 1 será montado automaticamente em cada inicialização.

A configuração do seu RAID está concluída. Se você deseja experimentar um RAID diferente, siga as instruções de redefinição no início deste tutorial para prosseguir com a criação de um novo tipo de array RAID.

Criando um Array RAID 5

O tipo de matriz RAID 5 é implementado através da distribuição de dados entre os dispositivos disponíveis. Um componente de cada conjunto é um bloco de paridade calculado. Se um dispositivo falhar, o bloco de paridade e os blocos restantes podem ser usados para calcular os dados ausentes. O dispositivo que recebe o bloco de paridade é rotacionado de forma que cada dispositivo tenha uma quantidade equilibrada de informações de paridade.

  • Requisitos: Mínimo de 3 dispositivos de armazenamento.
  • Benefício principal: Redundância com mais capacidade utilizável.
  • Coisas a ter em mente: Enquanto as informações de paridade são distribuídas, a capacidade de um disco será usada para a paridade. O RAID 5 pode sofrer com desempenho muito ruim quando em estado degradado.

Identificando os Dispositivos Componentes

Para começar, encontre os identificadores dos discos brutos que você irá utilizar:

  1. lsblk -o NAME,SIZE,FSTYPE,TYPE,MOUNTPOINT
Output
NAME SIZE FSTYPE TYPE MOUNTPOINT sda 100G disk sdb 100G disk sdc 100G disk vda 25G disk ├─vda1 24.9G ext4 part / ├─vda14 4M part └─vda15 106M vfat part /boot/efi vdb 466K iso9660 disk

Você tem três discos sem sistema de arquivos, cada um com 100G de tamanho. Esses dispositivos foram atribuídos aos identificadores /dev/sda, /dev/sdb e /dev/sdc para esta sessão e serão os componentes brutos que você usará para construir a matriz.

Criando a Matriz

Para criar um array RAID 5 com estes componentes, passe-os para o comando mdadm --create. Você terá que especificar o nome do dispositivo que deseja criar, o nível do RAID e o número de dispositivos. Neste exemplo de comando, você estará nomeando o dispositivo como /dev/md0, e incluirá os discos que irão compor o array:

  1. sudo mdadm --create --verbose /dev/md0 --level=5 --raid-devices=3 /dev/sda /dev/sdb /dev/sdc

A ferramenta mdadm começará a configurar o array. Ele utiliza o processo de recuperação para construir o array por motivos de desempenho. Isso pode levar algum tempo para ser concluído, mas o array pode ser usado durante esse tempo. Você pode monitorar o progresso da espelhação verificando o arquivo /proc/mdstat:

  1. cat /proc/mdstat
Output
Personalities : [linear] [multipath] [raid0] [raid1] [raid6] [raid5] [raid4] [raid10] md0 : active raid5 sdc[3] sdb[1] sda[0] 209582080 blocks super 1.2 level 5, 512k chunk, algorithm 2 [3/2] [UU_] [>....................] recovery = 0.9% (957244/104791040) finish=18.0min speed=95724K/sec unused devices: <none>

Na primeira linha destacada, o dispositivo /dev/md0 foi criado na configuração RAID 5 usando os dispositivos /dev/sda, /dev/sdb e /dev/sdc. A segunda linha destacada mostra o progresso da construção.

Aviso: Devido à forma como o mdadm constrói arrays RAID 5, enquanto o array ainda está sendo construído, o número de spares no array será relatado de forma imprecisa. Isso significa que você deve esperar que o array termine de ser montado antes de atualizar o arquivo /etc/mdadm/mdadm.conf. Se você atualizar o arquivo de configuração enquanto o array ainda estiver sendo construído, o sistema terá informações incorretas sobre o estado do array e não conseguirá montá-lo automaticamente durante a inicialização com o nome correto.

Você pode continuar o guia enquanto esse processo é concluído.

Criando e Montando o Sistema de Arquivos

Em seguida, crie um sistema de arquivos no conjunto:

  1. sudo mkfs.ext4 -F /dev/md0

Crie um ponto de montagem para anexar o novo sistema de arquivos:

  1. sudo mkdir -p /mnt/md0

Você pode montar o sistema de arquivos com o seguinte:

  1. sudo mount /dev/md0 /mnt/md0

Verifique se o novo espaço está disponível:

  1. df -h -x devtmpfs -x tmpfs
Output
Filesystem Size Used Avail Use% Mounted on /dev/vda1 25G 1.4G 23G 6% / /dev/vda15 105M 3.4M 102M 4% /boot/efi /dev/md0 197G 60M 187G 1% /mnt/md0

O novo sistema de arquivos está montado e acessível.

Salvando o Layout do Array

Para garantir que o array seja reconfigurado automaticamente no boot, você precisa ajustar o arquivo /etc/mdadm/mdadm.conf.

Aviso: Como mencionado anteriormente, antes de ajustar a configuração, verifique novamente se o array terminou de ser montado. Completar as seguintes etapas antes que o array seja construído impedirá que o sistema monte corretamente o array durante a reinicialização.

Você pode monitorar o progresso da espelhagem verificando o arquivo /proc/mdstat:

  1. cat /proc/mdstat
Output
Personalities : [raid1] [linear] [multipath] [raid0] [raid6] [raid5] [raid4] [raid10] md0 : active raid5 sdc[3] sdb[1] sda[0] 209584128 blocks super 1.2 level 5, 512k chunk, algorithm 2 [3/3] [UUU] unused devices: <none>

Esta saída revela que a reconstrução está completa. Agora, você pode escanear automaticamente o array ativo e anexar o arquivo:

  1. sudo mdadm --detail --scan | sudo tee -a /etc/mdadm/mdadm.conf

Depois, você pode atualizar o initramfs, ou sistema de arquivos RAM inicial, para que o array esteja disponível durante o processo de inicialização inicial.

  1. sudo update-initramfs -u

Adicione as novas opções de montagem do sistema de arquivos ao arquivo /etc/fstab para montagem automática durante a inicialização:

  1. echo '/dev/md0 /mnt/md0 ext4 defaults,nofail,discard 0 0' | sudo tee -a /etc/fstab

Agora, o seu conjunto RAID 5 será automaticamente montado a cada inicialização.

Você concluiu a configuração do seu conjunto RAID. Se desejar experimentar um RAID diferente, siga as instruções de reinicialização no início deste tutorial para criar um novo tipo de conjunto RAID.

Criando um Conjunto RAID 6

O tipo de conjunto RAID 6 é implementado através da distribuição de dados pelos dispositivos disponíveis. Dois componentes de cada bloco são calculados como blocos de paridade. Se um ou dois dispositivos falharem, os blocos de paridade e os blocos restantes podem ser usados para calcular os dados ausentes. Os dispositivos que recebem os blocos de paridade são rotacionados, garantindo que cada dispositivo tenha uma quantidade equilibrada de informações de paridade. Isso é semelhante a um conjunto RAID 5, mas permite a falha de dois discos.

  • Requisitos: Mínimo de 4 dispositivos de armazenamento.
  • Benefício principal: Redundância dupla com mais capacidade utilizável.
  • Coisas a ter em mente: Embora as informações de paridade sejam distribuídas, a capacidade equivalente a dois discos será usada para a paridade. O RAID 6 pode apresentar desempenho muito baixo em estado degradado.

Identificação dos Dispositivos Componentes

Para começar, encontre os identificadores dos discos brutos que você irá utilizar:

  1. lsblk -o NAME,SIZE,FSTYPE,TYPE,MOUNTPOINT
Output
NAME SIZE FSTYPE TYPE MOUNTPOINT sda 100G disk sdb 100G disk sdc 100G disk sdd 100G disk vda 25G disk ├─vda1 24.9G ext4 part / ├─vda14 4M part └─vda15 106M vfat part /boot/efi vdb 466K iso9660 disk

Neste exemplo, você tem quatro discos sem sistema de arquivos, cada um com 100G de tamanho. Esses dispositivos foram atribuídos aos identificadores /dev/sda, /dev/sdb, /dev/sdc e /dev/sdd para esta sessão e serão os componentes brutos usados para construir o conjunto.

Criando o Conjunto

Para criar um conjunto RAID 6 com esses componentes, passe-os para o comando mdadm --create. Você deve especificar o nome do dispositivo que deseja criar, o nível do RAID e o número de dispositivos. No exemplo de comando a seguir, você estará nomeando o dispositivo como /dev/md0 e incluirá os discos que irão construir o conjunto:

  1. sudo mdadm --create --verbose /dev/md0 --level=6 --raid-devices=4 /dev/sda /dev/sdb /dev/sdc /dev/sdd

A ferramenta mdadm começará a configurar o conjunto. Ela utiliza o processo de recuperação para construir o conjunto por razões de desempenho. Isso pode levar algum tempo para ser concluído, mas o conjunto pode ser utilizado durante esse tempo. Você pode monitorar o progresso da espelhamento verificando o arquivo /proc/mdstat:

  1. cat /proc/mdstat
Output
Personalities : [linear] [multipath] [raid0] [raid1] [raid6] [raid5] [raid4] [raid10] md0 : active raid6 sdd[3] sdc[2] sdb[1] sda[0] 209584128 blocks super 1.2 level 6, 512k chunk, algorithm 2 [4/4] [UUUU] [>....................] resync = 0.6% (668572/104792064) finish=10.3min speed=167143K/sec unused devices: <none>

Na primeira linha destacada, o dispositivo /dev/md0 foi criado na configuração RAID 6 usando os dispositivos /dev/sda, /dev/sdb, /dev/sdc e /dev/sdd. A segunda linha destacada mostra o progresso da construção. Você pode continuar o guia enquanto esse processo é concluído.

Criando e Montando o Sistema de Arquivos

Em seguida, crie um sistema de arquivos no array:

  1. sudo mkfs.ext4 -F /dev/md0

Crie um ponto de montagem para anexar o novo sistema de arquivos:

  1. sudo mkdir -p /mnt/md0

Você pode montar o sistema de arquivos com o seguinte comando:

  1. sudo mount /dev/md0 /mnt/md0

Verifique se o novo espaço está disponível:

  1. df -h -x devtmpfs -x tmpfs
Output
Filesystem Size Used Avail Use% Mounted on /dev/vda1 25G 1.4G 23G 6% / /dev/vda15 105M 3.4M 102M 4% /boot/efi /dev/md0 197G 60M 187G 1% /mnt/md0

O novo sistema de arquivos está montado e acessível.

Salvando o Layout do Array

Para garantir que o array seja reagrupado automaticamente durante a inicialização, será necessário ajustar o arquivo /etc/mdadm/mdadm.conf. Você pode escanear automaticamente o array ativo e adicionar o arquivo digitando o seguinte comando:

  1. sudo mdadm --detail --scan | sudo tee -a /etc/mdadm/mdadm.conf

Depois, você pode atualizar o initramfs, ou sistema de arquivos inicial RAM, para que o array esteja disponível durante o processo de inicialização inicial:

  1. sudo update-initramfs -u

Adicione as novas opções de montagem do sistema de arquivos ao arquivo /etc/fstab para montagem automática durante a inicialização:

  1. echo '/dev/md0 /mnt/md0 ext4 defaults,nofail,discard 0 0' | sudo tee -a /etc/fstab

Agora, sua matriz RAID 6 será montada automaticamente a cada inicialização.

Você terminou de configurar sua RAID. Se quiser tentar uma RAID diferente, siga as instruções de redefinição no início deste tutorial para criar uma nova matriz RAID.

Criando uma Matriz RAID 10 Complexa

O tipo de matriz RAID 10 é tradicionalmente implementado criando uma matriz RAID 0 listrada composta por conjuntos de matrizes RAID 1. Esse tipo de matriz aninhada oferece tanto redundância quanto alto desempenho, às custas de grandes quantidades de espaço em disco. O utilitário mdadm tem seu próprio tipo RAID 10 que fornece o mesmo tipo de benefícios com maior flexibilidade. Não é criado por meio de matrizes aninhadas, mas possui muitas das mesmas características e garantias. Você estará usando o RAID 10 do mdadm aqui.

  • Requisitos: Mínimo de 3 dispositivos de armazenamento.
  • Benefício principal: Desempenho e redundância.
  • Coisas para lembrar: A quantidade de redução de capacidade para a matriz é definida pelo número de cópias de dados que você escolhe manter. O número de cópias armazenadas com o RAID 10 no estilo mdadm é configurável.

Por padrão, duas cópias de cada bloco de dados serão armazenadas no que é chamado de layout near. Os layouts possíveis que ditam como cada bloco de dados é armazenado são os seguintes:

  • near: Arranjo padrão. As cópias de cada fragmento são gravadas consecutivamente durante o stripe, significando que as cópias dos blocos de dados serão gravadas na mesma parte de vários discos.
  • far: As cópias inicial e subsequente são gravadas em partes diferentes dos dispositivos de armazenamento na matriz. Por exemplo, o primeiro fragmento pode ser gravado perto do início de um disco, enquanto o segundo fragmento seria gravado pela metade em um disco diferente. Isso pode proporcionar ganhos de desempenho de leitura para discos rígidos tradicionais, à custa do desempenho de gravação.
  • offset: Cada stripe é copiado e deslocado por uma unidade. Isso significa que as cópias estão deslocadas uma da outra, mas ainda próximas no disco. Isso ajuda a minimizar buscas excessivas durante algumas cargas de trabalho.

Você pode saber mais sobre esses layouts consultando a seção RAID10 desta página man:

  1. man 4 md

Você também pode encontrar esta página do man online.

Identificando os Dispositivos Componentes

Para começar, encontre os identificadores dos discos brutos que você estará usando:

  1. lsblk -o NAME,SIZE,FSTYPE,TYPE,MOUNTPOINT
Output
NAME SIZE FSTYPE TYPE MOUNTPOINT sda 100G disk sdb 100G disk sdc 100G disk sdd 100G disk vda 25G disk ├─vda1 24.9G ext4 part / ├─vda14 4M part └─vda15 106M vfat part /boot/efi vdb 466K iso9660 disk

Neste exemplo, você tem quatro discos sem sistema de arquivos, cada um com 100G de tamanho. Esses dispositivos foram atribuídos os identificadores /dev/sda, /dev/sdb, /dev/sdc e /dev/sdd para esta sessão e serão os componentes brutos usados para construir a matriz.

Criando a Matriz

Para criar uma matriz RAID 10 com esses componentes, passe-os para o comando mdadm --create. Você precisa especificar o nome do dispositivo que deseja criar, o nível do RAID e o número de dispositivos. No exemplo de comando a seguir, você estará nomeando o dispositivo /dev/md0 e incluirá os discos que serão usados para construir a matriz:

Você pode configurar duas cópias usando o layout “near” ao não especificar um layout e número de cópias:

  1. sudo mdadm --create --verbose /dev/md0 --level=10 --raid-devices=4 /dev/sda /dev/sdb /dev/sdc /dev/sdd

Se você deseja usar um layout diferente ou alterar o número de cópias, precisará usar a opção --layout=, que recebe um identificador de layout e cópia. Os layouts são n para “near”, f para “far” e o para “offset”. O número de cópias a serem armazenadas é anexado em seguida.

Por exemplo, para criar uma matriz que tenha três cópias no layout de offset, o comando incluiria o seguinte:

  1. sudo mdadm --create --verbose /dev/md0 --level=10 --layout=o3 --raid-devices=4 /dev/sda /dev/sdb /dev/sdc /dev/sdd

A ferramenta mdadm começará a configurar a matriz. Utiliza o processo de recuperação para construir a matriz por motivos de desempenho. Isso pode levar algum tempo para ser concluído, mas a matriz pode ser usada durante esse tempo. Você pode monitorar o progresso da espelhação verificando o arquivo /proc/mdstat:

  1. cat /proc/mdstat
Output
Personalities : [raid6] [raid5] [raid4] [linear] [multipath] [raid0] [raid1] [raid10] md0 : active raid10 sdd[3] sdc[2] sdb[1] sda[0] 209584128 blocks super 1.2 512K chunks 2 near-copies [4/4] [UUUU] [===>.................] resync = 18.1% (37959424/209584128) finish=13.8min speed=206120K/sec unused devices: <none>

Na primeira linha destacada, o dispositivo /dev/md0 foi criado na configuração RAID 10 usando os dispositivos /dev/sda, /dev/sdb, /dev/sdc e /dev/sdd. A segunda área destacada mostra o layout que foi usado para este exemplo (duas cópias na configuração próxima). A terceira área destacada mostra o progresso na construção. Você pode continuar o guia enquanto este processo é concluído.

Criando e Montando o Sistema de Arquivos

Em seguida, crie um sistema de arquivos na matriz:

  1. sudo mkfs.ext4 -F /dev/md0

Crie um ponto de montagem para anexar o novo sistema de arquivos:

  1. sudo mkdir -p /mnt/md0

Você pode montar o sistema de arquivos com o seguinte comando:

  1. sudo mount /dev/md0 /mnt/md0

Verifique se o novo espaço está disponível:

  1. df -h -x devtmpfs -x tmpfs
Output
Filesystem Size Used Avail Use% Mounted on /dev/vda1 25G 1.4G 23G 6% / /dev/vda15 105M 3.4M 102M 4% /boot/efi /dev/md0 197G 60M 187G 1% /mnt/md0

O novo sistema de arquivos está montado e acessível.

Salvando o Layout da Matriz

Para garantir que a matriz seja reconfigurada automaticamente durante a inicialização, será necessário ajustar o arquivo /etc/mdadm/mdadm.conf. Você pode escanear automaticamente a matriz ativa e anexar o arquivo executando o seguinte:

  1. sudo mdadm --detail --scan | sudo tee -a /etc/mdadm/mdadm.conf

Posteriormente, você pode atualizar o initramfs, ou sistema de arquivos RAM inicial, para que a matriz esteja disponível durante o processo inicial de inicialização:

  1. sudo update-initramfs -u

Adicione as novas opções de montagem do sistema de arquivos ao arquivo /etc/fstab para montagem automática durante a inicialização:

  1. echo '/dev/md0 /mnt/md0 ext4 defaults,nofail,discard 0 0' | sudo tee -a /etc/fstab

Sua matriz RAID 10 agora será montada automaticamente a cada inicialização.

Conclusão

Neste guia, você aprendeu como criar vários tipos de matrizes usando a utilidade de RAID de software mdadm do Linux. As matrizes RAID oferecem algumas melhorias convincentes em termos de redundância e desempenho em comparação com o uso de discos individuais.

Depois de decidir sobre o tipo de matriz necessário para o seu ambiente e criar o dispositivo, você pode aprender como realizar a gestão diária com mdadm. Nosso guia sobre como gerenciar matrizes RAID com mdadm no Ubuntu pode ajudar você a começar.

Source:
https://www.digitalocean.com/community/tutorials/how-to-create-raid-arrays-with-mdadm-on-ubuntu-22-04