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:
- Ir até a VM no console do Proxmox -> Hardware -> Dois cliques no disco -> Marca o Discard.
- 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 coffee