Prevenir falta de espaço no Proxmox

O Proxmox utiliza volumes LVM do tipo thin-provisioning para os discos das VM’s e LXC’s, ou seja, os blocos são alocados à medida que são escritos. Pegando num exemplo prático, ao criar a VM do HA, a imagem já vem pré-definida com um disco de 32 GB.

Com o passar do tempo vão notar que os 32 GB foram ocupados mas não entendem o porquê pois se forem contabilizar o espaço real utilizado, esse mesmo espaço não chega a esse valor.

Selection_411
Nesta imagem podemos ver que temos apenas 10.9 GB de dados.


Mas o espaço utilizado em disco é de 31.1 GB (97.12% de 32 GB).

O que está a ocupar o espaço?

Tal como referi, os blocos são alocados à medida que há escritas em disco mas os mesmos não são libertados quando se apaga ficheiros. O Linux tem um serviço que vem activo por defeito que se encarrega de libertar esses blocos de semana a semana:


Mas para isto surtir efeito é necessário activar a opção “discard” no disco da VM:
Selection_417

Deste modo os blocos não utilizados serão libertados a cada semana. Este método aplica-se de igual forma para qualquer outra VM Linux ou LXC que tenham a correr.

Tendo um número mais substancial de VM’s e LXC’s a correr, executar o trim uma vez por semana pode ser pouco, especialmente se tiverem overbooking de disco onde há risco de haver paragem por falta de espaço. Desta forma e para prevenir que isso aconteça inesperadamente, escrevi um script que poderá ser colocado na crontab do servidor do proxmox de modo a ser executado todas as noites e forçar o trim.

Selection_418

Correndo em mondo interactivo terão o seguinte:


Neste caso fiz apenas à VM do HA.

E o resultado foi este:


O espaço utilizado foi drasticamente reduzido.

Para que o script funcione, além da flag de discard nos discos das VM’s em causa, é também necessário activar o qemu-agent nas VM’s, pois este agente será responsável por executar os comandos de trim dentro das VM’s e LXC’s através do hypervisor:


Na VM do HA já vem instalado por defeito, basta activar a opção mas noutras VM’s poderá ser necessário instalar o pacote manualmente.

E finalmente poderão colocar o script a ser executado automaticamente pelo crontab da seguinte forma:
Selection_421
Deste modo, o script será executado todos os dias à 1:00 para todas as VM’s e LXC’s que estejam a correr.

Download do script

Usem mas não abusem do overbooking :wink:

9 Curtiram

Tutorial muito interessante.

O mesmo nasce de uma necessidade de esclarecimento, com base num tema que temos vindo a abordar várias vezes no canal de voz do discord e resultado de vários testes com sucesso. Da minha parte é com grande satisfação que agora vejo o mesmo passar para o formato de tutorial e conhecimento geral da comunidade. Garantidamente, será muito útil e pode vir a esclarecer muitas dúvidas aos restantes membros.

Obrigado pela partilha.

1 Curtiu

Copyright © 2017-2021. Todos os direitos reservados
CPHA.pt - info@cpha.pt


FAQ | Termos de Serviço/Regras | Política de Privacidade