Ich habe 36 * 4 TB HDD SAN Rack. Der RAID-Controller unterstützte RAID60 nicht und nicht mehr als 16 Festplatten in einer RAID-Gruppe. Also habe ich beschlossen, 2 RAID6-Gruppen mit 16HDD oder 4 von 8 HDDs zu erstellen. Ich möchte den gesamten Speicher als eine Partition erhalten.
Was könnte also schief gehen, wenn ich zfs pool auf Hardware-RAID6 verwende? Ja, ich weiß, dass es dringend empfohlen wird, native Festplatten oder den Pass-Through-Modus zu verwenden. Aber ich habe diese Option nicht.
Oder sollte ich mich in dieser Situation von ZFS und Software-Raids fernhalten? (Ich interessiere mich hauptsächlich für Komprimierung und Schnappschüsse)
storage
zfs
storage-area-network
hardware-raid
Severgun
quelle
quelle
Antworten:
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.
quelle
Okay, ich werde beißen ...
Dies ist die falsche Hardware für die Anwendung. Das DotHill-Setup unterliegt denselben Einschränkungen wie ein HP StorageWorks MSA2000 / P2000, da nur 16 Laufwerke in einer einzelnen Array-Gruppierung verwendet werden können.
ZFS auf Hardware-RAID oder einer exportierten SAN-LUN ist nicht unbedingt ein Problem.
Das Striping von ZFS-LUNs über unbekannte Verbindungen über das Erweiterungsgehäuse kann jedoch ein gewisses Risiko mit sich bringen.
Im Ernst, es kann sich lohnen zu prüfen, ob Sie den gesamten Speicher in einem einzigen Namespace benötigen ...
Wenn Sie diese Art von Kapazität in einer einzigen Halterung benötigen, sollten Sie ein dediziertes HBA-angeschlossenes JBOD-Gehäuse und möglicherweise mehrere Headunits mit stabiler Verkabelung und einem intelligenteren Layout verwenden.
quelle
Sie sollten alle Laufwerke DIREKT an eine Box anschließen, auf der ZFS ausgeführt wird. Holen Sie sich einen SAS-HBA und verbinden Sie die Laufwerke mit der ZFS-fähigen Box (z. B. mit OmniOS oder SmartOS). Sie können den Speicherplatz dann über NFS, SMB, iScsi ...
quelle
Der Grund, warum ZFS über logischen HW-RAID-Volumes liegt, ist eine SEHR SCHLECHTE Idee, da ZFS Zugriff auf Blockebene benötigt, um tatsächlich ordnungsgemäß zu funktionieren. Ja, es kann verwendet werden, aber die Funktionalität ist erst dann vollständig, wenn Sie Laufwerke über einen HBA oder direkte SATA-Verbindungen direkt an das Betriebssystem anschließen. Ein Beispiel ist, dass ZFS in der von Ihnen vorgeschlagenen Konfiguration Ihre Daten nicht angemessen vor Änderungen der folgenden Daten (auf der anderen Seite des HW-RAID-Controllers) schützen kann und daher die Sicherheit Ihrer Daten nicht gewährleisten kann . Dies ist einer der Hauptgründe, warum ZFS verwendet wird, und es ist außerdem superschnell.
ZFS ist eine großartige Technologie, und ich kann sie nur empfehlen. Sie müssen Ihre Struktur hier jedoch erneut überprüfen, um sie korrekt verwenden zu können. ZFS muss nämlich die logischen Volumes (vdevs) direkt von den Festplatten erstellen.
Es hört sich so an, als müssten Sie noch viel mehr über die Funktionsweise von ZFS lesen, bevor Sie genau verstehen können, was Sie vorgeschlagen haben, im Gegensatz zu dem, was stattdessen wirklich getan werden sollte.
quelle