Diretoria de Gestão de Tecnologia da Informação (DGTI)

4. Definição do storage local

Início da configuração do Storage para as Máquinas Virtuais. O GlusterFS será configurado em cima de uma partição LVM. Essa partição utilizará parte do espaço em disco não alocado na instalação do Proxmox, que teve só 60GB alocado para o sistema. Os passos seguintes devem ser executados em todos os hosts do Cluster Proxmox através do shell de cada host.

Para o particionamento em si deve executado o comando seguinte: 

cfdisk

Selecionar o espaço livre e criar uma nova partição em "New".

proxmox_lvm1.png

Deve-se definir o tamanho da partição. No exemplo foi definido 2TB de um espaço disponível de 2.4TB. O objetivo disso é deixar um espaço livre para uso futuro, como aumentar a partição / (barra) do sistema caso ela fique cheia com o tempo, por exemplo. Esse espaço pode até ser utilizado para aumentar a própria partição do storage local caso seja necessário no futuro. O Campus pode definir a quantidade desse espaço de acordo com o armazenamento que estiver disponível.

proxmox_lvm2.png

Com a partição criada (/dev/sda4), deve-se definir seu tipo como LVM ainda no cfdisk, conforme telas a seguir:

proxmox_lvm3.png

proxmox_lvm4.png

Por fim, aplicar as configurações  em "Write", confirmar as mudanças com "yes" e sair do cfdisk em "Quit".

proxmox_lvm5.png

Com a partição definida, deve-se formatar ela em uma estrutura LVM do tipo Thin, começando com a criação do disco físico no LVM com o comando:

pvcreate /dev/sda4

Com o disco físico criado,  deve-se criar também o Volume Group (de nome "gfs") e adicionar o Physical Disk (/dev/sda4) ao grupo:

vgcreate gfs /dev/sda4

Os comandos a seguir criam um Volume Lógico do tipo Thin, que é recomendado pela documentação do GlusterFS (o serviço de storage a ser utilizado para o armazenamento das VMs). O primeiro comando cria um Logical Volume de nome "vmstg" com 1GB utilizando o Volume Group criado no comando anterior. O segundo converte o Logical Volume criado para o tipo Thin. O terceiro cria de fato o Logical Volume com 100% do espaço livre do Volume Group "gfs" que contém o Physical Disk /dev/sda4 (os 2TB particionados anteriormente).

lvcreate -L 1GB -n vmstg gfs
lvconvert --type thin-pool gfs/vmstg
lvextend -l 100%FREE gfs/vmstg

Para verificar se tudo ocorreu com sucesso utilizar o comando seguinte:

lvscan

Mostrará o seguinte:

...
ACTIVE '/dev/gfs/vmstg' [<2.00 TiB] inherit
...

Com a partição definida e configurada como LVM, ela deve ser formatada e montada para uso. Para a formação, o comando seguinte deve ser executado:

mkfs.xfs /dev/mapper/gfs-vmstg

Deve-se criar um ponto de montagem para a partição:

mkdir -p /mnt/lv/vmstg

Testar a montagem da partição utilizando a pasta criada como ponto de montagem:

mount -t xfs /dev/mapper/gfs-vmstg /mnt/lv/vmstg

Para verificar se deu certo executar o comando seguinte:

df -h

Mostrará o seguinte resultado:

...
/dev/mapper/gfs-vmstg  2.0T   15G  2.0T   1% /mnt/lv/vmstg

Com o teste da montagem realizado com sucesso, deve-se desmontar a partição com o comando:

umount /mnt/lv/vmstg

Com a montagem da partição testada, é necessário configurar a montagem no boot do sistema, pois ela não será montada automaticamente caso o servidor seja reiniciado. O comando a seguir cria o arquivo responsável pela montagem e disponibiliza-o para edição (pode ser utilizado tanto o vim quando o nano):

vim /etc/systemd/system/vmstg.service

Deve inserir o seguinte conteúdo e salvar em seguida:

[Unit]
Description=Montagem da partição LVM vmstg

[Service]
Type=simple
RemainAfterExit=yes
ExecStart=/etc/init.d/vmstg.sh start
ExecStop=/etc/init.d/vmstg.sh stop
ExecReload=/etc/init.d/vmstg.sh restart

[Install]
WantedBy=multi-user.target

Em seguida deve-se carregar o serviço de montagem criado pelo arquivo anterior no serviço Systemd com o comando:

systemctl daemon-reload

É necessário ainda criar o script que fará a montagem em si (o arquivo /etc/init.d/vmstg.sh utilizado dentro do arquivo anterior). Para isso, deve executar:

vim /etc/init.d/vmstg.sh

E inserir o seguinte conteúdo:

#!/bin/bash

case "$1" in
start)
   mount -t xfs /dev/mapper/gfs-vmstg /mnt/lv/vmstg
   ;;
stop)
   umount /mnt/lv/vmstg
   ;;
restart)
   $0 stop
   $0 start
   ;;
status)
   ;;
*)
   echo "Usage: $0 {start|stop|status|restart}"
esac

exit 0

Como o arquivo trata-se de um script, ele deve ter permissões de execução, atribuídas pelo seguinte comando:

chmod +x /etc/init.d/vmstg.sh

Agora deve-se habilitar a montagem em si no boot do sistema:

systemctl enable vmstg.service

Iniciar o serviço de montagem e verificar seu status:

systemctl start vmstg.service
systemctl status vmstg.service

Deve mostrar o seguinte resultado (active):

vmstg.service - Montagem da partição LVM vmstg
     Loaded: loaded (/etc/systemd/system/vmstg.service; enabled; vendor preset: enabled)
     Active: active (exited) since Thu 2022-12-22 17:41:13 -03; 10min ago
    Process: 1401 ExecStart=/etc/init.d/vmstg.sh start (code=exited, status=0/SUCCESS)
   Main PID: 1401 (code=exited, status=0/SUCCESS)
        CPU: 20ms

Para verificar a partição montada deve-se executar o seguinte comando:

df -h

Mostrará o seguinte resultado:

...
/dev/mapper/gfs-vmstg  2.0T   15G  2.0T   1% /mnt/lv/vmstg

Configuração do particionamento finalizada. É interessante reiniciar o servidor e testar se a montagem ocorreu com sucesso automaticamente no boot do sistema, utilizando os 3 comandos anteriores.