Proxmox-opprydding: local-lvm fra 80 til 56 prosent

En full local-lvm tar ned hele Proxmox-verten: gjestene fryser og backup feiler. Utnyttelsen lå rundt 80 prosent og steg jevnt. Det var tre årsaker, og tre tiltak tok den ned til 56 prosent.

Tre årsaker

Diagram over de tre årsakene til at local-lvm fylles opp: ubrukte containere, ugjenvunnet thin-provisionert plass og journald-logger uten tak
  • Gamle testcontainere (LXC) som aldri ble slettet, satt fortsatt på thin-volumene sine.
  • Når en gjest sletter filer, sendes ikke blokkene automatisk tilbake til thin-poolen. Poolen regner plassen som brukt.
  • Journald-loggen hadde ikke noe tak og vokste til flere gigabyte.

Den andre årsaken er vanskeligst å finne. Filene er slettet inne i gjesten, men poolen ser blokkene som allokert, så det finnes ingen store filer å slette. Plassen må trimmes tilbake.

Fiks 1: slett containere som ikke brukes

List containerne og hvor mye hvert volum bruker, og fjern dem som ikke har noen oppgave lenger:

Flytdiagram av TRIM: gjest sletter filer, discard sender blokkene tilbake, fstrim frigjør plass i thin-poolen

pct list
lvs -o lv_name,data_percent,lv_size

# fjern en container du er sikker på
pct destroy <CTID> --purge
Fiks 2: slå på discard og kjør fstrimTRIM virker bare hvis diskene i gjestene har discard aktivert. Sett det på hvert volum, og kjør fstrim for å levere de frie blokkene tilbake til poolen.

# aktiver discard på en disk (LXC eller VM)
pct set <CTID> -rootfs volume=local-lvm:vm-<CTID>-disk-0,discard=1

# trim alle monterte filsystemer nå
fstrim -av
Dette steget ga mest. Når fstrim er ferdig, faller data_percent på poolen med en gang, uten at noen filer er slettet.

Fiks 3: tak på journald

Sett et fast tak på systemloggen i journald.conf:

# /etc/systemd/journald.conf
[Journal]
SystemMaxUse=500Msystemctl restart systemd-journald
journalctl --disk-usage
Ukentlig trimÉn trim holder ikke. Plassen lekker tilbake så lenge gjestene sletter filer. fstrim.timer kjører trimmen ukentlig:

systemctl enable --now fstrim.timer
systemctl list-timers fstrim.timer
ResultatUtnyttelsen gikk fra rundt 80 til 56 prosent. Ingen containere i bruk ble rørt, og ingen data forsvant. Det meste av gevinsten kom fra trimmingen.

Slå på discard fra første dag og la timeren gå, så trenger poolen ikke ryddes for hånd.