SSD Speicherbelegung Proxmox Backup

Hallo gemeinde,
ich habe ein seltsames Phänomen, wenn ich in HA im / ein “du -h | sort -h” abfrage, bekomme ich dies als Antwort:
319.6M ./usr
….
481.3M ./var
1.4G ./homeassistant
1.8G ./backup
4.0G .

Wenn ich nun ein Backup in Proxmox VM mit angehalterner VM durchführe, ist dieses Backup in der Zwischenzeit bei 13.59GB.
06.09. 6.69GB
13.09. 10.32GB
20.09. 12.96GB
Der Speicherverbrauch wächst wöchentlich.
Die Sicherung am 06.09. war nach einer Neuinstallation genau aus diesem Grund mit anschließendem Restore der Daten.
Wo kommt der Platten/SSD-Speicherverbrauch her und viel wichtiger, wie kann ich diesen wieder reduzieren?
Mir erschließt sich überhaupt nicht, wo die 9,9GB für das System herkommen.

Home Assistant Supervisor is running!
System information:
OS Version: Home Assistant OS 18.3
Home Assistant Core: 2026.9.3

Das hast vermutlich im HA-Terminal gemacht - das zeigt der dir nur die Größe des Docker-Containers von HA an aber nicht des kompletten HAOS darunter.
Du musst erst auf die OS-Ebene wechseln aus dem Docker-Container raus, frag mich aber nicht wie das bei HA geht

Mein System ist nicht kleiner und mir ist (bisher) nicht aufgefallen, dass es wachsen würde:

Hat Simon mal gezeigt: Home Assistant SSH Port 22222 (Root Zugriff HA OS) einrichten

HAOS hat ein A/B Boot Mechanismus wie z.B. auch Android Geräte bei einem HAOS Update wird also nicht das aktuell laufende OS überschrieben damit man selbst bei einem Fehlerhaften HAOS update noch ein Lauffähiges system hat.
Ich weiß jetzt nicht ob es von Anfang an A und B gibt oder ob es das erst ab dem ersten HAOS update gibt, was den anstieg im Speicherplatz erklären würde.
Hier mal ein Screenshot vom Boot von meiner HA VM:

LG

Am Ende war es eine Einstellung in Proxmox und in der VM

  1. Proxmox → VM → Hardware → Festplatte → Bearbeiten → Erweitert: Discard aktivieren (zusätzlich „SSD-Emulation“ ist sinnvoll).
  2. fstrim -av

Hier der Auszug aus meiner Kommunikation mit Claude:

Hier greifen zwei getrennte Effekte ineinander. Deshalb passen die Zahlen nicht zusammen.

1. Warum dein du nur 4 GB zeigt

Die SSH-Session läuft nicht auf dem eigentlichen Betriebssystem. Sie läuft in einem Add-on-Container. Du siehst dort nur das Container-Dateisystem und die eingehängten Ordner (/homeassistant, /backup, /share usw.). Der größte Teil der Datenpartition ist von dort aus unsichtbar:

  • Docker-Images und -Layer von Core, Supervisor, Plugins und Add-ons, inklusive alter Versionen nach Updates

  • das Systemd-Journal (persistente Logs)

  • Supervisor-interne Daten

All das zählt HA in der Anzeige als „System“, also die 9,9 GB.

2. Warum das Proxmox-Backup jede Woche wächst

Das ist vermutlich der Hauptgrund, und er hat mit der Belegung innerhalb von HA wenig zu tun. Wenn HAOS eine Datei löscht, zum Beispiel das gestrige HA-Backup (dein /backup wurde heute um 00:01 geändert, es laufen also tägliche Backups), sind die Blöcke nur für das Dateisystem frei. Die virtuelle Disk in Proxmox erfährt davon nichts, solange kein TRIM/Discard durchgereicht wird. Neue Daten landen dann in noch unbenutzten Blöcken, und vzdump sichert alle jemals beschriebenen Blöcke mit. Das Image wächst so langsam Richtung 32 GB voll, obwohl nur 13 GB tatsächlich belegt sind.

Lösung:

  1. Proxmox → VM → Hardware → Festplatte → Bearbeiten → Erweitert: Discard aktivieren (zusätzlich „SSD-Emulation“ ist sinnvoll).

  2. Die VM komplett herunterfahren und neu starten. Ein Reboot aus HA heraus reicht nicht.

  3. Auf dem HAOS-Host (Zugang siehe unten) einmal trimmen:

   fstrim -av

Danach sollte das nächste Proxmox-Backup deutlich kleiner sein, ungefähr in der Größe der tatsächlich belegten Daten.

3. Zugang zum darunterliegenden HAOS

Am einfachsten über die Proxmox-Konsole: Öffne die VM-Konsole in Proxmox. Am Prompt ha > tippst du:

login

Damit hast du eine Root-Shell direkt auf dem HAOS-Host, ohne Passwort.

Alternativ gibt es SSH auf Port 22222 (Developer-Zugang). Dafür musst du einen authorized_keys-Key importieren, was in einer VM umständlicher ist. Für eine Analyse reicht die Konsole.

4. Analyse auf dem Host

df -h /mnt/data
du -xh -d1 /mnt/data | sort -h
du -xh -d1 /mnt/data/docker | sort -h
docker system df
docker image ls
journalctl --disk-usage

5. Aufräumen

Nicht mehr benutzte Docker-Images entfernen (Images laufender oder gestoppter Add-ons bleiben erhalten):

docker image prune -a

Journal begrenzen:

journalctl --vacuum-size=200M

Danach nochmal fstrim -av, damit der freigewordene Platz auch in Proxmox ankommt.

Noch ein Hinweis: Deine HA-internen Backups (1,8 GB in /backup) werden im Proxmox-Backup jedes Mal mitgesichert. Wenn du ohnehin per Proxmox sicherst, lohnt es sich, die Aufbewahrung der HA-Backups zu verkürzen oder sie auf ein Netzlaufwerk auszulagern (Einstellungen → System → Speicher → Netzwerkspeicher).

Wenn du mir die Ausgabe von du -xh -d1 /mnt/data und docker system df schickst, kann ich dir genau sagen, woraus die 9,9 GB bestehen.

Dass fstrim.service nach einem Reboot nicht läuft, ist normal. Es ist ein Oneshot-Dienst: Er startet, trimmt einmal und beendet sich. Er soll gar nicht dauerhaft laufen. Automatisch ausgelöst wird er über fstrim.timer.

Den Timer prüfst du auf dem HAOS-Host so:

systemctl status fstrim.timer
systemctl list-timers | grep fstrim

Ein systemctl enable bringt auf HAOS leider meist nichts. Das Root-Dateisystem ist schreibgeschützt, und Änderungen unter /etc/systemd/system überleben ein Reboot oder OS-Update in der Regel nicht.

Die dauerhafte Lösung: Trim von Proxmox aus anstoßen

HAOS bringt den QEMU Guest Agent mit. Darüber kann Proxmox den Trim im Gast auslösen, unabhängig von HAOS-Updates.

Proxmox → VM → Optionen → QEMU Guest Agent aktivieren. Setze dort auch den Haken bei „Run guest-trim after a disk move or VM migration“.
Die VM einmal komplett stoppen und wieder starten.
Auf dem Proxmox-Host testen (ersetze 100 durch deine VM-ID):
qm guest cmd 100 fstrim

Die Ausgabe zeigt die getrimmten Bytes pro Dateisystem.
4. Als Cronjob auf dem Proxmox-Host einrichten mit crontab -e:

0 2 * * 0 /usr/sbin/qm guest cmd 100 fstrim >/dev/null 2>&1

Das läuft jeden Sonntag um 2:00 Uhr. Leg die Zeit am besten kurz vor dein wöchentliches Proxmox-Backup, dann ist das Backup immer „schlank“.

Wenn du es ganz eng an das Backup koppeln willst, geht das auch über ein vzdump-Hookscript in der Phase backup-start. Für deinen wöchentlichen Rhythmus reicht der Cronjob aber völlig.

Hast du die HA.VM selber/manuell erstellt?
Ich habe die die Community-Scripts verwendet. Da sind Discard und SSD-Emulation bereits aktiviert.

Ja, habe ich händisch erstellt. Die Scripte auf der von dir verlinkten Seite sind nur für Container, ich gabe aber bewusst eine VM erstellt.

Die beiden Parameter kannte ich nicht, habe ich auch in sonst keiner VM gesetzt.

Dort gibt es auch VM’s unter anderem auch eine HA VM:

Nö.