Storage optimieren

floh8

Active Member
Jul 27, 2021
949
98
33
hallo forum und staff,

wenn ich eine Umgebung habe, wo ich ausschließlich VMs mit dem PBS sichere, wäre es dann nicht sinnvoll eine Blockgröße von 4MB für das Filesystem des Datastore zu konfigurieren, da ja die chunks alle 4 MB groß sind? Im Forum habe ich bereits einen Wert von 1 MB als Empfehlung gefunden.

Die Datastores sind ja bereits dedupliziert, ist es trotzdem sinnvoll, zusätzlich die Deduplizierung des Filesystems zu nutzen, um z.B. doppelte Blöcke Datastore-übergreifend zu eliminieren? Bringt das was oder stört da z.B. die Komprimierung?

Danke für Empfehlungen.
 
Ich nehme an, du sprichst von dem ZFS recordsize parameter? Das eigentliche Maximum für diese Option ist 1M, außer man aktiviert einen speziellen Parameter. Das ist allerdings als experimentell anzusehen und in der Praxis sollte 1M vollkommen ausreichen, um den gewünschten Effekt zu erzielen. Wenn du auch Backups auf Dateiebene machen willst, und nicht nur auf Blockebene, würde ich eher zu der Default recordsize raten.

Wenn da noch das OS zusätzlich drauf ist, ist es am besten man erstellt hier ein eigenes Dataset für die Backups und setzt die recordsize nur für das Backup-Dataset.

Auch hier nehme ich an, dass du das Deduplication-Feature von ZFS meinst. Dieses würde ich unter gar keinen Umständen aktivieren, da es in diesem Fall keine Vorteile hat, aber sich in der Praxis fürchterlich auf die Performance auswirken kann. Es gibt praktisch keine Umstände, unter denen es gut ist Deduplikation in ZFS zu aktivieren.
 
Last edited:
Danke für die Antwort.

Ich nehme an, du sprichst von dem ZFS recordsize parameter?
Nein, nicht nur. Bei jedem Dateisystem kann ich ja eine Blockgröße angeben.
Auch hier nehme ich an, dass du das Deduplication-Feature von ZFS meinst
Nein, auch andere Dateisysteme, die ihr akzeptiert, unterstützen Deduplizierung - da wäre XFS und BTRFS zu nennen. Das schöne ist, dass diese sogar offline deduplizieren, damit gibt es keinen Performanceeinburch beim Backupvorgang.
 
Last edited:
Also es gibt inline Dedup wie bei ZFS und nachgelagertes Dedup. Das hat erst einmal keine Performanceauswirkung, aber wenn du das auf HDDs machst, hast du nach dem Dedup ganz schlechte Leseperformance.
Der PBS macht Dedup bei den Backups und das läuft super, aber Dedup von Produktivdaten nur mit schnellen SSDs und schneller CPU sowie viel RAM machen.
In der Regel rechnet sich das aber nicht.
 
Ich hab mir mal den Spaß gemacht, und bei meinem privaten PBS in dem laut zfs list im Moment ~2.8 TiB an Daten liegen, die Größen der einzelnen Chunks auszulesen und ein Histogram davon zu erstellen. Größe in MiB.

1678281278160.png

Ja es sind viele die 4 MiB groß sind, aber es gibt in Summe mehr Chunks die (deutlich) kleiner als 4 MiB sind. Komprimierung und auch weil da VMs als auch Container und Host Backups drinnen liegen.
 
Die Logs vom GC Task sagen einem auch die durchschnittliche Chunkgröße. Bei mi z.B. eher um die 1-2MB:
Code:
2023-03-08T13:35:51+01:00: Average chunk size: 1.114 MiB
Also in der Theorie sind alle Chunks von VMs 4MB, aber das vor der Kompression. Nach der Kompression kann es dann ganz anders aussehen, je nachdem wie gut sich die Daten komprimieren lassen und wie hoch der Anteil an Zero-Bytes ist.
 
Last edited:
Also, ich hätte erwartet, dass eine offline Deduplizierung vielleicht nochmal 20 % 'Platzersparnis bringt, vor allem da ja in der Doku angegeben ist, dass die Deduplizierungsrate bei 4 MB-Chunks nicht so effizient ist.
Zfs ist ja die Standardlösung für Software-Raid und selfhealing und dadurch natürlich von Proxmox auch integriert. Da der PBS aber für seine Datastores eine eigene Konsistenzprüfung mitringt, ist die Selfhealing-Funktion von zfs eine doppelte Absicherung, die man nicht zwingend benötigt. An dieser Stelle möchte ich auch noch mal betonen, dass PBS kein regelmäßiges Vollbackup macht, sondern immer ein Differentzielles, deshalb ist die Konsistenzprüfung auch so wichtig, da die unveränderten Daten der VMs auch unangetastet dauerhaft im Datastore liegen. Übrigens schreibt die 'Proxmox Doku immer von inkrementeller Sicherung, was im Falle des PBS falsch ist.

Zurück zur Performance: Die Empfehlung von Proxmox wegen der schlechten Performance von zfs auf SSD zu setzen, ist für meinen Geschmack gerade im BAckupbereich die Lösung mit der Goldkante. Ich hatte gehofft, dass sich vielleicht andere bereits Gedanken gemacht oder/und Tests durchgeführt haben und alternative Setups zum zfs zu empfehlen. Zfs selber kann man natürlich auch gut tunen. Das wurde ja schon diskutiert. Ich selbst kann leider keine praxisnahen Tests durchführen. Ich sehe hier besonders einen Aufbau mit mdadm+LVM+XFS oder mdadm+btrfs, falls Deduplizierung was bringen sollte, ansonsten wäre natürlich mdadm+lvm+ext4 noch interessant. Als Raid sehe ich Raid60 als guten Kompromiss. Lvm braucht man um bei Wachstum des Storage mehrere Raidgruppen zu verbinden.
 
An dieser Stelle möchte ich auch noch mal betonen, dass PBS kein regelmäßiges Vollbackup macht, sondern immer ein Differentzielles, deshalb ist die Konsistenzprüfung auch so wichtig, da die unveränderten Daten der VMs auch unangetastet dauerhaft im Datastore liegen. Übrigens schreibt die 'Proxmox Doku immer von inkrementeller Sicherung, was im Falle des PBS falsch ist.
Also im Prinzip hast du recht, dass man da aufpassen muss, dass kein Chunk korrumpiert, da das dann womöglich alle Backup Snapshots einer VM betrifft. Oder wenn es schlimmer kommt sogar mehrere VMs.
PBS macht aber keine differenziellen Backups. Jeder Backup Snapshot ist ein vollwertiges Backup was nicht auf Differenzen zu vorherigen Backups beruht. Die schnellen inkrementellen Sicherungen und hohe Platzersparnis liegen nur an der Deduplizierung.

Da der PBS aber für seine Datastores eine eigene Konsistenzprüfung mitringt, ist die Selfhealing-Funktion von zfs eine doppelte Absicherung, die man nicht zwingend benötigt.
ZFS Scrubbing hat den Vorteil, dass es im Gegensatz zum PBS Verify, auch kaputte Chunks reparieren kann, sofern man Redundanz im Pool hat. Dafür haben PBS Verifies aber den Vorteil, dass diese erkennen können ob ein Chunk komplett fehlt und daher das ganze Backup unbrauchbar ist. ZFS kann also nicht prüfen, ob die Backup Snapshots tatsächlich vollständig sind.
Im Idealfall nutzt man also beides. Dann ist man vor Bit Rot geschützt und erkennt auch frühzeitig PBS Bugs oder Nutzerfehler.

Zurück zur Performance: Die Empfehlung von Proxmox wegen der schlechten Performance von zfs auf SSD zu setzen, ist für meinen Geschmack gerade im BAckupbereich die Lösung mit der Goldkante.
Man nimmt nicht SSDs weil ZFS so langsam ist. Sondern SSDs weil HDDs einfach überfordert sind, wenn da ständig wegen der Deduplikation Millionen von Random IO auf die HDDs einhämmern.
ZFS nimmt man da dann vor allem bei HDDs, damit man wenigstens die Metadaten auf SSDs auslagern kann, dass da ein GC Task in Minuten durch ist statt in Tagen oder Wochen.
Aber auch bei SSDs kann ZFS natürlich seine Vorteile haben.

Also, ich hätte erwartet, dass eine offline Deduplizierung vielleicht nochmal 20 % 'Platzersparnis bringt, vor allem da ja in der Doku angegeben ist, dass die Deduplizierungsrate bei 4 MB-Chunks nicht so effizient ist.
Die Frage ist aber, wie gut sich das dann noch ein zweites mal Deduplizieren lässt. Du deduplizierst dann ja bereits komprimierte und eventuell verschlüsselte Blöcke.
 
Last edited:
  • Like
Reactions: shanreich
Also, ich hätte erwartet, dass eine offline Deduplizierung vielleicht nochmal 20 % 'Platzersparnis bringt, vor allem da ja in der Doku angegeben ist, dass die Deduplizierungsrate bei 4 MB-Chunks nicht so effizient ist.
Ich glaube, dass das in der Praxis deutlich weniger ist. Ein anderes System, das ich gesehen habe, auf dem ZFS Deduplication aktiviert war (von dem ich in jedem Fall abrate) hatte eine Deduplication-Rate von 1.04 - und da war zusätzlich zur Hälfte noch ein NFS-Share drauf, der vermutlich für den Großteil davon verantwortlich war. Ich persönlich denke nicht, dass sich das auszahlt, außer man hat da wirklich eine Unmenge an Datastores, die sehr viele Chunks gleich haben.

Da der PBS aber für seine Datastores eine eigene Konsistenzprüfung mitringt, ist die Selfhealing-Funktion von zfs eine doppelte Absicherung, die man nicht zwingend benötigt.
Es ist korrekt, dass PBS seine eigene Konsistenzprüfung mitbringt, allerdings ist PBS nicht Self-Healing im Gegensatz zu einem RAIDZ oder ZFS Mirror. Deshalb sollte man hier beides verwenden.
 
Last edited:
PBS macht aber keine differenziellen Backups. Jeder Backup Snapshot ist ein vollwertiges Backup was nicht auf Differenzen zu vorherigen Backups beruht. Die schnellen inkrementellen Sicherungen und hohe Platzersparnis liegen nur an der Deduplizierung.
Ich glaube die Diskussion hatten wir hier schon mal. Durch die Deduplizierung könnte man meinen, es ist wie eine differentielle Sicherung, aber der PBS bezieht sich immer auf die erste Vollsicherung. Außer bei qcow2-images, da ist es eine differentielle, da ja nur die Bereiche markiert werden, die sich im Vergleich zur letzen Sicherung geändert haben. Ich bin gedanklich immer bei qcow2-Files, da ich NFS einsetzen würde. Dazu mal eine Frage: Bei ceph habe ich ja raw-Files, die ja kein dirty bitmap können. Da der PBS dann erst das ganze File lesen muss, um die Änderungen zu erkennen, müßte doch eine Sicherung von ceph im Vergleich zu qcow2 mit dirty bitmaps viel langsamer sein?
Es ist korrekt, dass PBS seine eigene Konsistenzprüfung mitbringt, allerdings ist PBS nicht Self-Healing im Gegensatz zu einem RAIDZ oder ZFS Mirror. Deshalb sollte man hier beides verwenden.
Stimmt, ich habe überlesen, dass es ja nur eine Überprüfung und nicht eine Reparatur beinhaltet. Dann sehe ich auch keine Alternative zu zfs.
 
Differenziell ohne regelmäßige Full Backups, wäre ein Wahnsinn.
Wie du selbst erkannt hast, werden Dirty Maps genutzt und somit baut jedes Backup auf das vorherige auf, also inkrementell.
Wie der das bei Ceph macht, weiß ich nicht, aber auch da werden nur Änderungen übertragen.
 
Differenziell ohne regelmäßige Full Backups, wäre ein Wahnsinn.
Genau das aber macht PBS, nur halt inkrementell. Das bieten Andere aber auch an.
Wie du selbst erkannt hast, werden Dirty Maps genutzt und somit baut jedes Backup auf das vorherige auf, also inkrementell.
Nein, das ist die Definition von differentiell.
 
Genau das aber macht PBS, nur halt inkrementell. Das bieten Andere aber auch an.

Nein, das ist die Definition von differentiell.
Differenziell = immer die Differenz zum letzten Full
Inkrementell = immer die Differenz zum letzten Inkrement.
 
Ja, du hast Recht, Ich habe das genau vertauscht. Ach wie peinlich :eek:. Thread löschen....enter, enter, enter
 
  • Like
Reactions: Falk R.
Bei ceph habe ich ja raw-Files, die ja kein dirty bitmap können.
Bei VMs ist es egal, welches Storage darunter verwendet wird. Die Sicherung und das Tracken mit der Dirty Bitmap läuft innerhalb des Virtualisierungsprozesses ab.
Proxmox VE live backup provides snapshot-like semantics on any storage type. It does not require that the underlying storage supports snapshots. Also please note that since the backups are done via a background Qemu process, a stopped VM will appear as running for a short amount of time while the VM disks are being read by Qemu. However the VM itself is not booted, only its disk(s) are read.
https://pve.proxmox.com/pve-docs/pve-admin-guide.html#_backup_modes

Bei Containern hilft es, wenn das Storage Snapshots kann -> Ceph, ZFS, LVM-thin,...
 
  • Like
Reactions: Falk R.
Bei VMs ist es egal, welches Storage darunter verwendet wird. Die Sicherung und das Tracken mit der Dirty Bitmap läuft innerhalb des Virtualisierungsprozesses ab.
Das heisst, das dirty bitmaps ist kein Feature von dem file format qcow2, sondern vom qemu layer. Dieser wird immer bei VMs eingesetzt, egal auf welchem Storage die virtuelle disk liegt, da immer ein image file angelegt wird (raw oder qcow2). Alles klar. Nachzulesen hier.
 
  • Like
Reactions: aaron

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!