[SOLVED] ZFS Rpool stark fragmentiert - wie lösen?

fireon

Distinguished Member
Oct 25, 2010
4,135
390
153
42
Austria/Graz
iteas.at
Hallo Leute,

meine Rpools sind dann innerhalb der letzten Jahre doch mal fragmentiert. Der eine ist jetzt bei 61%. Dort läuft PVE drauf und auch ein paar kleine VM's mit Replizierung. Nun wenn ein Pool wirklich stark framentiert war, hab ich ein zfs send gemacht. Pool gelöscht neu angelegt und Daten zurück. Fertig.

Wie mache ich das richtig bei einem Rpool? Neu installieren will ich nicht, macht keinen Spass. Außerdem ist es ein Cluster. Der Part fehlt in meiner ZFS Bibel noch ;)

Danke und glg
Fireon
 
Hi fireon,

Leider hat ZFS kein defrag und sie behaupten auch das es egal sein soll.
Die einzige Möglichkeit zum defragmentieren ist die mit send/receive.
 
Hallo Wolfgang,

ja ich weiß es bei ZFS kein Defrag gibt. Nur wie mach ich das mit dem Rootpool mit send/receive richtig. So dass das ganze dann hinterher auch wieder funktioniert? Weil nach meiner Erfahrung genügt es nicht nur das/die Datasets raus zu werfen und wieder zurück zu spielen. Ich musste bis jetzt immer den gesamten Pool löschen und neu anlegen. Sonst bleibt immer was zurück.

Hab erst vorgestern nen Pool neu gemacht. Nur Datasets löschen hatte zur Folge das die Defragmentierung von 78% auf 21% gesunken ist. Da war der Pool aber schon leer. Also keine Datasets mehr drauf. War ein Raid10 mit 4 240GB SSD's.
 
Nur wie mach ich das mit dem Rootpool mit send/receive richtig.

LiveBoot dann send/receive.

Weil nach meiner Erfahrung genügt es nicht nur das/die Datasets raus zu werfen und wieder zurück zu spielen. Ich musste bis jetzt immer den gesamten Pool löschen und neu anlegen. Sonst bleibt immer was zurück.

Die Fragmentierung ist Teil der CoW Logik und du wirst sie nie ganz wegbekommen. Stell dir vor du schreibst eine Datei mit 10 MB und änderst danach ein einziges bit in der Mitte und schon hast du Fragmentierung.
 
@LnxBil danke für deine Info. Wie ist denn da deine Erfahrung, macht die Fragmentierung bei ZFS (die meinen ja macht so gut wie nichts), bei nem höheren Wert Performanceprobleme? z.b. bei 70 oder 80%?

Mit send/receive meinst du nur das Dataset "rpool/ROOT", oder den ganzen Pool, den bis jetzt musst ich immer den Pool komplett löschen, und dann übertragen, denn auch wenn alle Dateien gelöscht wurden, gabs noch ne fette Fragmentierung.
 
@LnxBil danke für deine Info. Wie ist denn da deine Erfahrung, macht die Fragmentierung bei ZFS (die meinen ja macht so gut wie nichts), bei nem höheren Wert Performanceprobleme? z.b. bei 70 oder 80%?

Schwer zu sagen, kommt sehr auf die Verwendung des Pools an. Bei SSDs is die Fragmentierung ja völlig egal, bei Festplatten wird es wohl schon was bei sequentiellem Lesen ausmachen, bei randomisiertem Lesen wird es egal sein. Das send/receive in den eigene Pool hat ja auch Vorteile des Rebalancierens, falls das vorher wegen Platzmangel oder neuen Disks ein Problem war. Ich weiß auch nicht ob ZFS überhaupt zusammengehörige Daten auch wirklich hintereinander auf die Platte legt, da kenne ich ZFS leider zu wenig.
 
fragmentation bei ZFS bezieht sich auf den noch freien platz (also wieviele freie blöcke in welcher größe gibt es), nicht auf die gespeicherten daten. das wirkt sich also nur insofern auf performance auf, als für große write batches eventuell nicht mehr ein block zur verfügung steht, sondern mehrere kleinere. also hoher fragementation wert + große writes => fragmentiertes speichern dieser großen writes.
 
Ok, Leute, ich glaub ich darf da noch Wissen nachholen. Wusste nicht das dies bei SSD's egal ist. Und ich hab für das ProxmoxOS und VM's immer nur SSD's. Außerdem fahre ich ausschließlich Raid1 und Raid10. Ausserbei manchen Specials, gibt es Raid50, aber das ist Performance auch fast egal, ist nur für PVE Backups. Ok, dann bin ich erleichtert und brauch mich da nicht mehr drum zu kümmern.
 
Wusste nicht das dies bei SSD's egal ist

Hintergrund meiner Antwort war:
Also Fragmentation (die, die andere Dateisysteme auch haben) und die die asymmetrische Verteilung der Daten beschreiben ist entscheidend für die sequentielle Leseperformance, denn der Lesekopf bei Festplatten oft hin und herspringen muss, bricht die Übertragungsgeschwindigkeit ein. Bei SSDs ist es egal wo gelesen wird, daher ist die Zeit jeden Block anzusprechen nahezu identisch.

In ZFS muss man dann oft hin und herspringen, wenn man neue Dateien anlegen will.

fragmentation bei ZFS bezieht sich auf den noch freien platz

Wow ... das war mir auch nicht bewusst, aber stimmt. So ist es in der Manpage beschrieben.


Aber schön, dass wir darüber gesprochen haben und jeder was dazugelernt hat :-D
 
  • Like
Reactions: fireon
Also Fragmentation (die, die andere Dateisysteme auch haben) und die die asymmetrische Verteilung der Daten beschreiben ist entscheidend für die sequentielle Leseperformance, denn der Lesekopf bei Festplatten oft hin und herspringen muss, bricht die Übertragungsgeschwindigkeit ein. Bei SSDs ist es egal wo gelesen wird, daher ist die Zeit jeden Block anzusprechen nahezu identisch.
Ja, du hast Recht. Wenn dann drüber nachdenkt, ist es ja eh voll logisch! :) :)

Schönes WE
 

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!