Proxmox VE 6.3 und ZFS - VMs sterben immer wieder

DASPOT

New Member
Feb 5, 2021
6
0
1
26
Hallo zusammen,

erst mal zu meiner Umgebung: Ich habe Virtual Environment 6.3-2 auf folgender Hardware installiert:
Intel Xeon E3 1230v3
Mainboard Gigabyte GA Z87-HD3
2x 4GB DDR3-1600 Kingston Hyper x blu RAM, 1x 8GB DDR3-1600 Corsair Vengeance RAM (alle RAM non-ECC)
2x 120GB Sandisk SSD, 4x 3TB Toshiba HDD

Die beiden SSDs hab ich in einem mirrored (RAID1) ZFS zusammengefasst und die 4 HDDs zu einem RAIDZ.

Nun habe ich auf dem System eine debian 10.7.0 VM aufgesetzt und einen Kopiervorgang über NFS von meinem Synology NAS (DS 920+) im selben Netzwerk gestartet. Dateigröße gesamt knapp 2 TB.

Das Problem ist, dass die VM immer wieder beim Kopiervorgang abstürzt/gekillt wird. Ich habe ihr ein 2 TB RAW volume zugewiesen, 8gb ram, 4 kerne. Ich habe der VM auch schon 12 gb RAM zugewiesen. Beim Kopiervorgang geht innerhalb von kurzer Zeit der VM RAM Verbrauch auf ca 95%, selbes am Host. Egal, ob ich der VM 8 oder 12 gb RAM zuweise. Das Kopieren an sich läuft mit ca 80mb/s, Netzwerk traffic und disk io sind ca gleich.

Ich habe auch schon den kompletten pve node platt gemacht, frisch neu installiert und das Ganze neu gestartet, selbes Ergebnis. Memtest habe ich ebenfalls durchgeführt, keine Errors.

Im Anhang hab ich mal den Ausschnitt aus dem pve syslog, der wohl der relevante ist.

Danke schon mal für eure Rückmeldungen!
 

Attachments

Hi, ich habe gerade einen ähnlichen Thread als gelöst markiert. Bau mal die Kingston RAM Riegel aus.
https://forum.proxmox.com/threads/zfs-crash.78911/

meine liegen neben dem Server und der Server crasht nicht mehr.

Edit: Bild hinzugefügt! Hast du diese?
 

Attachments

  • thumbnail.jpeg
    thumbnail.jpeg
    99.9 KB · Views: 7
Last edited:
Hi, alles klar, vielen Dank! Wenn ich die kingston ausbaue wird’s mit 8gb natürlich etwas eng für zfs aber probiere es mal aus. Hast du zufällig Erfahrung mit verschiedenen RAM Riegeln? Wollte eh noch auf 24/32 gb aufrüsten und wenn anscheinend nicht alles beliebige geht, wäre Natürlich gut zu wissen, was schon von anderen „approved“ ist ;)

edit, sehen ähnlich aus, aber sind bisschen andere glaub ich
 

Attachments

  • 446BDFDA-527B-4361-8C44-7B8027228556.jpeg
    446BDFDA-527B-4361-8C44-7B8027228556.jpeg
    969.3 KB · Views: 4
Last edited:
Ich glaube das sind die gleichen. Nur deine scheinen ein bundle zu sein.
Du könntest auch ausprobieren ob deine Kiste mit nur den 2 Kingston tut. Wenn das klappt schicke ich dir meine 2x4 und du hast wieder 16GB
Du gibst mir dann deinen 8er Riegel und wenn das dann alles klappt ist doch fein. :cool:
 
btw. beim Memtest86 wurden die Kingston bei mir nur als 1333 Mhz erkannt. Macht ja auch iwie wenig Sinn.
 
An sich erkannt wurde der RAM im memtest als DDR3-1600. wobei da auch gerade was steht von DDR3-1596. hab mal die beiden Kingston ausgebaut, jetzt sind nur noch 8gb Corsair installiert. Der vm hab ich 4gb RAM zugewiesen und nochmal kopiert, allerdings wieder nach ca 30 Minuten abgestürzt. Kann es mal anders rum probieren nur mit den kingston und ohne Corsair aber irgendwie kann man den Fehler nicht so recht eindeutig Zuordnen
 

Attachments

  • FC8C6D2E-34FD-46AE-959F-03ECCFC0B7E5.jpeg
    FC8C6D2E-34FD-46AE-959F-03ECCFC0B7E5.jpeg
    492.7 KB · Views: 2
Auch mit dem kingston RAM alleine ist die vom beim kopieren jetzt nach einigen Minuten wieder gestorben, im Synology wieder out of Memory. Werde dann wohl mal eine andere raid Variante probieren müssen. Hätte noch einen Hardware raid Controller hier (Dell perc h700) den ich auch schon mit den 4 HDDs betrieben habe mit dieser Hardware. Oder eben raid übers bios oder Software raid im debian. Gibts da Empfehlungen vielleicht auch mit welcher Konfiguration ich am unwahrscheinlichStein in nen out of Memory laufe?^^
 
Du hast 16GB RAM verbaut und wenn du die ARC Size nicht manuell verkleinert hast, dann wird da Proxmox bis 50% des RAMs für den ARC nutzen. Der ARC ist erst leer und je mehr und länger du den Pool nutzt, desto schneller wächst der ARC, bis er seine 8GB erreicht hat. 8 von 16GB gehen also alleine für ZFS drauf. Dann noch 1-2GB für Proxmox selbst. Alle deine VMs zusammen haben also höchstens 6-7GB RAM zur Verfügung und du hast der VM 8 bzw 12GB RAM zugewiesen. Und wenn du im GUI 8G bzw 12G angegeben hast, dann werden 8/12GiB genommen, was dann sogar eher 9 oder 13GB gewesen wäre. Kann dann durchaus sein, dass da die VM gekillt wird, weil dir der RAM ausgeht.
Versuch mal der VM nicht mehr als 4GB RAM zu geben und guck dann, ob es klappt.
 
Last edited:
Danke für deine Antwort! Hab kurz darauf die vm auf 4gb RAM gesetzt, Kopiervorgang wieder gestartet. Geht jetzt nur noch mit ca 55 mb/s, aber nach ca 8h noch kein Absturz, das war wohl das Problem! Und mit mehr RAM ist wahrscheinlich auch die IO Performance besser. Dann werde ich mir da zeitnah welchen besorgen.
 
Und dann am besten mal den ARC limitieren. Nach Faustformel braucht der ARC 4GB + 1GB RAM je 1TB Rohkapazität der Laufwerke wenn du keine Deduplikation nutzen willst. Demnach bräuchtest du eigentlich 16GB RAM alleine für den ARC aber ich würde vermuten, dass da 8 GB auch reichen würden. Müsstest du die Hitrate und Auslastung des ARCS überwachen zum gucken, was da optimal für dich wäre.

Bei deinem Raidz-Pool hast du nicht vorher die Block Size von 8K auf 64K angehoben oder? Dann werden alle darauf erstellten VMs vermutlich so 50% mehr Platz brauchen und du hättest keinen Kapazitätsvorteil zum Stripped Mirror (Raid10), weil wegen der unpassenden Volblocksize der Padding-Overhead so groß ist.
 
Last edited:
Ich würde eher auf 32gb RAM upgraden baldmöglichst. Dann hab ich noch 16GB für die vms/Container, das sollte gut reichen. Sonst schau ich mir das vielleicht mal an, wie ich das limitiere, danke!

die block size hab ich auf der Standardeinstellung gelassen von proxmox, ich muss zugeben ich hab einfach gehört, dass ZFS ganz nice ist, kurz gelesen, RAIDZ = RAID 5 (ja, das steht ja überall, dass das nicht das selbe ist logischerweise, sondern am ehesten damit vergleichbar) und daher einfach RAIDZ genommen ohne groß mich mit zu beschäftigen. Hab jetzt auch keine Möglichkeit gesehen, die Block size nachträglich auszulesen.

war aber tatsächlich auch etwas verwundert ob der volume sizes. Meine HDDs haben (laut Reiter „ZFS“ unter pve-> „Disks“) je ne Speicherkapazität von 2,73TiB, der RAIDZ hat 10,91TiB Größe und 3,52TiB sind belegt, obwohl an sich bisher nur 1,85TiB als volume einer vm zugewiesen sind, die da auch quasi belegt sind. Die Storage Übersicht zu dem ZFS Volume sagt 2,90 TiB von 7,68TiB belegt. Erschließt sich mir vom Zusammenhang her gesamt noch nicht so ganz. Aber vielleicht sollte ich mich da erst umfassend zu ZFS belesen bevor ich das alles einrichte^^
 
Ich würde eher auf 32gb RAM upgraden baldmöglichst. Dann hab ich noch 16GB für die vms/Container, das sollte gut reichen. Sonst schau ich mir das vielleicht mal an, wie ich das limitiere, danke!

die block size hab ich auf der Standardeinstellung gelassen von proxmox, ich muss zugeben ich hab einfach gehört, dass ZFS ganz nice ist, kurz gelesen, RAIDZ = RAID 5 (ja, das steht ja überall, dass das nicht das selbe ist logischerweise, sondern am ehesten damit vergleichbar) und daher einfach RAIDZ genommen ohne groß mich mit zu beschäftigen. Hab jetzt auch keine Möglichkeit gesehen, die Block size nachträglich auszulesen.

war aber tatsächlich auch etwas verwundert ob der volume sizes. Meine HDDs haben (laut Reiter „ZFS“ unter pve-> „Disks“) je ne Speicherkapazität von 2,73TiB, der RAIDZ hat 10,91TiB Größe und 3,52TiB sind belegt, obwohl an sich bisher nur 1,85TiB als volume einer vm zugewiesen sind, die da auch quasi belegt sind. Die Storage Übersicht zu dem ZFS Volume sagt 2,90 TiB von 7,68TiB belegt. Erschließt sich mir vom Zusammenhang her gesamt noch nicht so ganz. Aber vielleicht sollte ich mich da erst umfassend zu ZFS belesen bevor ich das alles einrichte^^
Wenn du raidz1 benutzt, dann werden im Idealfall nur 25% der Kapazität für Parität draufgehen. Hast du 4x 2,73TiB wäre also theoretisch 8,19TB von 10.92TB nutzbar. Wenn deine HDDs nun aber 4K logische Blockgröße nutzen (Pool mit ashift=12 erstellt) und du die Volblocksize nicht selbst angehoben hast (unter "Datacenter -> Storage -> DeinPoolName -> Edit -> Blocksize:") dann wurden da alle virtuellen HDDs mit einer Blockgröße von 8K erstellt. Diese virtuelen 8K Blöcke werden dann in 4K Blöcken auf die verschiedenen HDDs geschrieben und das geht nicht gut auf und es muss sehr oft aufgerundet werden. Mal so als Beispiel: Sollen 5K gespeichert werden, dann geht das nur in ganzen 4K Blöcken. Es werden also immer 2x 4KB, also 8KB geschrieben, um 5KB speichern zu können. Nimmt also alles fast den doppelten Platz weg. Dann hast du zwar 8,19TB Kapazität auf dem Pool, der Pool wird aber schon nach 5TB voll sein, da du so viel Overhead wegen dem schlechten Padding hast.
Genau deshalb nimmt bei dir auch alles viel mehr Platz weg als es eigentlich sollte.
Lösen kannst du das, indem du eine größere Blocksize (Volblocksize) für den Pool einstellst und dann alle bisher erstellen virtuellen HDDs zerstörst und neu erstellst. Weil die Volblockisze kann nur beim Erstellen einer virtuellen HDD festgelegt und später nicht mehr geändert werden.
Wenn du nicht alles neu aufsetzen willst, dann kannst du aber z.B. auch eine neue virtuelle Festplatte erstellen, dann alles 1-zu-1 auf Blockebene von der alten auf die neue virtuelle HDD klonen und dann die alte virtuelle HDD löschen und die neue stattdessen nehmen.
Ziemlich aufwändig das Ganze. Hatte ich auch mal machen müssen und das für mich dokumentiert.

Außerdem solltest du noch bedenken, dass man einen ZFS Pool nie mehr als 90% füllen sollte. Und so ab 80% Füllung fängt der Pool an langsam zu werden. Von den theoretischen 8,19TB solltest du also nicht mehr als 6,55TB aktiv nutzen. Und wenn du Snapshots nutzen willst, dann muss du die entsprechend auch noch einplanen. Die nehmen ja auch noch Platz weg.

Also nutzen kannst du aktuell in Wirklichkeit nur 4,37TB von deinen 10.92TB. Wenn du die Blocksize erhöhst und alle virtuellen HDDs neu erstellst, dann hättest du wenigstens 6,55TB nutzbar.

Oder du machst einen Stripped Mirror (Raid10) draus. Da hast du dann nicht das Problem mit dem Padding Overhead und könntest es bei 8K Blocksize belassen und dein Pool wäre doppelt so schnell und würde sich bei bedarf sogar noch erweitern lassen.
Wären dann 5,46TB von 10.92TB nutzbar bzw 4,37TB von 10.92TB wenn du einrechntest, dass der Pool nicht über 80% gefüllt werden sollte.

Ohne die Blocksize zu erhöhen verlierst du also 2 von 4 HDDs, genau wie beim Raid10, nur dass da Raid10 halt schneller ist und sich im Gegensatz zum Raidz auch noch später mit mehr HDDs erweitern lässt. Gerade wenn mehrere VMs virtuelle HDDs auf dem Pool liegen haben kann Raid10 sehr nett sein, weil die HDDs schnell an ihre Grenzen kommen was die IOPS angeht und da schafft ein Raid10 halt das Doppelte.
 
Last edited:

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!