In normalen LVM Volumes werden Blöcke angelegt, sobald ein Volume erzeugt wird, es wir also sofort der komplette Platz belegt. LVM thin Pools belegen nur Blöcke, wenn auch wirklich Daten geschrieben werden. Wenn ihr nun Daten löscht, werden sie weiterhin Speicherplatz belegen. Abhilfe schafft hier Trim. Sobald ihr Daten löscht, und das Betriebssystem die Blöcke als unbenutzt markiert, wird der Kontroller dieses an euren Storage weiter reichen und das Disk Image verkleinern. Dadurch spart ihr euch Daten und Ressourcen. Ich teste das Ganze hier mit einer Debian 12 VM. Voraussetzung ist ein LVM Thin Pool oder ein ZFS Volume. Mit Ceph geht es auch, aber damit habe ich mich bisher noch nicht beschäftigt.
Alle Artikel dieser Serie:
- Teil 1: Proxmox installieren
- Teil 2: Eine Proxmox VM anlegen
- Teil 3: Migration einer virtuelle Machine von ESXi zu Proxmox
- Teil 4: Migration Windows VM von ESXi zu Proxmox
- Teil 5: Trim in Proxmox-VMs nutzen
- Teil 6: Proxmox Backup auf NFS-Laufwerk
- Teil 7: Proxmox Speicher erweitern
- Teil 8: Einen Proxmox Cluster erzeugen
- Teil 9: Einen Proxmox Metric Server anlegen
- Teil 10: Der Proxmox Backup Server
- Teil 11: Proxmox Notifications
- Proxmox Tipps Sammlung
Trim für die VM aktivieren
Seitens Proxmox muss auf der Hard Disk das „Discard“ Feature aktiviert werden. Eigentlich sollte das schon reichen, es kann aber nicht schaden die „SSD emulation“ zu aktivieren. Fahrt vorher eure VM herunter und startet sie danach, somit könnt ihr sicher sein, das die Einstellungen übernommen worden. Damit ihr Discard aktivieren könnt, muss euer Storage Thin Provisioning unterstützen. Dieses können ZFS, Ceph und LVM-thin.
Trim innerhalb der VM testen
Ich starte nun einen Trim durch den Befehl fstrim –fstab –verbose . Kurze Zeit später sehe ich dann auch die Auswirkungen auf meinem local-lvm Volume. Ich hab es insgesamt an drei VMs getestet und jedes mal wurde signifikant Speicherplatz freigegeben. Die drei VMs wurden frisch von einem ESXi migriert und TRIM innerhalb von Proxmox aktiviert.
Nun könnt ihr noch schauen, ob ein Timer für fstrim gesetzt ist, welcher wöchentlich den Trim ausführt. Mittel systemctl status fstriom.timer, könnt ihr euch den Status des Dienstes ansachauen und solltet sehen das ein wöchentlicher Timer gesetzt ist. Mittels systemctl list-timers fstrim.timer, könnt ihr euch diesen Timer ansehen und wann er wieder einen Trim ausführt.
Mehr ist es auch nicht. Eigentlich müsst ihr nur die Discard Option auf dem Disk setzten und der Rest sollte schon gegeben sein. Somit wird euer LVM Volume jedenfalls immer optimal ausgenutzt und ihr verschwendet keinen unnötigen Speicherplatz. Da mittlerweile fast jeder SSDs nutzt ist dieses also eine unbedingt zu empfehlende Einstellung.