local-lvm wird voll

lethuer

New Member
Apr 18, 2024
8
0
1
Hi !

Ich bin proxmox Anfänger aber habe HomeAssistant als VM und 2 Container laufen.
Nun wird bei mir "local-lvm" voll...
Wenn ich es richtig verstehe liegen auf "local" nur Images, Templates etc. und auf "local-lvm" eben die Daten der Container und VMs ?

Komischerweise geht der genutzte Speicher nicht runter wenn ich alte Backups in HomeAssistant lösche.
in HomeAssistant dazu: Einstellungen -> System -> Backups
Nicht genutzte Add-Ons habe ich ebenfalls gelöscht.
Ich wüsste auch nicht wie ich sonst Speicher frei machen könnte...
Gibt es eine Möglichkeit herauszufinden ob es noch irgendwelche Altlasten auf "data" gibt ?

Ansonsten fällt mir nur noch ein, die Platte zu tauschen ?!
Wie würde ich hier am geschicktesten Vorgehen ?
neue Platte einbauen, Proxmox installieren und dann die zuvpr gemachten Backups (die auf einer externen Platte liegen) wieder einspielen ?
Danach dann die Settings in Proxmox manuell selber wieder machen (Backup Regeln, Zigbee Stick etc.)
Oder gibt es eine Möglichkeit mit dem gesamten Host umzuziehen ?

1713476096798.png
1713476108972.png

Code:
root@proxmox:~# lvs
  LV            VG  Attr       LSize   Pool Origin Data%  Meta%  Move Log Cpy%Sync Convert
  data          pve twi-aotz-- <80.24g             81.63  3.67                           
  root          pve -wi-ao----  29.50g                                                   
  swap          pve -wi-ao----   7.00g                                                   
  vm-100-disk-0 pve Vwi-aotz--  48.00g data        20.73                                 
  vm-101-disk-0 pve Vwi-aotz--  48.00g data        6.09                                   
  vm-135-disk-0 pve Vwi-aotz--   4.00m data        14.06                                 
  vm-135-disk-1 pve Vwi-aotz-- 128.00g data        41.12                                 
root@proxmox:~# pvs
  PV         VG  Fmt  Attr PSize    PFree
  /dev/sda3  pve lvm2 a--  <118.74g    0
root@proxmox:~# vgs
  VG  #PV #LV #SN Attr   VSize    VFree
  pve   1   7   0 wz--n- <118.74g    0


Ich hatte zuvor zum Glück noch ein paar GB nicht zuwiesenen Speicher und habe nun den kompletten Rest "data" zugewiesen.
Dabei hatte ich diese Warning erhalten:
Code:
WARNING: You have not turned on protection against thin pools running out of space.
WARNING: Set activation/thin_pool_autoextend_threshold below 100 to trigger automatic extension of thin pools before they get full.
Die Threshold-Settings habe ich hier gefunden: /etc/lvm/lvm.conf
und hier jetzt das hier eingestellt:
thin_pool_autoextend_threshold = 70
thin_pool_autoxtend_percent = 20

Verstehe ich es richtig, dass mit diesem Setting die VM bzw. Container ihre Größe selbstständig erhöhen können wenn sie voll laufen ?
Aber eben max. bis zu dem Platz der in "LVM Thin" so zur reserviert wurde ?

1713478180069.png
 
Wenn ich es richtig verstehe liegen auf "local" nur Images, Templates etc. und auf "local-lvm" eben die Daten der Container und VMs ?
Genau.

Komischerweise geht der genutzte Speicher nicht runter wenn ich alte Backups in HomeAssistant lösche.
Du musst dafür für die virtuelle Disk der VM auch die "Discard" Checkbox angekreuzt haben sowie ein Protokoll wie virtio SCSI gewählt haben was TRIM Befehle unterstützt, damit ein GastOS über discard/fstrim auch wieder Speicherplatz freigeben kann. Dafür musst du dann das GastOS aber auch noch so einstellen, dass es eben Dateisysteme wie ext4/xfs mit der "discard" Option mountet oder du musst ein "fstrim -a" regelmäßig (z.B. über cron) laufen lassen.

neue Platte einbauen, Proxmox installieren und dann die zuvpr gemachten Backups (die auf einer externen Platte liegen) wieder einspielen ?
Ja.
Oder gibt es eine Möglichkeit mit dem gesamten Host umzuziehen ?
Keine offizielle.
Optionen:
A.) Alles von Grund auf neu einrichten
B.) Festplatte klonen, dann manuell über die CLI mit viel Knowhow die Partitionen, Dateisysteme, VGs, LVs, ... vergrößern.
C.) Alles aus dem "/etc" und "/var/lib/vz" Ordnern sichern und dann Datei für Datei durchgehen, gucken was du übernehmen willst und die dann drüberkopieren
D.) Netzwerk und Vzdump Config-Dateien kopieren, config.db sichern, neuen PVE installieren mit gleichen Hostnamen und dann die config.db zurückspielen: https://pve.proxmox.com/wiki/Proxmox_Cluster_File_System_(pmxcfs)
E.) eines der vielen Third-Party Host-Backup-Skripte von Github nehmen

Verstehe ich es richtig, dass mit diesem Setting die VM bzw. Container ihre Größe selbstständig erhöhen können wenn sie voll laufen ?
So wie ich das verstanden habe vergrößert LVM dann selbst den Thin Pool, nicht die virtuellen disks auf diesem...vorausgesetzt natürlich deine VG hat noch Platz unzugewiesen...
 
Die schnellste und unkomplizierteste Methode ist, deine VMs per Backup zu sichern, die größere Festplatte einbauen und das Backup auf die neue Platte zurück zu sichern.
Proxmox auf die neue Platte neu aufsetzten und die Backups zurückspielen wär auch ne Möglichkeit, dann müssen halt alle am System selbst eingestellten Sonderlocken neu gemacht werden.
Ich selbst habe mir vor kurzen erst einen neuen Proxmox Server neu aufgesetzt, alle Backups zurück gespielt, Einstellung gemacht und nach 2h war das neue System am Start.

Der Vorteil, wenn du die Platte tauschst und alles auf eine neue Platte installierst ist, das du quasi ein komplett Backup (lauffähiges System) von deinem Server in der Hinterhand hast
 
Wow erstmal danke für die mega schnellen Antworten !

Du musst dafür für die virtuelle Disk der VM auch die "Discard" Checkbox angekreuzt haben sowie ein Protokoll wie virtio SCSI gewählt haben was TRIM Befehle unterstützt, damit ein GastOS über discard/fstrim auch wieder Speicherplatz freigeben kann.
Die Checkbox konnte ich jetzt nur für die VM, nicht aber für container finden ? Das Protokoll ist ja bereits "virtio SCSI".

Dafür musst du dann das GastOS aber auch noch so einstellen, dass es eben Dateisysteme wie ext4/xfs mit der "discard" Option mountet oder du musst ein "fstrim -a" regelmäßig (z.B. über cron) laufen lassen.
Wo kann ich den cron job konfigurieren ? kannst du mich guiden was alles nötig ist um Speicher wieder freizugeben ?
wenn ich das manuell eingebe müsste doch auch schon speicher freigegeben werden ?

1713513270506.png


Die schnellste und unkomplizierteste Methode ist, deine VMs per Backup zu sichern, die größere Festplatte einbauen und das Backup auf die neue Platte zurück zu sichern.
Proxmox auf die neue Platte neu aufsetzten und die Backups zurückspielen wär auch ne Möglichkeit, dann müssen halt alle am System selbst eingestellten Sonderlocken neu gemacht werden.
Das kapier ich jetzt noch nicht richtig... gibt es die möglichkeit den proxmox server selber zu sichern ? ich kenne die backup möglichkeit nur für die einzelnen VMs / Container. also dachte ich ich müsste proxmox so oder so neu aufsetzen und könnte nur die VMs per backup wieder einspielen ?
Die einzige andere möglichkeit wäre eben klonen und nachher die partitionen vergrößern...
 
Last edited:
Ich habe noch diesen Artikel gefunden: https://www.bjoerns-techblog.de/2024/03/trim-in-proxmox-vms-nutzen/

Code:
root@proxmox:~# systemctl status fstrim.timer
● fstrim.timer - Discard unused blocks once a week
     Loaded: loaded (/lib/systemd/system/fstrim.timer; enabled; vendor preset: enabled)
     Active: active (waiting) since Thu 2024-04-18 22:03:58 CEST; 12h ago
    Trigger: Mon 2024-04-22 00:25:05 CEST; 2 days left
   Triggers: ● fstrim.service
       Docs: man:fstrim

Code:
root@proxmox:~# systemctl list-timers fstrim.timer
NEXT                         LEFT        LAST                         PASSED     UNIT         ACTIVATES
Mon 2024-04-22 00:25:05 CEST 2 days left Mon 2024-04-15 00:45:00 CEST 4 days ago fstrim.timer fstrim.service


1 timers listed.
Pass --all to see loaded but inactive timers, too.

Sehe ich das richtig, dass der trim Befehl eh 1x wöchentlich ausgeführt wird ?
Wenn ich in der shell von "proxmox" manuell "fstrim -a" eingebe passiert aber nichts weiter...
 
Last edited:
Die Checkbox konnte ich jetzt nur für die VM, nicht aber für container finden ? Das Protokoll ist ja bereits "virtio SCSI".
LXCs muss man über ein "pct fstrim DeineVMID" vom PVE Host aus trimmen.

Wo kann ich den cron job konfigurieren ?
Du editierst die /etc/crontab oder nutzt "crontab -e" über die CLI.

wenn ich das manuell eingebe müsste doch auch schon speicher freigegeben werden ?
"fstrim -av" in der VM. Sollte man aber halt stündlich/täglich/wöchentlich machen, je nachdem wieviel man schreib. Wirst du vergessen regenmäßig manuell zu tun, daher per cron oder ähnlich automatisieren.
Das kapier ich jetzt noch nicht richtig... gibt es die möglichkeit den proxmox server selber zu sichern ?
Neine offizielle. Entweder manuell machen oder dir ein Script suchen, was wer anderes dafür peogrammiert hat, der genervt war, dass es da nichts offizielles gibt.

Sehe ich das richtig, dass der trim Befehl eh 1x wöchentlich ausgeführt wird ?
Wenn ich in der shell von "proxmox" manuell "fstrim -a" eingebe passiert aber nichts weiter...
Den fstrim musst du aber innerhalb der VM laufen lassen, also von deinem HomeAssistant aus, wenn du die virtuelle Disk leeren willst.
 
Wow erstmal danke für die mega schnellen Antworten !


Die Checkbox konnte ich jetzt nur für die VM, nicht aber für container finden ? Das Protokoll ist ja bereits "virtio SCSI".


Wo kann ich den cron job konfigurieren ? kannst du mich guiden was alles nötig ist um Speicher wieder freizugeben ?
wenn ich das manuell eingebe müsste doch auch schon speicher freigegeben werden ?

View attachment 66590



Das kapier ich jetzt noch nicht richtig... gibt es die möglichkeit den proxmox server selber zu sichern ? ich kenne die backup möglichkeit nur für die einzelnen VMs / Container. also dachte ich ich müsste proxmox so oder so neu aufsetzen und könnte nur die VMs per backup wieder einspielen ?
Die einzige andere möglichkeit wäre eben klonen und nachher die partitionen vergrößern...

Du kannst die neue Festplatte ins System einbinden, ein Backup der VMs machen, die VM löschen und beim Zurücksichern die neue Festplatte als Ziel auswählen.
 
LXCs muss man über ein "pct fstrim DeineVMID" vom PVE Host aus trimmen.
Code:
root@proxmox:~# pct fstrim 100
/var/lib/lxc/100/rootfs/: 39.9 GiB (42803793920 bytes) trimmed

ein wenig warten.... und rund 2GB frei geworden:) :
1713535265990.png

Wäre das so korrekt automatisiert für die container ?
und wie würde das für VMs gehen ?
1713535698064.png


"fstrim -av" in der VM. Sollte man aber halt stündlich/täglich/wöchentlich machen, je nachdem wieviel man schreib. Wirst du vergessen regenmäßig manuell zu tun, daher per cron oder ähnlich automatisieren.
Sorry ich muss nochmal fragen... für die VM hab ich noch nicht manuell speicher feigeben können.
ich bin in die konsole der VM (Homeassistant) und habe hier das eingegeben:
1713536018394.png

Danach habe ich es direkt im Terminal vom HomeAssistant versucht, hier kommt das:
1713536096250.png
 
Last edited:

Attachments

  • 1713538073951.png
    1713538073951.png
    74.4 KB · Views: 3
Wäre das so korrekt automatisiert für die container ?
Besser in der cron mit absoluten Pfaden arbeiten anstatt nur "pct" anzugeben.
Außerdem aufpassen, dass sich der trim nicht mit einem Backup Job kreuzt, da der fstrim den LXC lockt und dann der Backup Task fehlschlagen würde.

und wie würde das für VMs gehen ?
Musst du wie gesagt von innerhalb der VM machen und ist daher je nach verwendetem GastOS anders.


Sorry ich muss nochmal fragen... für die VM hab ich noch nicht manuell speicher feigeben können.
ich bin in die konsole der VM (Homeassistant) und habe hier das eingegeben:
Das ist auch nur die Konsole von HomeAssistant, nicht die Konsole vom drunterliegenden Linux. An die kommst du nur ran, wenn das das eine Terminal SSH Plugin aus der Community Repo installierst und dort dann den unsicheren Modus freischaltest.
 
Last edited:
für die VM hab ich noch nicht manuell speicher feigeben können.
ich bin in die konsole der VM (Homeassistant) und habe hier das eingegeben:
Und hier war das problem anscheinend, dass ich "login" in der Konsole eingeben musste.

Danach bekomme ich das:

1713539487034.png

Außerdem führt HA anscheinend automatisch 1x die woche einen fstrim aus (auch ohne eigens erstellte automation). Ich hätte vielleicht auch nur bis montag warten müssen:
Code:
systemctl status fstrim.timer
1713539625309.png
 
Besser in der cron mit absoluten Pfaden arbeiten anstatt nur "pct" anzugeben.
wie gebe ich den fstrim befehl mit einem absoluten pfad an ?

Es müssten ja diese sein:
Code:
/var/lib/lxc/100/rootfs/
/var/lib/lxc/101/rootfs/


1713540925353.png
 

Attachments

  • 1713540794125.png
    1713540794125.png
    49.6 KB · Views: 0
wie gebe ich den fstrim befehl mit einem absoluten pfad an ?

Es müssten ja diese sein:
Code:
/var/lib/lxc/100/rootfs/
/var/lib/lxc/101/rootfs/


View attachment 66655
Nein, ich meine den absoluten pfad zum "pct" Programm. Den bekommt man über den "which" Befehl. Also z.B.:
Code:
root@Voyager:~# which pct
/usr/sbin/pct
Da würde man dann "/usr/sbin/pct fstrim 100" benutzen und nicht nur "pct fstrim 100".
 

About

The Proxmox community has been around for many years and offers help and support for Proxmox VE, Proxmox Backup Server, and Proxmox Mail Gateway.
We think our community is one of the best thanks to people like you!

Get your subscription!

The Proxmox team works very hard to make sure you are running the best software and getting stable updates and security enhancements, as well as quick enterprise support. Tens of thousands of happy customers have a Proxmox subscription. Get yours easily in our online shop.

Buy now!