Como Criar Arrays RAID com mdadm no Ubuntu 22.04

Introdução

A utilidade mdadm pode ser usada para criar e gerenciar conjuntos 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 criar dispositivos de armazenamento lógico com características de desempenho ou redundância aprimoradas.

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 no seu servidor. Os exemplos neste tutorial demonstram como configurar vários tipos de conjuntos no servidor. Portanto, você precisará de algumas unidades para configurar.
  • Dependendo do tipo de conjunto, 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 no datacenter 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.

Reinicializando Dispositivos RAID Existente (Opcional)

Você pode pular esta seção por enquanto se ainda não configurou nenhuma matriz. Este guia apresentará diversos níveis de RAID diferentes. Se deseja acompanhar e completar 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 Existente pode ser consultada para reiniciar seus dispositivos de armazenamento de componente antes de testar um novo nível de RAID.

Aviso: Este processo destruirá completamente a matriz e quaisquer dados gravados nela. Certifique-se de que está operando na matriz correta e que você copiou quaisquer dados que precisa manter antes de destruir a matriz.

Comece encontrando as matrizes ativas 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 a matriz do sistema de arquivos:

  1. sudo umount /dev/md0

Agora, pare e remova a matriz:

  1. sudo mdadm --stop /dev/md0

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

Aviso: Tenha em mente que os nomes /dev/sd* podem mudar a qualquer momento que você reinicializar. Verifique-os sempre para garantir que está 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 uma matriz, zere seu superbloco que contém metadados para a configuração do RAID. Zerar isso remove os metadados do RAID e os reconfigura para o 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

Por fim, atualize o initramfs novamente para que o processo de inicialização precoce 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 de dispositivo único destruirá todos os dados no array.

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 vda 25G disk ├─vda1 24.9G ext4 part / ├─vda14 4M part └─vda15 106M vfat part /boot/efi vdb 466K iso9660 disk

Neste exemplo, você possui dois discos sem um sistema de arquivos, cada um com 100G de tamanho. Esses dispositivos foram atribuídos com 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 como /dev/md0, e incluir os dois discos que irão compor 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 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 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 agora está montado e acessível.

Salvando o Layout do Conjunto

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

  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 conjunto esteja disponível durante o processo de inicialização precoce:

  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 conjunto RAID 0 agora será montado automaticamente a cada inicialização.

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

Criando um Array RAID 1

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

  • Requisitos: Mínimo de 2 dispositivos de armazenamento.
  • Benefício principal: Redundância entre dois dispositivos de armazenamento.
  • Coisas a ter em mente: Como duas cópias dos dados são mantidas, apenas metade do espaço em 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ê possui dois discos sem sistema de arquivos, cada um com 100G de tamanho. Esses dispositivos foram atribuídos 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

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

Para criar um array RAID 1 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ê nomeará o dispositivo como /dev/md0 e incluirá os discos que construirão o array:

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

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

  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>

A ferramenta mdadm começará a espelhar as unidades. Isso pode levar algum tempo para ser concluído, mas o array pode ser usado durante esse período. Você pode monitorar o progresso da espelhação verificando o arquivo /proc/mdstat:

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 na espelhação. Você pode prosseguir para a próxima etapa 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

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 na inicialização, você precisa ajustar o arquivo /etc/mdadm/mdadm.conf. Você pode escanear automaticamente o array ativo e anexar o arquivo com o seguinte:

  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:

  1. sudo update-initramfs -u

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

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

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

Você terminou a configuração do seu RAID. Se quiser tentar um RAID diferente, siga as instruções de reinicializaçã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 array RAID 5 é implementado através da distribuição dos dados entre os dispositivos disponíveis. Um componente de cada distribuição é 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 para 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 maior capacidade utilizável.
  • Coisas a ter em mente: Embora as informações de paridade sejam distribuídas, a capacidade de um disco será utilizada para a paridade. O RAID 5 pode ter um desempenho muito ruim quando está em um estado degradado.

Identificando os dispositivos componentes

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

  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 um sistema de arquivos, cada um com 100 GB de tamanho. Esses dispositivos receberam os identificadores /dev/sda, /dev/sdb e /dev/sdc 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 5 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ê nomeará o dispositivo como /dev/md0 e incluirá os discos que irão compor o conjunto:

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

A ferramenta mdadm iniciará a configuração do 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 período. Você pode monitorar o progresso do espelhamento 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 à maneira como o mdadm constrói os conjuntos RAID 5, enquanto o conjunto ainda está em construção, o número de reservas no conjunto será relatado de forma imprecisa. Isso significa que você deve aguardar o término da montagem do conjunto antes de atualizar o arquivo /etc/mdadm/mdadm.conf. Se você atualizar o arquivo de configuração enquanto o conjunto ainda está em construção, o sistema terá informações incorretas sobre o estado do conjunto e não poderá montá-lo automaticamente na 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 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 Conjunto

Para garantir que o conjunto seja reagrupado automaticamente na inicialização, é necessário ajustar o arquivo /etc/mdadm/mdadm.conf.

Aviso: Conforme mencionado anteriormente, antes de ajustar a configuração, verifique novamente se o conjunto foi totalmente montado. Executar as seguintes etapas antes que o conjunto seja construído impedirá que o sistema o reagrupe corretamente durante a reinicialização.

Você pode monitorar o progresso da espelhação 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 conjunto ativo e anexar o arquivo:

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

Em seguida, atualize o initramfs, ou sistema de arquivos RAM inicial, para que o conjunto esteja disponível durante o processo de inicialização precoce:

  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 conjunto RAID 5 será agora automaticamente montado em cada inicialização.

A configuração do seu conjunto RAID está concluída. Se desejar experimentar um RAID diferente, siga as instruções de redefiniçã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 do espaçamento de dados pelos dispositivos disponíveis. Dois componentes de cada espaço são blocos de paridade calculados. 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 para 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 drives.

  • Requisitos: Mínimo de 4 dispositivos de armazenamento.
  • Benefício principal: Redundância dupla com mais capacidade utilizável.
  • Coisas a ter em mente: Enquanto as informações de paridade são distribuídas, a capacidade de dois discos será usada para a paridade. O RAID 6 pode sofrer de desempenho muito baixo em um 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 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 100 GB de tamanho. Esses dispositivos foram dados os identificadores /dev/sda, /dev/sdb, /dev/sdc e /dev/sdd para esta sessão e serão os componentes brutos usados para construir o array.

Criando o Array

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

  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 array. Ela utiliza o processo de recuperação para construir o array por razões de desempenho. Isso pode levar algum tempo para ser concluído, mas o array 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 reassemblado automaticamente durante a inicialização, você precisará ajustar o arquivo /etc/mdadm/mdadm.conf. Você pode escanear automaticamente o array ativo e adicionar ao arquivo digitando:

  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 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 conjunto RAID 6 será montado automaticamente a cada inicialização.

Você terminou de configurar seu RAID. Se desejar tentar 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 Array RAID 10 Complexo

O tipo de array RAID 10 é tradicionalmente implementado criando um array RAID 0 listrado composto por conjuntos de arrays RAID 1. Esse tipo de array aninhado oferece redundância e alto desempenho, em detrimento de grandes quantidades de espaço em disco. O utilitário mdadm possui seu próprio tipo de RAID 10 que fornece os mesmos benefícios com maior flexibilidade. Não é criado por meio de arrays aninhados, mas tem muitas das mesmas características e garantias. Aqui você estará usando o RAID 10 do mdadm.

  • 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 o array é definida pelo número de cópias de dados que você escolhe manter. O número de cópias armazenadas com o estilo RAID 10 do 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: A disposição padrão. As cópias de cada chunk são gravadas consecutivamente ao fazer striping, significando que as cópias dos blocos de dados serão gravadas na mesma parte de vários discos.
  • far: A primeira e as cópias subsequentes são gravadas em partes diferentes dos dispositivos de armazenamento na matriz. Por exemplo, o primeiro chunk pode ser gravado perto do início de um disco, enquanto o segundo chunk seria gravado na metade de outro disco. Isso pode proporcionar alguns ganhos de desempenho de leitura para discos giratórios tradicionais em detrimento do desempenho de gravação.
  • offset: Cada stripe é copiada e deslocada por um drive. 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 obter mais informações sobre esses layouts verificando a seção RAID10 desta página man:

  1. man 4 md

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

Identificando os Dispositivos Componentes

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

  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 um 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 o conjunto.

Criando o Conjunto

Para criar um conjunto 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 do comando a seguir, você nomeará o dispositivo /dev/md0 e incluirá os discos que construirão o conjunto:

Você pode configurar duas cópias usando o layout “near” não especificando 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, terá que 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 é adicionado depois.

Por exemplo, para criar um conjunto que tenha três cópias no layout de deslocamento, 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 iniciará a configuração do array. Ela 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 período. Você pode verificar o progresso da espelhamento 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 neste exemplo (duas cópias na configuração próxima). A terceira área 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 da seguinte maneira:

  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 a matriz seja reagrupada automaticamente durante a inicialização, você precisará 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

Depois, você pode atualizar o initramfs, ou sistema de arquivos RAM inicial, para que a matriz 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

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 o utilitário RAID de software mdadm do Linux. As matrizes RAID oferecem algumas redundâncias e aprimoramentos de desempenho convincentes em comparação com o uso de vários discos individualmente.

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

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