Jump to content
We're Hiring! Full Stack Developer ×

M.2 NVME Cache bringt BTRFS Error


unrd44

Recommended Posts

Hallo zusammen,

 

ich nutze seit einiger Zeit erfolgreich Unraid auf älterer Hardware. Nun habe ich mir neue Hardware angeschafft und habe seit dem ein massives Problem:

 

Nach dem Aufbau der neuen Hardware und Austausch der Cache Laufwerke von 2x SSD (RAID 1) zu Nvme (RAID 1) lief zunächst alles problemlos. Ich hatte vor dem Umbau die Daten vom Cache mittels (Yes:Cache > Mover > No) auf das Array übertragen. Anschließend die neuen Nvme´s eingebaut, mit BTRFS formatiert und mittels (Prefer:Cache > Mover) wieder vom Array auf das Cache Laufwerk verschoben. Dieser "Migrationsvorgang" hat immer bei deaktivierten VMs und Docker stattgefunden.

 

Betroffen sind die Shares Appdata, Domains und System, alle anderen Shares stehen auf Yes:Cache.

 

Plötzlich startete Libvirt nicht mehr, keine Docker, keine VMs... sehr seltsam. Im Disk Log stehen folgende Fehler (Ausschnitt):

 

May 20 01:50:24 UNRAID kernel: BTRFS info (device nvme1n1p1): enabling ssd optimizations
May 20 01:51:59 UNRAID kernel: BTRFS warning (device nvme1n1p1): csum failed root 5 ino 312 off 167505920 csum 0xa97b7409 expected csum 0x0b924732 mirror 1
May 20 01:51:59 UNRAID kernel: BTRFS error (device nvme1n1p1): bdev /dev/nvme1n1p1 errs: wr 0, rd 0, flush 0, corrupt 2, gen 0
May 20 01:51:59 UNRAID kernel: BTRFS warning (device nvme1n1p1): csum failed root 5 ino 312 off 167505920 csum 0xa97b7409 expected csum 0x0b924732 mirror 1
May 20 01:51:59 UNRAID kernel: BTRFS error (device nvme1n1p1): bdev /dev/nvme1n1p1 errs: wr 0, rd 0, flush 0, corrupt 3, gen 0

 

Nun bin ich mir unsicher, ob ein Hardwaredefekt vorliegt, oder ob man Nvme´s überhaupt im RAID 1 Verbund als Cache nutzen soll/darf... Konnte defekte Daten (docker.img etc.) aus dem Backup wiederherstellen und es zunächst wieder ohne Cache als Laufen bekommen, bin aktuell allerdings ziemlich ratlos und freue mich auf jegliche Hilfe oder Tipps :-)

 

Mein System ist folgendermaßen aufgebaut:

Mainboard: Gigabyte AORUS X570 I Pro WiFi

CPU: AMD Ryzen 5 3400G

Ram: 2x 16GB Corsair DDR4 3600

Array: 1x WD Red Pro 3TB Parity, 2x Seagate ST3000 3TB

Cache: 2x Samsung SSD 970 PRO 512GB M.2 Nvme

 

 

Link to comment

Beim Lesen der Daten wird immer auch die Checksumme gebildet und mit der bestehenden verglichen. In deinem Fall gab es bei "ino 312", also irgendeiner Datei, die wir jetzt nicht kennen einen Fehler bei dieser Checksumme. Solche Fehler dürfen natürlich nicht auftreten.

 

Ursachen kann es dafür mehrere geben. Entweder stimmt was nicht bei der Übertragung über PCIe oder die SSD ist irgendwie inkompatibel mit dem Board oder dem Slot oder der RAM hat eine Macke oder oder oder...

 

Hattest du mal einen Stromausfall oder hast den Server hart abgeschaltet? In dem Fall immer erst einen Scrub auf dem BTRFS Pool ausführen, bevor du das Array startest.

 

Ansonsten würde ich beim RAM ansetzen, da gerade so hoch taktender RAM gerne anfällig für Speicherfehler ist. Aus dem Grund empfehle ich auch immer ECC RAM. Eventuell magst du das ja investieren. Dein Board unterstützt jedenfalls ECC RAM:

https://www.gigabyte.com/de/Motherboard/X570-I-AORUS-PRO-WIFI-rev-10/sp#sp

 

Dann würde ich einfach mal mit einem 32GB Riegel anfangen.

 

Oder treten die Fehler nicht mehr auf?

 

57 minutes ago, unrd44 said:

Plötzlich startete Libvirt nicht mehr, keine Docker, keine VMs...

...

Konnte defekte Daten (docker.img etc.) aus dem Backup wiederherstellen

 

Dazu eine Anmerkung. Das docker.img enthält keine wichtigen Daten. Man kann es jederzeit löschen und daher braucht man es auch nicht sichern. Es enthält nur die heruntergeladenen Container-Pakete. Die Container-Nutzerdaten befinden sich dagegen unter appdata. Die sind wichtig. Falls mal alle Container verschwunden sind, kannst du sie jederzeit über Apps -> Previous Apps "wiederherstellen". Um genau zu sein startet dann einfach dein bisher genutztes Template, lädt die Pakete neu herunter und verwendet wie gehabt die Dateien unter appdata.

 

Außerdem rate ich dir aus Performance-Gründen den Docker-Dienst auf "Directory" umzustellen. Gerade bei BTRFS reduziert das massiv die Schreibzugriffe auf die SSD.

 

 

Link to comment

Hallo,

 

vielen Dank für die umfangreiche Antwort! Aktuell läuft das System mit den beiden M.2 Nvme´s als Cache Pool. Ich habe testweise "nur" die domain" Share darauf gelegt (Prefer) und test ein wenig mit einer VM. Bisher keine Probleme. Appdata, System möchte ich später auch noch darauf legen (Prefer) und die restlichen Shares mit YES.

 

Zwei Fragen habe ich:

 

5 hours ago, mgutt said:

Scrub auf dem BTRFS Pool ausführen

Wo mache ist das? Habe ich auf Anhieb nicht gefunden...

 

5 hours ago, mgutt said:

Docker-Dienst auf "Directory" umzustellen

Habe ich ebenfalls nicht gefunden...

 

Ich werde weiterhin beobachten und ggf. auf ECC RAM umstellen.

 

Vielen Dank zunächst für die Antwort.

Link to comment
21 minutes ago, unrd44 said:
6 hours ago, mgutt said:

Docker-Dienst auf "Directory" umzustellen

Habe ich ebenfalls nicht gefunden...

 

Docker Dienst stoppen. Erweiterte Ansicht aktivieren. Dann solltest du das passende Dropdown sehen.

 

21 minutes ago, unrd44 said:
6 hours ago, mgutt said:

Scrub auf dem BTRFS Pool ausführen

Wo mache ist das? Habe ich auf Anhieb nicht gefunden...

https://wiki.unraid.net/Check_Disk_Filesystems#btrfs_scrub

Link to comment

Vielen Dank für die schnelle Antwort! Klasse.

 

Die vielleicht wichtigste Info habe ich im Eifer des Gefechts "unterschlagen": Das Problem trat auf, als ich versucht habe die intergrierte Grafikkarte des Ryzen 5 3400G an eine Windows 10 VM durchzureichen. Obs das überhaupt etwas bringt, kann ich nicht sagen, wollte es aber testen. Ich glaube mich erinnern zu können, dass alle Probleme direkt im Anschluss kamen. Das nur zur vollständigen Info. 

Link to comment
34 minutes ago, unrd44 said:

 Das Problem trat auf, als ich versucht habe die intergrierte Grafikkarte des Ryzen 5 3400G an eine Windows 10 VM durchzureichen

Das wird sehr wahrscheinlich nicht funktionieren, zumindest hat es soweit ich das verfolgt habe noch niemand erfolgreich geschafft. Hatte es selber auch mal vergeblich versucht. Da sind die AMDs (noch?) etwas zickiger als die Intels.

Link to comment

Nun scheint alles problemlos zu laufen! Ich habe das Docker Image auf "directory" umgestellt, Appdata, Domains und System auf Prefer gestellt und es läuft bislang stabil. Glaube, dass es "nur" mit dem Durchreichen der AMD:Picasso Grafik an die VM zusammenhing...

 

Letzte Frage an der Stelle (hoffe das ich jetzt nicht off-topic): Durch die Umstellung der Docker auf "directory" ist ein Verzeichnis mit über 1.000.000 Files entstanden. Beim Backup mit Duplicati ist das für die Platte viel mehr Stress und dauert auch deutlich länger, als mit dem docker.img... Ich bin mir aktuell nicht sicher, ob das der richtige Weg ist auf "directory" stehen zu lassen. Danke euch für die Unterstützung!

Edited by unrd44
Link to comment
1 hour ago, unrd44 said:

Beim Backup mit Duplicati ist das für die Platte viel mehr Stress und dauert auch deutlich länger, als mit dem docker.img... Ich bin mir aktuell nicht sicher, ob das der richtige Weg ist auf "directory" stehen zu lassen.

Wie ich bereits sagte ist das docker.img "Müll". Das sicherst du einfach gar nicht.

 

 

Link to comment

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.
Note: Your post will require moderator approval before it will be visible.

Guest
Reply to this topic...

×   Pasted as rich text.   Restore formatting

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

×
×
  • Create New...