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
:
- cat /proc/mdstat
OutputPersonalities : [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:
- sudo umount /dev/md0
Agora, pare e remova a matriz:
- 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.
- lsblk -o NAME,SIZE,FSTYPE,TYPE,MOUNTPOINT
OutputNAME 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:
- sudo mdadm --zero-superblock /dev/sda
- 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:
- sudo nano /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
:
- sudo nano /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:
- 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:
- lsblk -o NAME,SIZE,FSTYPE,TYPE,MOUNTPOINT
OutputNAME 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:
- 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
:
- cat /proc/mdstat
OutputPersonalities : [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:
- sudo mkfs.ext4 -F /dev/md0
Depois, crie um ponto de montagem para anexar o novo sistema de arquivos:
- sudo mkdir -p /mnt/md0
Você pode montar o sistema de arquivos com o seguinte comando:
- sudo mount /dev/md0 /mnt/md0
Depois, verifique se o novo espaço está disponível:
- df -h -x devtmpfs -x tmpfs
OutputFilesystem 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:
- 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:
- 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:
- 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:
- lsblk -o NAME,SIZE,FSTYPE,TYPE,MOUNTPOINT
OutputNAME 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
- 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:
Outputmdadm: 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:
- cat /proc/mdstat
OutputPersonalities : [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:
- sudo mkfs.ext4 -F /dev/md0
Depois, crie um ponto de montagem para anexar o novo sistema de arquivos:
- sudo mkdir -p /mnt/md0
Você pode montar o sistema de arquivos executando o seguinte comando:
- sudo mount /dev/md0 /mnt/md0
Verifique se o novo espaço está disponível:
- df -h -x devtmpfs -x tmpfs
OutputFilesystem 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:
- 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:
- 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:
- 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:
- lsblk -o NAME,SIZE,FSTYPE,TYPE,MOUNTPOINT
OutputNAME 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:
- 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
:
- cat /proc/mdstat
OutputPersonalities : [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:
- sudo mkfs.ext4 -F /dev/md0
Crie um ponto de montagem para anexar o novo sistema de arquivos:
- sudo mkdir -p /mnt/md0
Você pode montar o sistema de arquivos com o seguinte comando:
- sudo mount /dev/md0 /mnt/md0
Verifique se o novo espaço está disponível:
- df -h -x devtmpfs -x tmpfs
OutputFilesystem 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
:
- cat /proc/mdstat
OutputPersonalities : [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:
- 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:
- 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:
- 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:
- lsblk -o NAME,SIZE,FSTYPE,TYPE,MOUNTPOINT
OutputNAME 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:
- 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
:
- cat /proc/mdstat
OutputPersonalities : [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:
- sudo mkfs.ext4 -F /dev/md0
Crie um ponto de montagem para anexar o novo sistema de arquivos:
- sudo mkdir -p /mnt/md0
Você pode montar o sistema de arquivos com o seguinte comando:
- sudo mount /dev/md0 /mnt/md0
Verifique se o novo espaço está disponível:
- df -h -x devtmpfs -x tmpfs
OutputFilesystem 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:
- 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.
- 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:
- 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
:
- 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:
- lsblk -o NAME,SIZE,FSTYPE,TYPE,MOUNTPOINT
OutputNAME 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:
- 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:
- 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
:
- cat /proc/mdstat
OutputPersonalities : [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:
- sudo mkfs.ext4 -F /dev/md0
Crie um ponto de montagem para anexar o novo sistema de arquivos:
- sudo mkdir -p /mnt/md0
Você pode montar o sistema de arquivos da seguinte maneira:
- sudo mount /dev/md0 /mnt/md0
Verifique se o novo espaço está disponível:
- df -h -x devtmpfs -x tmpfs
OutputFilesystem 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:
- 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:
- 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:
- 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.