Also habe ich beschlossen, 2 RAID6-Gruppen mit 16HDD oder 4 von 8 HDDs zu erstellen.
Das ist nicht der beste Weg, Dinge zu tun. Es funktioniert möglicherweise gut genug, hängt jedoch möglicherweise nicht von Ihren Leistungsanforderungen ab.
Die ideale Größe für ein RAID5 / 6-Array ist so, dass ein genaues Vielfaches der Datenmenge, die das Array "überspannt", mit der Blockgröße des darauf aufgebauten Dateisystems übereinstimmt.
RAID5 / 6-Arrays arbeiten als Blockgeräte - ein einzelner Datenblock überspannt die Festplatten im Array, und dieser Block enthält auch Paritätsdaten. Die meisten RAID-Controller schreiben einen Datenblock mit einer Größe von zwei auf jede Festplatte im Array, deren genauer Wert in besseren RAID-Systemen konfiguriert werden kann, und Ihre Dot Hill-Einheit ist eines dieser "besseren RAID-Systeme". Das ist wichtig.
Es dauert also N x (Datenmenge, die pro Plattenblock gespeichert ist), um das Array zu überspannen, wobei N die Anzahl der Datenplatten ist. Ein RAID5-Array mit 5 Festplatten verfügt über 4 "Daten" -Datenträger, und ein RAID6-Array mit 10 Laufwerken verfügt über 8 Datenfestplatten.
Denn wenn Daten in ein RAID5 / 6-Array geschrieben werden und der Datenblock so groß ist, dass er das gesamte Array umfasst, wird die Parität für diese Daten berechnet - normalerweise im Speicher des Controllers - und dann wird der gesamte Streifen in das RAID5 / 6-Array geschrieben Platte. Einfach und schnell.
Was muss der RAID-Controller tun, um die neuen Paritätsdaten zu berechnen, wenn der zu schreibende Datenblock nicht groß genug ist, um das gesamte Array zu überspannen? Denken Sie darüber nach - es werden alle Daten im gesamten Streifen benötigt, um die neuen Paritätsdaten neu zu berechnen.
Wenn Sie also ein RAID6-Array mit 16 Laufwerken mit dem Standardblock pro Festplatte von 512 KB erstellen, bedeutet dies, dass 7 MB erforderlich sind, um das Array zu "überspannen".
ZFS arbeitet im Allgemeinen in 128-KB-Blöcken.
ZFS schreibt also einen 128-KB-Block - in ein RAID6-Array mit 16 Laufwerken. In der von Ihnen vorgeschlagenen Konfiguration bedeutet dies, dass der RAID-Controller fast 7 MB aus dem Array lesen und die Parität über diese 7 MB neu berechnen muss. Schreiben Sie dann die gesamten 7 MB zurück auf die Festplatte.
Wenn Sie Glück haben, befindet sich alles im Cache und Sie erzielen keinen großen Leistungseinbruch. (Dies ist ein Hauptgrund, warum die Position "RAID5 / 6 nicht verwenden" eine solche Anhängerschaft hat - RAID1 [0] leidet nicht darunter.)
Wenn Sie Pech haben und Ihre Dateisystempartitionen nicht richtig ausgerichtet haben, umfasst dieser 128-KB-Block zwei RAID-Streifen, die sich nicht im Cache befinden, und der Controller muss 14 MB lesen, die Parität neu berechnen und dann 14 MB schreiben. Alle, um einen 128-KB-Block zu schreiben.
Das muss logisch geschehen . Es gibt viele Optimierungen, die gute RAID-Controller vornehmen können, um die E / A und die Rechenlast solcher E / A-Muster zu reduzieren. Daher ist dies möglicherweise nicht so schlimm.
Unter der hohen Last, 128-KB-Blöcke an zufällige Speicherorte zu schreiben, besteht jedoch eine gute Chance, dass die Leistung eines RAID6-Arrays mit 16 Laufwerken und einer Stripe-Größe von 7 MB absolut schrecklich ist.
Für ZFS hätten die "idealen" zugrunde liegenden RAID5 / 6-LUNs für ein Allzweck-Dateisystem, bei dem die meisten Zugriffe effektiv zufällig sind, eine Stripe-Größe, die einen geraden Teiler von 128 KB aufweist, z. B. 32 KB, 64 KB oder 128 KB. In diesem Fall wird die Anzahl der Datenfestplatten in einem RAID5 / 6-Array auf 1 begrenzt (was unsinnig ist - auch wenn die Konfiguration möglich ist, ist es besser, nur RAID1 [0] zu verwenden), 2, 4 oder 8. Beste Leistung Im besten Fall wäre es, eine Stripe-Größe von 128 KB für die RAID5 / 6-Arrays zu verwenden. Im besten Fall kommt dies jedoch nicht häufig in Allzweck-Dateisystemen vor - häufig, weil Dateisysteme keine Metadaten wie diese speichern Dateidaten speichern.
Ich würde empfehlen, entweder RAID5-Arrays mit 5 Festplatten oder RAID6-Arrays mit 10 Festplatten einzurichten, wobei die Blockgröße pro Festplatte so klein eingestellt ist, dass die Datenmenge für einen gesamten Array-Streifen 64 KB beträgt (ja, ich habe dies getan vorher für ZFS - viele Male). Dies bedeutet, dass für ein RAID-Array mit 4 Datenfestplatten die Blockgröße pro Festplatte 16 KB betragen sollte, während für ein RAID-Array mit 8 Datenfestplatten die Blockgröße pro Festplatte 8 KB betragen sollte.
Dann lassen Sie ZFS die verwenden gesamte Array - Sie nicht partitionieren. ZFS richtet sich ordnungsgemäß an einem gesamten Laufwerk aus, unabhängig davon, ob es sich bei dem Laufwerk um eine einfache einzelne Festplatte oder ein RAID-Array handelt, das von einem RAID-Controller bereitgestellt wird.
In diesem Fall und ohne Kenntnis Ihrer genauen Speicherplatz- und Leistungsanforderungen würde ich empfehlen, drei RAID6-Arrays mit 10 Laufwerken oder sechs RAID5-Arrays mit 5 Laufwerken und einer Streifengröße von 64 KB einzurichten, ein paar Hotspares zu konfigurieren und vier Ihrer Ersatzteile zu speichern Festplatten für alles, was in Zukunft auftaucht. Weil etwas wird.
Ich würde dieses Festplattensystem mit Sicherheit nicht im JBOD-Modus verwenden - es ist ein vollständig NEBS Level 3-kompatibles Gerät , das einen erheblichen Zuverlässigkeits- und Verfügbarkeitsschutz bietet, der direkt in die Hardware integriert ist. Werfen Sie das nicht weg, nur weil "ZFS !!!!". Wenn es sich um ein billiges Stück Hardware handelt, das Sie aus Teilen zusammengesetzt haben? Ja, der JBOD-Modus mit ZFS, der das RAID handhabt, ist am besten - aber das ist NICHT die Hardware, die Sie haben. NUTZEN Sie die Funktionen der Hardware.