Configurar Armazenamento RAID e LVM no Linux

CompTIABeginner
Pratique Agora

Introdução

Neste laboratório, você aprenderá como configurar e gerenciar soluções avançadas de armazenamento em um ambiente Linux. Você trabalhará com duas ferramentas poderosas: o Gerenciador de Volumes Lógicos (LVM), para um gerenciamento flexível de volumes, e o mdadm, para a criação de Matrizes Redundantes de Discos Independentes (RAID) via software. Este laboratório oferece uma experiência prática na configuração de uma infraestrutura de armazenamento robusta e escalável diretamente pela linha de comando, utilizando dispositivos de loop para simular discos físicos.

Você começará inicializando volumes físicos do LVM e criando um grupo de volumes. Em seguida, criará, formatará, montará e redimensionará um volume lógico para entender sua natureza dinâmica. Depois, prosseguirá para a construção e montagem de um array RAID 1 (espelhamento) visando a redundância de dados. Para concluir o laboratório, você garantirá que essas configurações de armazenamento sejam persistentes após a reinicialização do sistema, modificando os arquivos /etc/fstab e mdadm.conf.

Este é um Laboratório Guiado, que fornece instruções passo a passo para ajudá-lo a aprender e praticar. Siga as instruções cuidadosamente para concluir cada etapa e ganhar experiência prática. Dados históricos mostram que este é um laboratório de nível iniciante com uma taxa de conclusão de 88%. Ele recebeu uma taxa de avaliação positiva de 99% dos alunos.

Inicializar LVM com pvcreate e vgcreate

Nesta etapa, você começará a trabalhar com o Gerenciador de Volumes Lógicos (LVM). O LVM é uma ferramenta poderosa para gerenciar dispositivos de armazenamento no Linux. Ele adiciona uma camada de abstração entre seus discos rígidos físicos e os sistemas de arquivos, permitindo configurações mais flexíveis, como o redimensionamento de volumes em tempo real.

Os blocos de construção básicos do LVM são:

  • Volumes Físicos (PVs): São seus dispositivos de bloco, como partições de disco rígido ou, no nosso caso, discos simulados.
  • Grupos de Volumes (VGs): São pools de armazenamento criados pelo agrupamento de um ou mais Volumes Físicos.
  • Volumes Lógicos (LVs): São as "partições virtuais" que você cria a partir do espaço disponível em um Grupo de Volumes. Você criará os sistemas de arquivos nesses LVs.

Primeiro, vamos garantir que as ferramentas necessárias, lvm2 e mdadm, estejam instaladas.

sudo apt-get update && sudo apt-get install -y lvm2 mdadm

Como não temos discos rígidos físicos sobressalentes neste ambiente, vamos simulá-los usando dispositivos de loop. Um dispositivo de loop permite que um arquivo seja tratado como um dispositivo de bloco. Vamos começar criando dois arquivos de 256MB no seu diretório de projeto que atuarão como nossas imagens de disco.

truncate -s 256M disk1.img disk2.img

Agora, verifique se os arquivos foram criados com o tamanho correto.

ls -lh

Você deve ver uma saída semelhante a esta:

total 0
-rw-r--r-- 1 labex labex 256M Jan 1 12:00 disk1.img
-rw-r--r-- 1 labex labex 256M Jan 1 12:00 disk2.img

Em seguida, associe esses arquivos de imagem a dispositivos de loop. Usaremos /dev/loop20 e /dev/loop21.

sudo losetup /dev/loop20 disk1.img
sudo losetup /dev/loop21 disk2.img

Agora que temos nossos "discos" (/dev/loop20 e /dev/loop21), podemos inicializá-los como Volumes Físicos do LVM usando o comando pvcreate.

sudo pvcreate /dev/loop20 /dev/loop21

A saída confirma que os PVs foram criados com sucesso:

  Physical volume "/dev/loop20" successfully created.
  Physical volume "/dev/loop21" successfully created.

Você pode exibir um resumo dos Volumes Físicos com pvs ou obter uma visão mais detalhada com pvdisplay.

sudo pvs
  PV           VG   Fmt  Attr PSize   PFree
  /dev/loop20       lvm2 ---  256.00m 256.00m
  /dev/loop21       lvm2 ---  256.00m 256.00m

Com nossos Volumes Físicos prontos, o próximo passo é criar um Grupo de Volumes chamado labvg que combina o armazenamento de ambos os PVs. Usaremos o comando vgcreate para isso.

sudo vgcreate labvg /dev/loop20 /dev/loop21

A saída de sucesso será:

  Volume group "labvg" successfully created

Finalmente, vamos inspecionar nosso novo Grupo de Volumes usando vgs para um resumo ou vgdisplay para detalhes.

sudo vgs

A saída mostra nosso grupo labvg, que possui um tamanho total de aproximadamente 512MB (256MB de cada PV).

  VG    #PV #LV #SN Attr   VSize   VFree
  labvg   2   0   0 wz--n- 512.00m 512.00m

Você inicializou com sucesso dois dispositivos como Volumes Físicos e os combinou em um único Grupo de Volumes, preparando o terreno para a criação de Volumes Lógicos flexíveis.

Criar e Montar um Volume Lógico com lvcreate e mkfs

Nesta etapa, você usará o Grupo de Volumes labvg criado anteriormente para criar um Volume Lógico (LV). Um LV é o equivalente do LVM a uma partição. Uma vez criado, você pode formatá-lo com um sistema de arquivos e montá-lo para torná-lo acessível para armazenar dados.

Primeiro, vamos criar um Volume Lógico de 200MB chamado lablvm a partir do pool de armazenamento labvg. Usamos o comando lvcreate, especificando o tamanho com a flag -L e o nome com a flag -n.

sudo lvcreate -L 200M -n lablvm labvg

Você verá uma mensagem de confirmação:

  Logical volume "lablvm" created.

Agora você pode visualizar seu novo LV com o comando lvs, que fornece um resumo de todos os Volumes Lógicos.

sudo lvs

A saída mostrará seu novo lablvm dentro do grupo labvg.

  LV     VG    Attr       LSize   Pool Origin Data%  Meta%  Move Log Cpy%Sync Convert
  lablvm labvg -wi-a----- 200.00m

O novo LV, que está acessível como um dispositivo em /dev/labvg/lablvm, é atualmente um dispositivo de bloco bruto e não formatado. Para armazenar arquivos nele, você deve primeiro criar um sistema de arquivos. Usaremos o comando mkfs.ext4 para formatá-lo com o sistema de arquivos comum ext4.

sudo mkfs.ext4 /dev/labvg/lablvm

O comando exibirá detalhes sobre o sistema de arquivos criado:

mke2fs 1.46.5 (30-Dec-2021)
Discarding device blocks: done
Creating filesystem with 51200 4k blocks and 51200 inodes
Filesystem UUID: 28796151-bd37-4cae-a17f-071db8795919
Superblock backups stored on blocks:
        32768

Allocating group tables: done
Writing inode tables: done
Creating journal (4096 blocks): done
Writing superblocks and filesystem accounting information: done

Em seguida, você precisa de um diretório para servir como "ponto de montagem". Este é um diretório vazio onde o sistema de arquivos do LV será anexado à árvore de diretórios principal. Vamos criar um diretório chamado /lablvm no diretório raiz.

sudo mkdir /lablvm

Finalmente, use o comando mount para anexar o sistema de arquivos do seu LV (/dev/labvg/lablvm) ao ponto de montagem (/lablvm).

sudo mount /dev/labvg/lablvm /lablvm

Para confirmar que o volume foi montado com sucesso e verificar o espaço disponível, use o comando df -h (disk free, em formato legível para humanos).

df -h /lablvm

A saída mostra que o dispositivo está montado e possui aproximadamente 200MB de espaço disponível.

Filesystem                Size  Used Avail Use% Mounted on
/dev/mapper/labvg-lablvm  172M   24K  158M   1% /lablvm

Você criou, formatou e montou com sucesso um Volume Lógico, deixando-o pronto para uso.

Redimensionar um Volume Lógico LVM com lvresize

Nesta etapa, você explorará um dos recursos mais poderosos do LVM: a capacidade de redimensionar um volume lógico e seu sistema de arquivos enquanto ele está online e em uso. Essa flexibilidade é uma grande vantagem sobre as partições estáticas tradicionais.

Primeiro, vamos reconfirmar o tamanho atual do seu volume lógico montado usando o comando df -h.

df -h /lablvm

Você verá que o volume tem aproximadamente 200MB de tamanho.

Filesystem                Size  Used Avail Use% Mounted on
/dev/mapper/labvg-lablvm  194M  2.6M  179M   2% /lablvm

Agora, imagine que sua aplicação rodando em /lablvm está ficando sem espaço. Você precisa aumentar sua capacidade de 200MB para 300MB. Você pode fazer isso com o comando lvresize. Usaremos a flag -r, que é muito importante, pois instrui o lvresize a também redimensionar o sistema de arquivos contido no volume lógico. Sem ela, o sistema de arquivos permaneceria no tamanho original e o novo espaço ficaria inutilizável.

sudo lvresize -r -L 300M /dev/labvg/lablvm

A saída mostra que tanto o volume lógico quanto o sistema de arquivos estão sendo redimensionados.

  Size of logical volume labvg/lablvm changed from 200.00 MiB (50 extents) to 300.00 MiB (75 extents).
  Logical volume labvg/lablvm successfully resized.
resize2fs 1.46.5 (30-Dec-2021)
Filesystem at /dev/mapper/labvg-lablvm is mounted on /lablvm; on-line resizing required
old_desc_blocks = 1, new_desc_blocks = 1
The filesystem on /dev/mapper/labvg-lablvm is now 76800 (4k) blocks long.

Verifique o espaço em disco novamente com df -h para validar a alteração.

df -h /lablvm

O volume agora tem aproximadamente 300MB.

Filesystem                Size  Used Avail Use% Mounted on
/dev/mapper/labvg-lablvm  293M  2.6M  275M   1% /lablvm

Às vezes, você não quer definir um novo tamanho absoluto, mas sim adicionar uma certa quantidade de espaço. Vamos adicionar mais 100MB ao volume. Você pode fazer isso usando um sinal de + antes do tamanho. Para esta demonstração, usaremos o método de tamanho absoluto para garantir a confiabilidade.

sudo lvresize -r -L 400M /dev/labvg/lablvm

Se você encontrar um erro de sistema de arquivos durante as operações de redimensionamento, não se preocupe — isso pode acontecer ocasionalmente com redimensionamentos consecutivos rápidos. Nesses casos, você pode recuperar desmontando o sistema de arquivos, executando uma verificação de disco e montando-o novamente:

## Se ocorrer um erro de sistema de arquivos, execute estes comandos de recuperação:
## sudo umount /lablvm
## sudo e2fsck -f /dev/labvg/lablvm
## sudo mount /dev/labvg/lablvm /lablvm

Finalmente, execute df -h uma última vez para ver o resultado final.

df -h /lablvm

O volume agora tem aproximadamente 400MB, e o espaço livre no seu Grupo de Volumes labvg foi reduzido proporcionalmente.

Filesystem                Size  Used Avail Use% Mounted on
/dev/mapper/labvg-lablvm  392M  2.7M  369M   1% /lablvm

Você redimensionou com sucesso um volume LVM ativo duas vezes, demonstrando como é fácil gerenciar a alocação de armazenamento sem tempo de inatividade.

Construir e Montar um Array RAID 1 com mdadm

Nesta etapa, você mudará seu foco do LVM para outra tecnologia de armazenamento poderosa: RAID (Matriz Redundante de Discos Independentes). Você usará o utilitário mdadm para criar um array RAID 1, também conhecido como espelhamento. Em uma configuração RAID 1, os dados são gravados de forma idêntica em dois discos, fornecendo redundância. Se um disco falhar, os dados ainda estarão seguros no outro.

Primeiro, precisamos de mais dois discos simulados para o nosso array RAID. Vamos criar dois novos arquivos de imagem de disco de 256MB, disk3.img e disk4.img, no seu diretório ~/project.

truncate -s 256M disk3.img disk4.img

Em seguida, associe esses novos arquivos de imagem a dispositivos de loop não utilizados, /dev/loop22 e /dev/loop23.

sudo losetup /dev/loop22 disk3.img
sudo losetup /dev/loop23 disk4.img

Agora você está pronto para construir o array RAID 1. Usaremos o comando mdadm para criar um novo dispositivo RAID chamado /dev/md0 usando nossos dois dispositivos de loop.

  • --create /dev/md0: Cria um novo dispositivo RAID chamado /dev/md0.
  • --level=1: Especifica o nível do RAID, neste caso, RAID 1 (espelhamento).
  • --raid-disks=2: Especifica que o array consistirá em dois discos.
  • /dev/loop22 /dev/loop23: Os dispositivos componentes para o array.

Execute o seguinte comando:

sudo mdadm --create /dev/md0 --level=1 --raid-disks=2 /dev/loop22 /dev/loop23

O sistema pedirá confirmação antes de prosseguir. Digite y e pressione Enter para continuar.

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
Continue creating array? y
mdadm: Defaulting to version 1.2 metadata
mdadm: array /dev/md0 started.

Você pode verificar o status do seu novo array RAID visualizando o arquivo /proc/mdstat.

cat /proc/mdstat

A saída mostra que /dev/md0 está ativo e usando /dev/loop23 e /dev/loop22. Você também pode ver o array sendo sincronizado (resync), o que é normal. O array pode ser utilizado mesmo enquanto esse processo é concluído.

Personalities : [raid1] [linear] [multipath] [raid0] [raid6] [raid5] [raid4] [raid10]
md0 : active raid1 loop13[1] loop12[0]
      261120 blocks super 1.2 [2/2] [UU]
      [>....................]  resync =  0.4% (1088/261120) finish=0.1min speed=21760K/sec

unused devices: <none>

Assim como o volume LVM, o novo dispositivo RAID /dev/md0 precisa de um sistema de arquivos. Vamos formatá-lo com ext4.

sudo mkfs.ext4 /dev/md0

Em seguida, crie um ponto de montagem para o array RAID.

sudo mkdir /labraid

Finalmente, monte o dispositivo RAID no novo diretório.

sudo mount /dev/md0 /labraid

Verifique se o array RAID está montado corretamente usando df -h.

df -h /labraid

A saída confirma que o dispositivo /dev/md0, com um tamanho total de cerca de 256MB (já que é um espelhamento), está montado e pronto para uso.

Filesystem      Size  Used Avail Use% Mounted on
/dev/md0        249M  2.6M  234M   2% /labraid

Você criou e montou com sucesso um array RAID 1, fornecendo redundância de dados para o ponto de montagem /labraid.

Persistir Montagens e Configuração RAID com /etc/fstab e mdadm.conf

Nesta etapa final, você tornará permanentes suas configurações de LVM e RAID. Atualmente, se você reiniciasse o sistema, o array RAID não seria remontado automaticamente, e nem o volume LVM nem o array RAID seriam montados. Para corrigir isso, você precisa atualizar dois arquivos de configuração importantes: /etc/mdadm/mdadm.conf para o array RAID e /etc/fstab para os pontos de montagem.

Primeiro, vamos tratar do array RAID. O sistema precisa saber como remontar o /dev/md0 no momento da inicialização. O utilitário mdadm pode gerar a linha de configuração necessária para você.

Execute o seguinte comando para escanear o array ativo e imprimir sua configuração:

sudo mdadm --detail --scan

A saída é uma única linha que descreve seu array.

ARRAY /dev/md0 metadata=1.2 name=<hostname>:0 UUID=<some-uuid>

Agora, vamos anexar essa configuração ao arquivo de configuração do mdadm, localizado em /etc/mdadm/mdadm.conf. Usaremos o comando tee para enviar a saída do comando de varredura diretamente para o arquivo.

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

Você pode verificar se a linha foi adicionada visualizando o conteúdo do arquivo:

cat /etc/mdadm/mdadm.conf

Em seguida, você precisa informar ao sistema para montar automaticamente seus sistemas de arquivos na inicialização. Isso é feito adicionando entradas ao /etc/fstab (a tabela de sistemas de arquivos). Cada linha neste arquivo define um ponto de montagem.

Vamos adicionar a entrada para o seu volume LVM primeiro. Usaremos o echo para criar a linha e o tee -a para anexá-la ao /etc/fstab com privilégios de sudo.

echo '/dev/labvg/lablvm /lablvm ext4 defaults 0 0' | sudo tee -a /etc/fstab

Agora, faça o mesmo para o ponto de montagem do array RAID.

echo '/dev/md0 /labraid ext4 defaults 0 0' | sudo tee -a /etc/fstab

Você pode verificar se ambas as linhas foram adicionadas corretamente visualizando as duas últimas linhas do arquivo /etc/fstab.

tail -n 2 /etc/fstab

Você deve ver as duas linhas que acabou de adicionar:

/dev/labvg/lablvm /lablvm ext4 defaults 0 0
/dev/md0 /labraid ext4 defaults 0 0

Para testar se suas entradas no /etc/fstab estão corretas sem reiniciar, você pode desmontar os sistemas de arquivos e usar o comando mount -a, que monta todos os sistemas de arquivos listados no /etc/fstab.

Primeiro, desmonte ambos os volumes:

sudo umount /lablvm
sudo umount /labraid

Agora, execute mount -a para que o sistema leia o /etc/fstab e monte tudo.

sudo mount -a

Finalmente, verifique se eles estão montados novamente usando df -h.

df -h /lablvm /labraid

A saída deve mostrar ambos os sistemas de arquivos montados, exatamente como estavam antes.

Filesystem                Size  Used Avail Use% Mounted on
/dev/mapper/labvg-lablvm  392M  2.7M  369M   1% /lablvm
/dev/md0                  249M  2.6M  234M   2% /labraid

Parabéns! Você configurou seu sistema com sucesso para remontar automaticamente seu array RAID e montar seus sistemas de arquivos LVM e RAID na inicialização.

Resumo

Neste laboratório, você aprendeu os fundamentos do gerenciamento avançado de armazenamento no Linux usando LVM e RAID via software. Você começou simulando discos físicos com truncate e losetup, e depois prosseguiu para inicializá-los como Volumes Físicos (PVs) do LVM com pvcreate. Esses PVs foram então agregados em um Grupo de Volumes (VG) usando vgcreate. A partir desse pool de armazenamento, você criou um Volume Lógico (LV) flexível com lvcreate, formatou-o com um sistema de arquivos ext4 usando mkfs e o montou no sistema. Um recurso fundamental do LVM foi demonstrado ao redimensionar dinamicamente o LV com lvresize e expandir o sistema de arquivos para utilizar o novo espaço com resize2fs.

Além disso, você configurou um array RAID 1 (espelhamento) via software usando o utilitário mdadm para fornecer redundância de dados. Após construir o array a partir de dois discos simulados, você o formatou e montou de forma semelhante ao volume LVM. O laboratório foi concluído garantindo a persistência dessas configurações após as reinicializações. Isso foi alcançado adicionando os pontos de montagem tanto para o volume LVM quanto para o array RAID ao arquivo /etc/fstab, e salvando os detalhes de configuração do array RAID em /etc/mdadm/mdadm.conf.