[SOLVED] Wie funktioniert SnapRAID?


mgutt

Recommended Posts

SnapRAID soll ja wie Unraid einem RAID4 ähnlich sein (also ein separates Laufwerk als Parität):

8055128_2020-12-3013_02_57.png.e21e37524c0ff1499b3c78ab0c618241.png

 

Der Unterschied zu Unraid ist, dass SnapRAID die Parität:

- zeitversetzt erstellt

- nicht sektor-basiert, sondern datei-basiert berechnet

 

Wie die XOR-Paritätsberechnung funktioniert ist mir bekannt. Wem das nicht klar, kann zB das Video anschauen.

 

Sagen wir, wir haben auf den oben genannten Disk0, Disk1 und Disk2 jeweils die Datei0, Datei1 und Datei2 und ich erstelle die SnapRAID Parität auf Disk3. Nun fällt Disk2 aus. Ich kann dank der Parität die Datei2 von Disk2 wiederherstellen. Soweit so klar.

 

Doch was ist, wenn ich Datei1 zwischenzeitlich geändert habe? Da die XOR-Berechnung ja über alle Platten und Dateien hinweg erfolgt, ist dann nicht auch die Parität kaputt, wenn ich Datei1 ändere? Wenn ich zusätzlich Datei0 ändere, dürfte dann nicht sogar alles verloren sein?

Link to comment

Die Parität wird ja Dateibasiert geschrieben, d.h. zum wieder herstellen hast Du immer den letzten Stand des Syncs (Snapshot), da es sich ja nicht um RealTime Parity wie bei Unraid handelt.

What's the SnapRAID 'content' file?

It's the file used by SnapRAID to save the list of all files present in your array with all the checksum, timestamp and any other information needed.

These file will be of about few GiB depending of how big is your array. Approximatively for 10 TB of data, you'll need 500 MiB of content file.

What are the SnapRAID 'parity' and 'N-parity' files?

They are the files used by SnapRAID to store the parity data used in recovering.

These files will grow in size as the biggest amount of data stored in a single disk of the array.

 

Link to comment
1 hour ago, sd007 said:

zum wieder herstellen hast Du immer den letzten Stand des Syncs (Snapshot)

Ja das Wort Snapshot wird häufiger genutzt, aber ein Snapshot ist keine Parität. Und ein Snapshot von 3 vollen Disks würde 3 Paritätsdisks benötigen. Das ist bei SnapRAID aber nicht der Fall. Es muss sich also um eine Parität und um kein Snapshot handeln.

 

Vom Prinzip ist die FAQ schon ein Widerspruch in sich:

Quote

 

SnapRAID creates a file-system snapshot conceptually similar at other snapshot solutions. The difference is that the purpose of SnapRAID is to be able to recover a disk to the saved state after a complete disk failure.

SnapRAID is more similar at the RAID-Z/RAID functionality of ZFS/Btrfs.

 

Erst steht da, dass ein Snapshot erstellt wird und dann, dass es eher einem RAID-Z ähnelt. Das sind aber zwei völlig unterschiedliche Dinge. Ein Snapshot arbeitet mit Inodes und Links auf bestehende Blöcke und ignoriert Blöcke, die sich danach ändern. Ein RAID erstellt dagegen XOR Paritäten, was mal wirklich gar nichts mit Snapshots zu tun hat. Der Autor scheint damit nur ausdrücken zu wollen, dass die Parität einen alten Zustand abbildet. Er nutzt ja sogar das Wort "Backup", was aber mal gar keinen Sinn macht.

 

1 hour ago, sd007 said:

Die Parität wird ja Dateibasiert geschrieben

Genau da sehe ich eben das Problem. Eine Parität wird wie folgt berechnet:

1 + 1 + 1 = 3 = ungerade Zahl = Parität = 1

 

Geht nun Disk2 kaputt:

1 + 1 + Parität 1 = 3 = ungerade Zahl = Disk2 = 1

 

Bis hier hin funktioniert SnapRAID.

 

Wenn ich aber nun nach der Erstellung der Parität das Bit von Datei0 ändere passiert das:

0 + 1 + 1 = 2 = gerade Zahl = Parität = 0 (nicht 1)

 

Mir fehlt jetzt also die korrekte Parität um bei Ausfall von Disk2 die Daten wiederherstellen zu können:

0 + 1 + Parität 1 = 2 = gerade Zahl = Disk2 = 0 = Datei nicht wiederherstellbar

 

Wenn ich also SnapRAID richtig verstehe, dann ist die Parität SOFORT kaputt, sobald ich eine Datei ändere, da eine Dateiänderung einem Diskausfall entspricht. Das betrifft dann zwar nur die Dateien der restlichen Platten, aus denen die Parität berechnet wurde, aber welchen Sinn hat denn eine Parität, wenn ich dieser nicht vertrauen kann?

 

Ein einfaches Beispiel:

Platte 1 enthält ein Word Dokument

Platte 2 enthält eine MP3

Platte 3 einen Film

Platte 4 die Parität, die aus diesen drei Dateien gebildet wurde

 

Ändere ich nun nach Generierung der Parität das Word Dokument, dann gehen das Word-Dokument, die MP3 oder der Film nach einem Disk-Ausfall garantiert verloren, je nachdem welche der Platten 1 bis 3 ausfällt. Und keiner der SnapRAID nutzt, lässt die Parität im Minutentakt korrigieren.

 

EDIT: Es ist leider genauso wie ich es verstanden habe:

https://www.reddit.com/r/DataHoarder/comments/5ctif1/snapraid_question_about_small_and_frequently/d9zubvz/

Quote

When SnapRAID restores lost files, it needs both the parity drive(s) AND the remaining data drives. If you have updated files on one or more data drives since the last sync, then as far as SnapRAID is concerned, it is like the data drive(s) with updated files failed, since the data SnapRAID needs to restore is no longer available from the data drive(s).

Also SnapRAID macht nur in einem sehr begrenzten Bereich Sinn (zB Medien-Sammlungen, die sich selten ändern) und es ist verrückt SnapRAID per Cronjob auszuführen. Stattdessen bräuchte es eigentlich einen Daemon, der ständig Dateiänderungen überwacht.

 

Ist das jedem bekannt? Weil das nutzen ja viele mit OMV und wehe man hat im SnapRAID Verbund nur eine Platte mit Dateien, die sich ständig ändern wie zB Containern oder VMs. Da zerlegt man sich ja die Parität im Sekundentakt.

 

Jedenfalls weiß ich jetzt schon mal, dass SnapRAID keine Alternative zu einem RAID5 für den Unraid Cache ist. Also doch eher Lsyncd.

 

Link to comment

SnapRaid wäre evtl. etwas für Backups, also einen Rechner der eben nicht VMs und Docker bereitstellt, welche 24x7 laufen und nur bei Bedarf an ist.

Ich hab mir das schon lange nicht mer angeguckt, aber was mich abgeschreckt hatte war, dass es CLI-only ist.

 

Vor ein paar Jahren wollte ich eben Backup auf einen nur zeitweise laufenden Rechner auslagern...wegen Platz und Kosten kam ich dann auf meine Windoof-Workstation (war eh mein "alter" Server mit 32GB RegECC und HBA)

Ich bin dann allerdings nicht auf SnapRAID, sondern auf DrivePool gegangen.

Läuft auch Datei-Basiert, man kann analog unRaid Disks verschiedener Grössen poolen und eine Datei ist immer nur auf einer Disks,...das Filesystem bleibt also immer intakt, wenn man die Disk aus dem Pool "entnimmt" (da Windoof, halt NTFS).

Parity gibt es nicht, dafür kann man für jeden Ordner sagen, wieviele Kopien (wie ein Mirror) dieser haben soll (Anzahl beschränkt auf die Anzahl DIsks im Pool) und diese werden automagisch auf die Disks im Pool verteilt.

Vorteil ist, dass beim lesen dann die n-Fache Performance möglich ist, wenn mehr als ein Client simultan  zugreift.

Ist zwar nicht kostenlos aber läuft seither super stabil.

Edited by Ford Prefect
Link to comment
Quote

Also SnapRAID macht nur in einem sehr begrenzten Bereich Sinn (zB Medien-Sammlungen, die sich selten ändern) und es ist verrückt SnapRAID per Cronjob auszuführen. Stattdessen bräuchte es eigentlich einen Daemon, der ständig Dateiänderungen überwacht.

 

Ist das jedem bekannt? Weil das nutzen ja viele mit OMV und wehe man hat im SnapRAID Verbund nur eine Platte mit Dateien, die sich ständig ändern wie zB Containern oder VMs. Da zerlegt man sich ja die Parität im Sekundentakt.

 

Ich habe auf meinem DIY Server SnapRAID laufen. Das ist aber, wie Du schon sagtest, ein reiner Medien Server, bei dem sich die Dateien so gut wie nie ändern, außer, es kommt was dazu oder wird durch eine neuere Version ersetzt.

 

Ich habe auch irgendwann mal im OMV Forum gelesen, das dies eigentlich nur für diese Art empfehlenswert ist. DB Files oder Config Files auf einem SnapRAID macht dafür nicht viel Sinn.

 

Quote

SnapRaid wäre evtl. etwas für Backups, also einen Rechner der eben nicht VMs und Docker bereitstellt, welche 24x7 laufen und nur bei Bedarf an ist.

Ich hab mir das schon lange nicht mer angeguckt, aber was mich abgeschreckt hatte war, dass es CLI-only ist.

 

Du bringst mich da echt auf eine gute Idee, da ich mir sowieso einen Cold-Backup Server aufbauen will.

Link to comment
1 hour ago, Ford Prefect said:

SnapRaid wäre evtl. etwas für Backups, also einen Rechner der eben nicht VMs und Docker bereitstellt, welche 24x7 laufen und nur bei Bedarf an ist.

Da geht doch auch irgendeine alte Hardware mit Unraid und WoL. Außer du wolltest kein Geld für die Lizenz ausgeben. Dann klar. Aber eine CLI vermeiden ist mir immer Geld wert. :D

Link to comment
On 12/30/2020 at 7:40 PM, Ford Prefect said:

Nein, ich hab ja auch die Lizenz von DrivePool gekauft....nochmal Platz für einen Backup-Server hatte einfach keinen WAF zu der Zeit. 🙃

Oje, der WAF... Nicht zu unterschätzen... 😇 Kann mitunter ganze "Männer-Projekte" zum erliegen bringen... 😜

Edited by sd007
Link to comment
  • ich777 changed the title to [SOLVED] Wie funktioniert SnapRAID?
  • 1 month later...

Ich hatte gerade eine verrückte Idee. Man könnte SnapRAID in Unraid nachbilden. Ein Script müsste dabei folgendes machen:

1.) Es prüft ob das Array schläft und wenn ja:

2.) das Array stoppen

3.) eine Parität, die man vorher bereits drin hatte, wieder hinzufügen

4.) das Array im Wartungsmodus starten und die Parität als bereits valide übernehmen

5.) per dd alle Sektoren von geänderten und neuen Dateien seit der letzten Paritätskorrektur auslesen und überschreiben, wodurch die Parität an den korrekten Stellen aktualisiert wird

6.) das Array stoppen

7.) die Parität entfernen

8.) das Array ohne Parität starten

 

Braucht das jemand? ^^

Link to comment
  • 2 months later...

Ich teste momentan auch beides, also habe eine UnRaid Pro Lizens und habe aber auch ne DrivePool Lizens.

 

Erst hatte ich UnRaid Als Backup und Render/Gaming VM Maschine laufen und habe da alle meine Daten drauf geschaufelt. Momentan läuft WIndows Nativ mit DrivePool und SnapRaid. Mann kann ja beides gleichzeitig nutzen. Warum ich momentan Snapraid ausprobiere ? An XFS stört mich, das es keine Bitrot Erkennung hat, angeblich ist man mit Snapraid davor geschützt. Gibt es eine möglichkeit das auch UnRaid mit XFS irgendwie Prüfsummen anlegt und so erkennt und auch die Datein reparieren kann ? Weil nur erkennen würde mir nichts bringen. BTRFS ist wohl nicht so gut für Unraid ? Irgendwo hatte ich mal von nachteilen gelesen.

Edited by Ceiber3
Link to comment
31 minutes ago, Ceiber3 said:

angeblich ist man mit Snapraid davor geschützt

Aber nur solange Dateien nicht regelmäßig geändert werden.

 

54 minutes ago, Ceiber3 said:

Gibt es eine möglichkeit das auch UnRaid mit XFS irgendwie Prüfsummen anlegt und so erkennt und auch die Datein reparieren kann ?

Ähnliches erreichst du in Unraid über das File Integrity Plugin. Wobei das nur Checksummen von den Dateien erstellt und dich über Änderungen informiert. Es kann keine Dateien reparieren. Dafür bräuchte man ein Backup der Datei.

 

45 minutes ago, Ceiber3 said:

BTRFS ist wohl nicht so gut für Unraid ?

Mit Unraid hat das nichts zu tun. BTRFS selbst gilt nicht als so stabil wie ZFS. Daraus resultieren solche "nicht so gut" Aussagen.

 

Allerdings gilt BTRFS RAID5/6 als stabil, wenn man die Metadaten im RAID1 speichert und das macht Unraid standardmäßig.

 

Trotzdem muss man bei BTRFS nach einem Stromausfall oder harter Abschaltung des Servers immer einen Scrub ausführen. Macht man das nicht, kann es sein, dass Daten später nicht mehr zu reparieren sind. Leider macht Unraid das nicht automatisch. Der Nutzer muss selbst daran denken.

 

Das Unraid Array (egal ob XFS oder BTRFS) wiederum bietet keinen Schutz gegen Bitrot. Nur ein BTRFS Pool bietet so einen Schutz. Alternativ kann man sich über ein Plugin auch einen ZFS Pool erstellen. In der Hinsicht die beste Option.

 

Wenn du allerdings keinen ECC RAM im Server hast, kannst du das Thema Bitrot eh vergessen. Denn dann werden die Daten bereits kaputt auf die Disk geschrieben und daraus eine völlig intakte Checksumme gebildet. Fehler würden da gar nicht erst auffallen.

 

Das Unraid Only Setup gegen Bitrot sieht also so aus:

- ECC RAM

- Unraid Array mir kalten Daten (ändern auch selten), das per File Integrity Plugin regelmäßig geprüft wird

- Remote Backup von dem bei Bitrot wiederhergestellt wird

- ZFS Pool für heiße Daten (ändern sich häufig) oder BTRFS Pool mit regelmäßigem Scrub

 

Dann könnte man auf andere Lösungen verzichten.

 

 

Link to comment
7 hours ago, mgutt said:

Trotzdem muss man bei BTRFS nach einem Stromausfall oder harter Abschaltung des Servers immer einen Scrub ausführen. Macht man das nicht, kann es sein, dass Daten später nicht mehr zu reparieren sind. Leider macht Unraid das nicht automatisch. Der Nutzer muss selbst daran denken.

 

Wie würde man so etwas machen?

Link to comment
On 12/30/2020 at 4:19 PM, mgutt said:

Ja das Wort Snapshot wird häufiger genutzt, aber ein Snapshot ist keine Parität.

 

SnapRAID nennt die Liste von Dateien, für die die Parität erzeugt wurde, einen Snapshot.

 

Später, nach dem Snapshot, veränderte oder neu erzeugte Dateien lassen sich mit SnapRAID nicht wieder herstellen.

 

SnapRAID ist für volatile Daten einfach nicht gedacht. Für Backup oder Archive mag das ok sein, aber nicht für einen Arbeits-Server.

 

Gab es hier in den Foren, in den 100.000den Beiträgen, jemals einen Hinweis darauf, dass Unraid bei der Wiederherstellung ein Problem hatte? Das ist mir noch nicht untergekommen. Und das ist mir jederzeit eine Lizenz wert - selbst für einen Backup-Server.

 

Edited by hawihoney
  • Like 1
Link to comment

ZFS ist zwar super, ZFS hat aber einen grroßen Nachteil: Man kann ein ZFS Array nicht um Festplatten erweitern.

Also muss man um das Raid erweitern zu können immer alle Daten löschen, oder jede Festplatte um eine größere autauschen.

Oder man erstellt ein neues VDEV und fügt es hinzu, da brauchst du aber immer min 2 Festplatten zum erweitern, sonst hat man keinen vollen Ausfallschutz. Meiner Meinung nach im privaten Bereich ein großer Nachteil. Da finde ich XFS und BTRFS usw besser. Leider hat XFS keine Prüfsummen und BTRFS ist nicht Stable.

Das File Integrity Plugin ist somit meiner Meinung nach nutzlos. War auch einer der Gründe warum ich lange Synology nutzte, SHR mit BTRFS kann beides, Festplatten mischen ohne Speicherplatzverlust und Bitrot Schutz. Eigentlich ist XFS Perfekt für mich, wenn es irgendwie Bitrot erkennen könnte und die Defekten Datein fixen könnte.

 

Quote

Wenn du allerdings keinen ECC RAM im Server hast, kannst du das Thema Bitrot eh vergessen. Denn dann werden die Daten bereits kaputt auf die Disk geschrieben und daraus eine völlig intakte Checksumme gebildet. Fehler würden da gar nicht erst auffallen.

 

ECC Ram ist verbaut.

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

BTRFS ist nicht Stable.

Das stimmt nicht ganz. RAID5/6 für Metadaten ist nicht Stable, aber RAID5/6 für Daten plus RAID1 für Metadaten schon. Aus dem Grund ist das auch die Standardkonfiguration von Unraid. Da Metadaten noch lange nicht so viel Platz wie Daten belegen, ist das auch nicht so schlimm, wenn die Metadaten auf allen Platten verteilt werden.

 

1 hour ago, Ceiber3 said:

SHR mit BTRFS kann beides

Jein. Synology nutzt kein BTRFS RAID, sondern mdadmin und ein unbekanntes Checksummen-Konzept. Aus dem Grund werden auch nicht alle Dateien geschützt. Das ist aber von Synology auch sehr kryptisch formuliert. zB hier in der FAQ steht, dass es nur pro Ordner einen Schutz gibt:

https://www.synology.com/de-de/knowledgebase/DSM/tutorial/Storage/How_to_enable_file_self_healing_on_DSM

 

 

Es gibt da diverse Einschränkungen:

Quote

Die Datei-Selbstreparaturfunktion ist für die folgenden Bedingungen nicht verfügbar:

- Während einer Reparatur oder Paritäts-Konsistenzprüfung eines Volumes oder Speicherpools.

- Fehlerhaftes Volume.

 -Auf VDSM oder VMM gespeicherte Daten.

 

 

So richtig schlau bin ich da nie draus geworden. Das ist auf jeden Fall nichts was BTRFS leistet, denn wie gesagt nutzt Synology nur eine Single BTRFS Partition, also kein BTRFS RAID mit Self-Healing.

 

Dazu kommt, dass die meisten Synos gar keinen ECC RAM besitzen, was die Sache sowieso witzlos macht.

 

 

1 hour ago, Ceiber3 said:

Eigentlich ist XFS Perfekt für mich, wenn es irgendwie Bitrot erkennen könnte und die Defekten Datein fixen könnte.

Erkennen und Korrektur passiert beim Parity Check. Wenn es da zu Fehlern kommt, steigt der Error Counter. Hier ein Beispiel wo Errors immer Null ist:

2113993950_2021-05-1911_20_12.png.252c61fe044c0bf5863e9f72a31758d6.png

 

Erst wenn es Error gäbe, hätte es auch einen Bitrot gegeben. Allerdings muss man dazu sagen, dass bei Fehlern die Meldungen in den Logs sehr kryptisch sind, da sie nur die betroffenen Sektoren ausgeben und keine Dateinamen. Da müsste man also selbst Hand anlegen. Allerdings hatte ich noch nie Error, also auch noch nie Bitrot. Ich hatte nur mal eine defekte Platte und die wird dann ja mit der Parität wiederhergestellt. Schlussendlich bin ich dann sogar noch mal hingegangen und habe die Checksummen mit meinem Backup verglichen. Aber war alles sauber.

 

 

 

  • Thanks 1
Link to comment

Ok, also meinst du XFS ist recht Save ? Mein Haupt-Speicher-System läuft XPEN in einem ESXI Server mit durchgereichten HBA wegen unterschiedlich große Festplatten + Bitrot erkennung und Reperatur.

Auf mein zweit System lief erst ESXI, mega unzufrieden. USB Geräte durchreichen sind da der Horror. Dann UnRaid, eigentlich recht zufrieden, aber auch da hatte ich ein kleines Problem. Und jetzt wieder Nativ Windows mit PoolDrive und Snapraid der über .bat Datein automatisch sync usw durchführt.

 

Ich bin aber noch immer am überlegen was besser ist. UnRaid XFS und Windows VM zum Zocken und Rendern oder Windows Nativ.

 

Zu meinen Problem in UnRaid, vielleicht kannst du mir da helfen. Ich hatte am anfang die Windows VM mit Virto Treiber installiert und wollte dann später eine weitere Virto Festplatte hinzufügen. Diese wurde auch in Windows 10 erkannt, ich konnte diese aber nicht Formatieren. Da ist immer ne Error Meldung gekommen.

 

Hier mal meine System Spec vom Backup/Render/Zocker System.

 

CPU: Ryzen 9 5900X

Mainboard: AsRock Creator X570

Arbeitsspeicher: 2x 16 GB 3600 Mhz DDR4 ECC die im Multi-Bit Modus laufen.

Netzteil: Corsair AX860i

GPU: RTX3090

HBA: LSI 2008 für 5x 10 TB IronWolf

2x PCIe Nvme: Samung Evo 970 1 TB und Samsung PM9A1 2 TB.

1x Pcie Nvme USB: Intel 760P 512 GB.

USV: CyberPower PFC Sinewave Series 1500VA

 

 

 

Edited by Ceiber3
Link to comment
14 minutes ago, Ceiber3 said:

Ok, also meinst du XFS ist recht Save ?

Der Punkt ist eher, dass Bitrot schon extrem unwahrscheinlich ist. Bedenke, dass Bitrot nicht gleich Bitrot ist. Wenn auf einer HDD ein Bit kippt und das tut es bestimmt mal, wird das durch den ECC des Sektors selbst repariert. Erst wenn zu viele Bits kippen, so dass diese Reparatur nicht mehr möglicht ist bzw ganze Sektoren hinüber gehen, kommt eine Selbstheilung des Dateisystems ins Spiel. Bei einem Parity-Check würde diese Fehler dann auftauchen. Allerdings weiß man dann noch nicht welche Datei genau betroffen ist.

 

Ich mache das sogar noch mal anders. Ich sichere mit rsync. rsync nutzt standardmäßig Datum und Größe. Auf dem Ziel erstellt rsync nur Hardlinks, wenn sich diese nicht geändert haben. 1x pro Monat lasse ich dann rsync mit Checksum laufen. Das Log dieses Backups muss leer sein, ansonsten hätte ich Bitrot. Ist also vom Prinzip ziemlich einfach.

 

Natürlich könnte ich stattdessen auch ein selbstheilendes ZFS / BTRFS RAID haben, aber das würde bei mir 24/7 laufen, was einen entsprechend hohen Stromverbrauch zur Folge hätte. Außerdem wäre die Performance durch die Write-Amplification von CoW Dateisystemen schlechter und das Mixen von unterschiedlich großen HDDs und schnell mal eine andere dazu packen oder entfernen, gar nicht denkbar. Eben all diese Sachen, warum ich von Syno zu Unraid gewechselt habe 😉

 

17 minutes ago, Ceiber3 said:

Zu meinen Problem in UnRaid, vielleicht kannst du mir da helfen. Ich hatte am anfang die Windows VM mit Virto Treiber installiert und wollte dann später eine weitere Virto Festplatte hinzufügen. Diese wurde auch in Windows 10 erkannt, ich konnte diese aber nicht Formatieren. Da ist immer ne Error Meldung gekommen.

Bei sowas am besten einen neuen Thread aufmachen und mit Screenshots das Problem beschreiben. Es gibt hier genug User, die sich mit VMs beschäftigen. Ich weniger. Ich teste damit meistens nur Software oder habe nur ganz simple Clients am laufen. Ich mache also nichts mit GPUs oder mehreren HDDs rum. Beim Rendern würde ich vermutlich eh eine Quad M.2 Karte in den ersten Slot packen und die 1 bis 2 M.2 an die VM durchschleifen und nichts mit virtuellen Disks rumfummeln. Einfach um die maximale Performance rauszuholen.

 

 

 

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.