Mateus Müller

O carinha do Linux

10 set. 2022

Storage local-lvm enchendo rapidamente no Proxmox

Recentemente meu cluster Kubernetes rodando dentro do Proxmox parou, e quando fui olhar na interface do Proxmox, o storage onde ficam armazenadas as VMs, chamado de local-lvm, estava batendo em 100%.

O estranho era que minhas VMs não utilizavam tanto assim o storage para topar tão rapidamente. Não conseguia entender o porque disso. Eu nem mesmo faço snapshots das VMs, então o que poderia estar ocupando espaço em disco?

O problema

Abaixo vou deixar um artigo completo que explica o problema, sugiro que você leia também:

Rodei o comando lvs no Proxmox para ver quanto cada VM estava consumindo.

root@proxmox:~# lvs
  LV                VG  Attr       LSize   Pool Origin Data%  Meta%  Move Log Cpy%Sync Convert
  base-9001-disk-0  pve Vri-a-tz-k <10.20g data        15.91                                  
  data              pve twi-aotz-- 194.99g             98.97  3.86                            
  root              pve -wi-ao----  15.00g                                                    
  swap              pve -wi-ao----   8.00g                                                    
  vm-301-cloudinit  pve Vwi-a-tz--   4.00m data        9.38                                   
  vm-301-disk-0     pve Vwi-a-tz--  80.00g data        51.81                                  
  vm-302-cloudinit  pve Vwi-a-tz--   4.00m data        9.38                                   
  vm-302-disk-0     pve Vwi-a-tz--  80.00g data        50.97                                  
  vm-303-cloudinit  pve Vwi-a-tz--   4.00m data        9.38                                   
  vm-303-disk-0     pve Vwi-a-tz--  80.00g data        83.69                                  
  vm-304-cloudinit  pve Vwi-a-tz--   4.00m data        9.38                                   
  vm-304-disk-0     pve Vwi-a-tz--  80.00g data        48.92                                  
  vm-9001-cloudinit pve Vwi-a-tz--   4.00m data        0.00

Vamos ver mais de perto a VM 303. Note que o disco vm-303-disk-0 reporta 83% de uso de 80GB. Isso seria algo perto de 65GB de utilização, certo?

Pois bem, acessei via SSH a VM e rodei um df -h para ver quanto a partição root estava consumindo.

ubuntu@k8s-worker-3:~$ df -h
Filesystem      Size  Used Avail Use% Mounted on
tmpfs           594M  1.8M  592M   1% /run
/dev/sda1        78G   31G   47G  40% /
tmpfs           2.9G     0  2.9G   0% /dev/shm
tmpfs           5.0M     0  5.0M   0% /run/lock
/dev/sda15      105M  5.3M  100M   5% /boot/efi
shm              64M     0   64M   0% /run/containerd/io.containerd.grpc.v1.cri/sandboxes/9bb60bc58977de57e6244f5649c1e31182a8b43a86973257ed18fb2eebb3c527/shm
shm              64M     0   64M   0% /run/containerd/io.containerd.grpc.v1.cri/sandboxes/6ac15fcdef528b471fa51ab1e843444d2b6236ef2fa15e21058ba443fd97dea3/shm
tmpfs           594M  4.0K  594M   1% /run/user/1000
shm              64M     0   64M   0% /run/containerd/io.containerd.grpc.v1.cri/sandboxes/fef958a29676364aea21cb039c12804482d1745fe0ca0050186ee13eb243f8f8/shm
shm              64M     0   64M   0% /run/containerd/io.containerd.grpc.v1.cri/sandboxes/4bc54b5ea9e666b8e02e1e7bc684202f6ad0ceb64f28726b689fe5d067f8ad96/shm

A partição /dev/sda1 está cosnumindo 31GB, menos da metade do que estava sendo reportado no Proxmox. Com isso aqui, eu concluí que a VM estava reportando (ou nem estava) o valor errado para o Proxmox.

Com isso, comecei a pesquisar e cheguei no artigo acima.

Isso acontece porque a VM não está com a funcionalidade de Discard habilitada no disco.

Então os procedimentos corretos seriam:

  1. Ir até a VM no console do Proxmox -> Hardware -> Dois cliques no disco -> Marca o Discard.
  2. Habilitar o “discard” no fstab da VM. Se não souber usar o fstab, veja esse vídeo.

Mas, para resolver isso logo, eu fiz o seguinte… Dei um SSH em todas as VMs e rodei o seguinte comando:

root@k8s-worker-3:/home/ubuntu# fstrim --fstab --verbose

/boot/efi: 99.1 MiB (103965696 bytes) trimmed on /dev/sda15
/: 51 GiB (54736691200 bytes) trimmed on /dev/sda1

Isso vai forçar a operação de TRIM na VM, que é basicamente “rever” os blocos do disco que não estão sendo mais utilizados, e reportar para o Proxmox. O resultado será instantâneo no Proxmox.

Posteriormente, você pode habilitar o fstrim para ser executado semanalmente com o timer.

sudo systemctl enable --now fstrim.timer

É isso pessoal, espero que ajude vocês a não quebrar a cabeça como eu quebrei rsrs.

Buy me a coffeeBuy me a coffee
Comentários Disqus