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".
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.
Com a partição criada (/dev/sda4), deve-se definir seu tipo como LVM ainda no cfdisk, conforme telas a seguir:
Por fim, aplicar as configurações em "Write", confirmar as mudanças com "yes" e sair do cfdisk em "Quit".
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.