Best Practices für ZFS mit Hardware-RAID

30

Ist es jemals ratsam, ZFS auf einem hardwarebasierten RAID1 oder auf einem anderen RAID1-System auszuführen, wenn zufällig Hardware auf Serverbasis zur Verfügung steht? Sollte man das hardwarebasierte RAID ausschalten und stattdessen ZFS auf einem mirroroder einem ausführen raidz zpool?

Verbergen Hardware-RAID-basierte SATA2- und SAS-Controller bei deaktivierter Hardware-RAID-Funktionalität mit größerer Wahrscheinlichkeit Lese- und Schreibfehler als Nicht-Hardware-RAID-Controller?

In Bezug auf nicht anpassbare Server, wenn ein Hardware-RAID-Controller effektiv kostenneutral ist (oder sogar die Kosten für das vorgefertigte Serverangebot senkt, da seine Präsenz die Wahrscheinlichkeit erhöht, dass das Hosting-Unternehmen komplementäres IPMI bereitstellt Zugang), sollte es überhaupt vermieden werden? Aber sollte es gesucht werden?

cnst
quelle
2
Mögliches Duplikat von ZFS über Hardware Mirroring oder nur Spiegeln in ZFS?
Shane Madden
2
@ ShaneMadden, die Fragen sind ähnlich, aber meine Frage kommt bereits aus der Perspektive, dass Hardware-Raids in Bezug auf ZFS schlecht sind, und ich frage, wie schlecht es ist. Beachten Sie auch, dass die akzeptierte Antwort auf Ihre verknüpfte Frage meine Frage überhaupt nicht beantwortet. Meine Frage ist eher eine Folgefrage zu der Frage, die Sie verlinkt haben.
10.
"ZFS über Hardware Mirroring oder nur in ZFS spiegeln?" und diese frage sind zwei verschiedene themen. Dieses andere Thema hat einen engeren Umfang als dieses Thema.
Stefan Lasiewski
@ewwhite, hast du das nicht schon gefragt?
21.
@cnst Nun, es gibt keine markierte Antwort und die Leute stimmen meine Antwort immer wieder ab. Es wäre also schön, wenn die gestellte Frage geschlossen würde. ( Es ist die verantwortliche Sache zu tun )
ewwhite

Antworten:

17

Die Idee mit ZFS ist es, so viel wie möglich darüber zu informieren, wie sich die Festplatten verhalten. Dann vom Schlimmsten zum Besseren:

  • Hardware Raid (ZFS hat absolut keine Ahnung von der realen Hardware),
  • JBOD-Modus (Das Problem ist, dass es mehr um potenzielle Expander geht: weniger Bandbreite),
  • Ideal ist der HBA-Modus (ZFS weiß alles über die Festplatten)

Da ZFS in Bezug auf Hardware ziemlich paranoid ist, kann es Hardwareprobleme umso mehr bewältigen, je weniger versteckt es ist. Und wie von Sammitch herausgestellt , können RAID-Controller-Konfigurationen und ZFS möglicherweise nur sehr schwer wiederhergestellt oder neu konfiguriert werden, wenn sie ausfallen (z. B. Hardwarefehler).

Bei der Frage nach standardisierter Hardware mit einem Hardware-RAID-Controller muss lediglich darauf geachtet werden, dass der Hardware-Controller über einen echten Pass-Through- oder JBOD-Modus verfügt.

Ouki
quelle
10
Wenn Sie HW-RAID verwenden und Ihr Controller ausfällt [passiert mehr als Sie denken], können Sie keinen Ersatz erhalten, der entweder identisch oder vollständig kompatibel ist. Auf der anderen Seite können Sie, wenn Sie die Raw-Festplatten an ZFS übergeben haben, diese Festplatten wieder an einen beliebigen Controller auf einer beliebigen Maschine anschließen und ZFS kann das Array rekonstruieren und so weitermachen, als wäre nichts passiert.
Sammitch
1
High-End-Server verfügen normalerweise über integrierte RAID-Controller. Ich musste zum Beispiel noch nie einen Controller auf einem HP- oder Dell-System ersetzen.
Ewwhite
2
Diese Antwort beantwortet nichts. Es drückt nur die voreingenommene Meinung aus, dass der Anbieter der Server-Hardware und der ZFS-Programmierer einen besseren Job gemacht haben als der Anbieter des RAID-Controllers und der Programmierer der RAID-Firmware. Die FreeNAS-Community ist voll von Leuten, die ihre Zpools mit fehlerhaftem Serverspeicher oder ungeeigneten Netzteilen getötet haben. Die Wahrscheinlichkeit, dass etwas Großes versagt, ist höher als etwas Kleines.
21.
14

Frage: Wenn zufällig Hardware auf Server-Ebene zur Verfügung steht, ist es jemals ratsam, ZFS auf einem hardwarebasierten RAID1 oder einem solchen auszuführen?

A. Es wird dringend empfohlen, ZFS direkt auf der Festplatte auszuführen und dazwischen keine Form von RAID zu verwenden. Ob ein System, bei dem Sie die RAID-Karte effektiv einsetzen müssen, die Verwendung von ZFS ausschließt, hat mehr mit den ANDEREN Vorteilen von ZFS zu tun als mit der Ausfallsicherheit von Daten. Fazit: Wenn eine zugrunde liegende RAID-Karte für die Bereitstellung einer einzelnen LUN für ZFS verantwortlich ist, wird ZFS die Datenausfallsicherheit nicht verbessern. Wenn der einzige Grund, warum Sie sich für ZFS entscheiden, die Verbesserung der Datenausfallsicherheit ist, haben Sie einfach alle Gründe für die Verwendung verloren. ZFS bietet jedoch auch ARC / L2ARC, Komprimierung, Snapshots, Klone und verschiedene andere Verbesserungen, die Sie möglicherweise auch wünschen. In diesem Fall ist es möglicherweise immer noch das Dateisystem Ihrer Wahl.

F. Sollte man das hardwarebasierte RAID deaktivieren und stattdessen ZFS auf einem Spiegel oder einem RAIDZ-Pool ausführen?

A. Ja, wenn überhaupt möglich. Einige RAID-Karten erlauben den Pass-Through-Modus. Wenn dies der Fall ist, ist dies vorzuziehen.

F. Verbergen Hardware-RAID-basierte SATA2- und SAS-Controller bei deaktivierter Hardware-RAID-Funktionalität mit größerer Wahrscheinlichkeit Lese- und Schreibfehler als Nicht-Hardware-RAID-Controller?

A. Dies hängt vollständig von der betreffenden RAID-Karte ab. Sie müssen das Handbuch durchlesen oder sich an den Hersteller / Lieferanten der RAID-Karte wenden, um dies herauszufinden. Einige tun sehr viel, ja, besonders wenn die RAID-Funktionalität sie nicht vollständig ausschaltet.

F: Bei nicht anpassbaren Servern ist ein Hardware-RAID-Controller kostengünstig (oder senkt sogar die Kosten für das vorgefertigte Serverangebot), da seine Präsenz die Wahrscheinlichkeit erhöht, dass das Hosting-Unternehmen bereitstellt komplementärer IPMI-Zugang), sollte dies überhaupt vermieden werden? Aber sollte es gesucht werden?

A. Dies ist ungefähr dieselbe Frage wie Ihre erste. Auch hier gilt: Wenn Sie ZFS nur verwenden möchten, um die Ausfallsicherheit der Daten zu verbessern, und für die von Ihnen ausgewählte Hardwareplattform eine RAID-Karte erforderlich ist, die ZFS eine einzelne LUN (oder mehrere LUNs, die jedoch mit ZFS-Stripe versehen sind) bereitstellt, müssen Sie dies tun nichts, um die Datenausfallsicherheit zu verbessern, und daher ist Ihre Wahl von ZFS möglicherweise nicht angemessen. Wenn Sie jedoch eine der anderen ZFS-Funktionen für nützlich halten, kann dies dennoch der Fall sein.

Ich möchte ein zusätzliches Anliegen hinzufügen - die obigen Antworten beruhen auf der Idee, dass die Verwendung einer Hardware-RAID-Karte unter ZFS ZFS nur schadet, wenn die Fähigkeit zur Verbesserung der Datenausfallsicherheit entfernt wird. Die Wahrheit ist, dass das eher eine Grauzone ist. Es gibt verschiedene Probleme und Annahmen innerhalb von ZFS, die nicht unbedingt funktionieren, wenn Multi-Disk-LUNs anstelle von Raw-Disks übergeben werden. Das meiste davon kann mit der richtigen Abstimmung negiert werden, aber auf großen RAID-LUNs ist ZFS nicht so effizient wie auf einzelnen Spindeln.

Darüber hinaus gibt es Hinweise darauf, dass die sehr unterschiedliche Art und Weise, in der ZFS im Gegensatz zu herkömmlichen Dateisystemen mit LUNs kommuniziert, häufig Codepfade im RAID-Controller und Workloads aufruft, an die sie nicht gewöhnt sind, was zu Kuriositäten führen kann. Vor allem tun Sie sich wahrscheinlich selbst einen Gefallen, indem Sie die ZIL-Funktionalität für jeden Pool, den Sie auf einer einzelnen LUN platzieren, vollständig deaktivieren, wenn Sie nicht auch ein separates Protokollgerät bereitstellen Stellen Sie dem Pool ein separates Raw-Protokoll-Gerät zur Verfügung (das nach Möglichkeit keine LUN von der RAID-Karte ist).

Nex7
quelle
9

Ich führe ZFS ziemlich oft über HP ProLiant Smart Array RAID-Konfigurationen aus.

Warum?

  • Weil ich ZFS für Datenpartitionen mag, nicht für Bootpartitionen.
  • Weil Linux- und ZFS-Boot für mich momentan wahrscheinlich nicht narrensicher genug ist.
  • Weil HP RAID-Controller das Durchleiten von RAW-Geräten nicht zulassen . Das Konfigurieren mehrerer RAID 0-Volumes ist nicht dasselbe wie bei RAW-Datenträgern.
  • Da Server-Backplanes in der Regel nicht flexibel genug sind, um Laufwerksschächte einem bestimmten Controller zuzuweisen oder die Aufgaben zwischen zwei Controllern aufzuteilen. In diesen Tagen werden am häufigsten Konfigurationen mit 8 und 16 Einschüben angezeigt. Nicht immer genug, um die Dinge so zu segmentieren, wie sie sein sollten.
  • Aber ich mag immer noch die Volume-Management-Funktionen von ZFS. Mit dem Zpool kann ich Dinge dynamisch aufteilen und den verfügbaren Speicherplatz optimal nutzen.
  • Komprimierung, ARC und L2ARC sind Killer-Features!
  • Ein ordnungsgemäß entwickeltes ZFS-Setup auf einem Hardware-RAID bietet weiterhin gute Warn- und Fehlerbenachrichtigungen, übertrifft jedoch die reine Hardwarelösung.

Ein Beispiel:

RAID-Controller-Konfiguration.

[root@Hapco ~]# hpacucli ctrl all show config

Smart Array P410i in Slot 0 (Embedded)    (sn: 50014380233859A0)

   array B (Solid State SATA, Unused Space: 250016  MB)
      logicaldrive 3 (325.0 GB, RAID 1+0, OK)

      physicaldrive 1I:1:3 (port 1I:box 1:bay 3, Solid State SATA, 240.0 GB, OK)
      physicaldrive 1I:1:4 (port 1I:box 1:bay 4, Solid State SATA, 240.0 GB, OK)
      physicaldrive 2I:1:7 (port 2I:box 1:bay 7, Solid State SATA, 240.0 GB, OK)
      physicaldrive 2I:1:8 (port 2I:box 1:bay 8, Solid State SATA, 240.0 GB, OK)

Geräteliste blockieren

[root@Hapco ~]# fdisk  -l /dev/sdc

Disk /dev/sdc: 349.0 GB, 348967140864 bytes
256 heads, 63 sectors/track, 42260 cylinders
Units = cylinders of 16128 * 512 = 8257536 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
Disk identifier: 0x00000000

   Device Boot      Start         End      Blocks   Id  System
/dev/sdc1               1       42261   340788223   ee  GPT

zpool Konfiguration

[root@Hapco ~]# zpool  list
NAME   SIZE  ALLOC   FREE    CAP  DEDUP  HEALTH  ALTROOT
vol1   324G  84.8G   239G    26%  1.00x  ONLINE  -

Pool Detail

  pool: vol1
 state: ONLINE
  scan: scrub repaired 0 in 0h4m with 0 errors on Sun May 19 08:47:46 2013
config:

        NAME                                      STATE     READ WRITE CKSUM
        vol1                                      ONLINE       0     0     0
          wwn-0x600508b1001cc25fb5d48e3e7c918950  ONLINE       0     0     0

Auflistung des zfs-Dateisystems

[root@Hapco ~]# zfs list
NAME             USED  AVAIL  REFER  MOUNTPOINT
vol1            84.8G   234G    30K  /vol1
vol1/pprovol    84.5G   234G  84.5G  -
ewwhite
quelle
In Bezug auf die geschlossene Frage, mit der Sie verknüpft sind, heißt das, dass ich, wenn ich ZFS verwenden möchte, zum Beispiel Dell PERC H200 und HP P410 besser meiden sollte? Können sie den Hardware-RAID-Modus immer noch nicht deaktivieren, sei es RAID0 oder RAID1?
10.
So scheint es , wie dell.com/learn/us/en/04/campaigns/dell-raid-controllers tut Behauptung , dass H200 „Unterstützt nicht-RAID“, obwohl h18004.www1.hp.com/products/servers/proliantstorage/ … Ist nicht ganz klar, ob die Raid-Funktionalität von P410 ausgeschaltet werden kann oder nicht.
10.
@cnst Sie können die RAID-Funktionalität eines HP Smart Array P410 nicht deaktivieren.
Ewwhite
Stimmt es noch? Wollen Sie damit sagen, dass es bei einem Hardware-Raid kein gefährliches ZFS gibt?
spärlich
Richtig. Es ist nicht gefährlich.
ewwhite
5

Normalerweise sollten Sie ZFS niemals auf Festplatten ausführen, die in einem RAID-Array konfiguriert sind. Beachten Sie, dass ZFS nicht im RAID-Modus ausgeführt werden muss. Sie können nur einzelne Datenträger verwenden. Nahezu 99% der Benutzer verwenden jedoch ZFS für den RAID-Teil. Sie könnten Ihre Datenträger nur im Striping-Modus ausführen, aber das ist eine schlechte Verwendung von ZFS. Wie andere Poster bereits sagten, möchte ZFS viel über die Hardware wissen. ZFS sollte nur mit einer RAID-Karte verbunden werden, die auf den JBOD-Modus eingestellt werden kann, oder vorzugsweise mit einem HBA. Gehe auf den IRC-Freenode-Kanal #openindiana; Jeder ZFS-Experte im Channel wird Ihnen dasselbe sagen. Bitten Sie Ihren Hosting-Provider, den JBOD-Modus bereitzustellen, wenn er keinen HBA bereitstellt.

chris
quelle
1
Ja ich stimme zu. Es kommt aber auch darauf an, was in der Konfiguration, die der Rechnung und der Spezifikation entspricht, auf Lager ist. Wenn ein Server eine große CPU, viel ECC-RAM, eine große Bandbreite und viel davon hat, aber ein hardwarebasiertes RAID benötigt, ist es möglicherweise nicht kosteneffektiv, nach Alternativen zu suchen, die um ein Vielfaches teurer sein können. Aufgrund der
Zugehörigkeit zu
2

Kurz gesagt: Die Verwendung von RAID unter ZFS macht die Idee der Verwendung von ZFS zunichte. Warum? - Weil es für reine Festplatten und nicht für RAIDs ausgelegt ist.

Poige
quelle
1
Nicht unbedingt. Was ist, wenn mir die Flexibilität der Datenträgerverwaltung wichtiger ist als die Optimierung des Zugriffs auf physische Geräte. ZFS funktioniert für meinen Anwendungsfall ganz gut.
Ewwhite
3
@ewwhite, na ja, jemand kann Fahrrad fahren, wenn er in der Nähe ist, und sagt, dass er gerne spazieren geht und Fahrräder im Allgemeinen liebt, aber die Wahrheit ist, dass Fahrräder dafür gemacht sind, darauf gefahren zu werden. )
12.
2

Für euch alle ... ZFS über jeden Raid ist ein totaler SCHMERZ und wird nur von MAD-Leuten durchgeführt! ... wie die Verwendung von ZFS mit nicht ECC-Speicher.

Mit Beispielen werden Sie besser verstehen:

  • ZFS über Raid1, eine Festplatte hat sich ein wenig geändert, als sie nicht ausgeschaltet war ... alles was Sie wissen, wird ZFS je nach eingelesener Festplatte einen Schaden feststellen oder auch nicht (der Raid-Controller hat das Bit nicht geändert und hält beide Festplatten für in Ordnung ) ... wenn der Fehler im VDEV-Teil liegt ... verliert der gesamte ZPOOL für immer alle seine Daten.
  • ZFS über Raid0, eine Festplatte hat sich ein wenig geändert, als sie nicht ausgeschaltet war ... alles was Sie wissen, (Der Raid-Controller hat das Bit nicht geändert und denkt, dass beide Festplatten in Ordnung sind) ... ZFS wird diesen Schaden sehen, aber wenn die fail ist im VDEV Teil ... das ganze ZPOOL verliert für immer alle seine Daten.

Wo ZFS gut ist, liegt in der Erkennung von Bits, die sich geändert haben, wenn die Festplatte stromlos ist (RAID-Controller können das nicht), auch wenn sich etwas ändert, ohne dazu aufgefordert zu werden usw.

Es ist das gleiche Problem wie wenn sich ein Bit in einem RAM-Modul spontan ändert, ohne dazu aufgefordert zu werden ... Wenn der Speicher ECC ist, korrigiert sich der Speicher selbst; Wenn nicht, haben sich diese Daten geändert, sodass die Daten modifiziert an die Festplatten gesendet werden. Wenn der Fehler im VDEV-Teil liegt, verliert der gesamte ZPOOL für immer alle seine Daten.

Das ist eine Schwachstelle von ZFS ... VDEVs schlagen fehl, wenn alle Daten für immer verloren gehen.

Hardware Raid und Software Raid können keine spontanen Bitänderungen erkennen, sie haben keine Prüfsummen, am schlechtesten auf Raid1-Ebenen (Mirros), sie lesen nicht alle Teile und vergleichen sie, sie nehmen an, dass alle Teile immer die gleichen Daten haben, ALLWAYS (ich sage) es laut) Raid geht davon aus, dass sich Daten nicht auf andere Weise geändert haben ... aber Festplatten (als Speicher) sind anfällig für spontane Bitänderungen.

Verwenden Sie niemals ein ZFS auf einem Nicht-ECC-RAM und niemals ZFS auf überfallenen Festplatten. Lassen Sie ZFS alle Festplatten sehen und fügen Sie keine Schicht hinzu, die Ihr VDEV und Ihren POOL ruinieren kann.

So simulieren Sie einen solchen Fehler ... schalten Sie den PC aus, nehmen Sie eine Festplatte des Raid1 heraus und ändern Sie nur ein Bit ... rekonstruieren Sie und sehen Sie, wie der Raid-Controller nicht wissen kann, dass sich das geändert hat ... ZFS kann, weil alle Lesevorgänge getestet werden gegen die Prüfsumme und wenn nicht übereinstimmen, lesen Sie aus einem anderen Teil ... Raid nie wieder lesen, weil ein Fehler (außer Hardware unmöglich lesen schlägt fehl) ... wenn Raid lesen kann, denken, dass Daten in Ordnung sind (aber es ist nicht in solchen Fällen ) ... Raid versuche nur von einer anderen Platte zu lesen, wenn dort steht "hey, ich kann nicht von dort lesen, Hardware fällt aus" ... ZFS von einer anderen Platte lesen, wenn die Prüfsumme nicht so gut passt wie dort, wo sie liest sagt "hey, ich kann von dort nicht lesen, Hardware fällt aus".

Hoffe, ich lasse es sehr deutlich werden ... ZFS über jedes Level von Raid ist ein Schmerz in den Augen und ein totales Risiko für Ihre Daten! sowie ZFS auf Nicht-ECC-Speichern.

Aber niemand sagt (außer mir):

  • Verwenden Sie keine Festplatten mit internem Cache (nicht nur die SHDDs, auch einige mit 8Mib bis 32MiB Cache usw.). Einige von ihnen verwenden für diesen Cache Nicht-ECC-Speicher
  • Verwenden Sie nicht SATA NCQ (eine Methode zum Schreiben in Warteschlangen), da dies ZFS ruinieren kann, wenn die Stromversorgung unterbrochen wird

Also, welche Festplatten zu verwenden?

  • Jede Festplatte mit interner Batterie, die sicherstellt, dass die gesamte Warteschlange bei Stromausfall auf die Festplatte geschrieben wird und den darin enthaltenen ECC-Speicher verwendet (es gibt leider nur sehr kleine, die all das haben und teuer sind).

Aber hey, die meisten Leute wissen nicht alles und hatten nie ein Problem ... Ich sage ihnen: Wow, wie viel Glück hast du, kaufe ein paar Lottoscheine, bevor das Glück verschwindet.

Die Risiken sind da ... solche Fehler können zufällig auftreten ... die bessere Antwort lautet also:

  • Versuchen Sie, keine Schicht zwischen ZFS und den Speicherort der Daten (RAM, Raid, NCQ, interner Festplatten-Cache usw.) zu legen, wie Sie es sich leisten können.

Was ich persönlich mache?

  • Legen Sie einige Schichten mehr ... Ich verwende jede 2,5 "SATA III 7200 U / min-Festplatte in einem USB 3.1 Gen2 Typ C-Gehäuse. Ich verbinde einige Gehäuse mit einem USB 3.1 Gen 2 Typ A-Hub, den ich mit dem PC verbinde, andere mit einem anderen Hub dass ich eine Verbindung zu einem anderen Root-Port auf dem PC, etc.
  • Für das System verwende ich interne SATA-Konnektoren auf ZFS-Ebene (Raid0-Ebene), da ich ein unveränderliches Linux-System (wie eine LiveCD) verwende, bei dem jeder identische Inhalte auf internen Festplatten bootet ... und ich ein Klon-Image des Systems habe, das ich wiederherstellen kann (weniger als 1GiB System) ... auch ich benutze den Trick, um das System in einer Datei zu haben und verwende ein RAM-zugeordnetes Laufwerk, wo ich es beim Booten klone, so dass nach dem Booten das ganze System im RAM läuft ... solche Datei anzulegen Eine DVD kann auf die gleiche Weise gebootet werden. Wenn also interne Festplatten ausfallen, boote ich einfach mit der DVD und das System ist wieder online. Ein ähnlicher Trick wie bei SystemRescueCD, aber eine etwas komplexere ISO-Datei kann sich auf der CD befinden internes ZFS oder einfach nur die echte DVD sein und ich möchte nicht zwei verschiedene Versionen.

Hoffe, ich könnte ein wenig Licht auf ZFS gegen Raid geben, es ist wirklich ein Schmerz, wenn Dinge schief gehen!

Claudio
quelle
Sie sagen also, dass ZFS so unzuverlässig ist, dass Sie das gesamte Dateisystem verlieren können, wenn sich ein einzelnes Bit ändert? Wie verursacht SATA NCQ Datenverlust, wenn das Laufwerk den Host erst benachrichtigt, wenn die Sektoren erfolgreich geschrieben wurden (wenn auch in einer anderen Reihenfolge)?
Malvineous