[SOLVED] Stats from last Garbage Collection

CH.illig

Renowned Member
Feb 20, 2016
73
10
73
33
Switzerland
it-statistik.ch
Ich biete als Zentralen Backup Server diesen Meinen Kunden an die ebenfalls auf Proxmox setzen.
Zur Abrechnung verrechne ich den Kunden Jeweils die aktuelle Nutzung.

Es wäre daher für mich sehr hilfreich wenn in der Datastore Übersicht nicht nur der Duplikate Faktor, sondern auch der aktuelle Disk Usage angezeigt werden könnte.
Der Datastore liegt lokal im selben ZFS, daher ist der Usage Global über alle Datastores.

1644482594220.png

Aktuell hohle ich mir diese Information via letztem Garbage Collect wo auch die 13.61 herkommt.
1644482576100.png
 
  • Like
Reactions: itNGO
Wäre es nicht einfacher jedem Kunden dann einen eigenen Datastore anzulegen? Ist dann nicht ganz so gut deduplizierbar, aber wenigstens hättest du alle Kundendaten getrennt und könntest schnell sehen, wieviel Kapazität jeder Kunde wirklich verbraucht.
 
Wäre es nicht einfacher jedem Kunden dann einen eigenen Datastore anzulegen? Ist dann nicht ganz so gut deduplizierbar, aber wenigstens hättest du alle Kundendaten getrennt und könntest schnell sehen, wieviel Kapazität jeder Kunde wirklich verbraucht.
Jeder Kunde hat einen eigenen Datastore allerdings im selben ZFS

Der Datastore liegt lokal im selben ZFS, daher ist der Usage Global über alle Datastores.

Hier 2 Stores als Beispiel...
1644483516899.png 1644483530346.png

ich weiss, im Nachhinein wäre eine Lösung mit selbst erweiternden ZFS pro Kunde was aber auch andere Nachteile mit sich bringt...
 
entweder wie @Dunuin vermutlich gemeint hat pro datastore ein dataset anlegen (und ne refquota setzen) - dann wird die usage aktuell richtig angezeigt. sonst enthaelt die API response ohnehin den rest der daten (wenn das 'verbose' flag gesetzt ist):

Code:
{
    "data": {
        "avail": 311202807808,
        "counts": {
            "ct": {
                "groups": 3,
                "snapshots": 25
            },
            "host": null,
            "other": null,
            "vm": {
                "groups": 6,
                "snapshots": 10
            }
        },
        "gc-status": {
            "disk-bytes": 3225894163,
            "disk-chunks": 831,
            "index-data-bytes": 135291504208,
            "index-file-count": 252,
            "pending-bytes": 0,
            "pending-chunks": 0,
            "removed-bad": 0,
            "removed-bytes": 0,
            "removed-chunks": 0,
            "still-bad": 0,
            "upid": "UPID:host:0033B7F1:140BDEA3:00000096:60619906:garbage_collection:store:user@pam:"
        },
        "total": 355215867904,
        "used": 44013060096
    }
}

bzw der gc-status teil ist auch via proxmox-backup-manager verfuegbar:

Code:
proxmox-backup-manager garbage-collection status DATASTORE --output-format json-pretty
{
  "disk-bytes": 12731110663,
  "disk-chunks": 13431,
  "index-data-bytes": 382366028608,
  "index-file-count": 298,
  "pending-bytes": 0,
  "pending-chunks": 0,
  "removed-bad": 0,
  "removed-bytes": 0,
  "removed-chunks": 0,
  "still-bad": 0,
  "upid": "UPID:host:002B7744:1DEFD243:00000000:6076EBE3:garbage_collection:store:user@pam:"
}

auf der GUI standardmaessig die ganzen daten anzuzeigen ohne den kontext dass es sich dabei um einen potenziell sehr veralteten status handelt ist ein bisschen problematisch, deswegen haben wir derzeit "nur" den dedup-faktor drin.
 
  • Like
Reactions: CH.illig and Dunuin
ueber das upid feld laesst sich dann auch der komplette log des tasks bzw. die status infos (z.b. start/end zeitpunkt) auslesen (proxmox-backup-manager task ...)
 
Danke,
zur kurzen Bestätigung... oder als "Anleitung"

Ausgangslage
Bash:
root@srv:~# zfs list
NAME               USED  AVAIL     REFER  MOUNTPOINT
rpool             5.09T  19.3T      162K  /rpool
rpool/ROOT        5.09T  19.3T      162K  /rpool/ROOT
rpool/ROOT/pbs-1  5.09T  19.3T     5.09T  /

root@srv:~# zfs create rpool/backup-kunde

root@svdrz220:/# zfs set quota=1T rpool/backup-kunde

und dann einen neuen Datastore erstellen in
/rpool/backup-kunde

Endresultat
1644484822558.png


Danke
 
Last edited:
genau. die quota ist prinzipiell optional - verhindert aber dass der verfuegbare speicherplatz fluktiert je nachdem wieviel global verbraucht/frei ist, und hat den angenehmen nebeneffekt das user nicht ueber ein definiertes "ziel" hinausschiessen koennen ;)
 
  • Like
Reactions: CH.illig
Danke,
zur kurzen Bestätigung... oder als "Anleitung"

Ausgangslage
Bash:
root@srv:~# zfs list
NAME               USED  AVAIL     REFER  MOUNTPOINT
rpool             5.09T  19.3T      162K  /rpool
rpool/ROOT        5.09T  19.3T      162K  /rpool/ROOT
rpool/ROOT/pbs-1  5.09T  19.3T     5.09T  /

root@srv:~# zfs create rpool/backup-kunde

root@svdrz220:/# zfs set quota=1T rpool/backup-kunde

und dann einen neuen Datastore erstellen in
/rpool/backup-kunde

Endresultat
View attachment 34101


Danke
Wenn du das auf Spindeln machst ist irgendwo bei 1000 Snapshots pro Datastore allerdings Schluss.... bzw. die Backup-Ansicht in Proxmox geht dann auf Timeout.... Etwas hilft dann ein paar kleine SSDs mit Cache, Special und LOGs im ZFS-Pool hinzuzufügen. Streckt das Problem aber nur etwas.... Per Console Listen/Restoren geht dann aber weiterhin... ist wohl ein anderer Timeout als im Web....

Wenn alles auf SSDs, dann weitermachen.... Coole Sache!!! Mehr davon!
 
  • Like
Reactions: CH.illig
Bei mir habe ich ein ähnliches Konstrukt @home und @wörk laufen.
Mal anhand meines privaten PBS demonstriert:
1644783353378.png
Es gibt das ZFS dataset rpool/datastore.
Dort habe ich eine Quota gesetzt um sicherzustellen, dass nicht eines Tages der Pool überschwappt, 20% Buffer für ZFS & OS.
Außerdem diverse Konfiguration, recordsize = 4M, compression = zstd, mountpoint = /datastore.

Die 4M recordsize hielt ich für eine gute Idee, da PBS ohnehin mit 4MB Blöcken agiert und größere Recordsizes zu weniger Metadaten führen, d.h. weniger RAM Einbußen, wenn man L2ARC verwendet und weniger Platzverbrauch auf den Special Devices. Bislang habe ich das auch nicht bereut.

Die Compression scheint sich trotz aller Bemühungen von PBS dennoch auszuzahlen.
1644783524815.png
1.22x mag nicht jeden beeindrucken, aber ich denke mir da "hey, it's free real estate!"

Die darunterliegenden Datasets, bspw fsn-pve-01 erben sämtliche Einstellungen von rpool/datastore, dort setze ich lediglich eine Quota, falls ich das möchte.
1644783708563.png
Privat ist das ganze ein wenig laxer geregelt mit den Quotas, auch um erstmal den Bedarf festzustellen.
Hier würde man natürlich für jeden Kunden immer eine Quota setzen, je nach bestellter Speichermenge.

Durch die Quota, passen sich auch die Werte in der Weboberfläche (und dementsprechend in den API Responses) entsprechend an - sieht man hier sehr schön am fsn-pmg-01 datastore, den ich auf 1G limitiert habe.
Als Kontrast dazu hat der fsn-pve-01 datastore keine Quota gesetzt, deshalb greifen die 3T Quota von rpool/datastore als oberes Limit.
1644783827989.png


Wenn du das auf Spindeln machst ist irgendwo bei 1000 Snapshots pro Datastore allerdings Schluss.... bzw. die Backup-Ansicht in Proxmox geht dann auf Timeout....
Bislang bleibt mir das noch erspart, aber man merkt wie es mit wachsender Zahl an Backups degradiert...

@wörk nutze ich Special Devices mit Erfolg, allerdings denke ich mir oft, es wäre noch hilfreicher wenn die kleinen Index Files auch auf SSD liegen würden und wirklich nur der Inhalt des .chunks Ordners auf den Spindeln.
Dafür habe ich leider noch keinen gangbaren Weg entdeckt.
special_small_blocks wäre vielleicht eine Idee, um die kleinen Index Files mit auf die Special Devices zu verlagern. (?)
Besonders bei den GC Jobs dauert es idR am längsten die Index Files zu markieren. Das tatsächliche durchrattern durch die Metadaten geht zack-zack dank NVMe Special Devices.

Hat ja schon mal jemand experimentiert in die Richtung? Bringt es in der Praxis nennenswerte Vorteile die Index Files auszulagern?
 
Last edited:
  • Like
Reactions: CH.illig

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!