Optimale ZFS-Pool-Konfiguration für ein Heim-NAS

1712
Stéphane Goetz

Ich suche nach einem Upgrade für mein Heim-NAS, das ich zum Speichern von Filmen (mit Plex Media Server), Bildern und Backups verwende.

Derzeit befinden sich 5 3-TB-Festplatten in einem raidz1-Pool.

Ich war durch die Anzahl der SATA-Ports begrenzt, aber mit dem Erwerb eines 8-Port-Controllers habe ich jetzt ein Limit von 14 SATA-Ports. (-1 für das System also 13 Ports).

Da ich vorhabe, diesen Server für einige Jahre zu behalten, wollte ich ihn performant und zukunftssicher machen. Daher habe ich gelesen, dass es empfohlen wird, SSDs zum Speichern von ZIL und L2ARC zu verwenden, um die Schreib- und Leseleistung zu verbessern.

Für das ZIL habe ich gelesen, dass ein paar GB ausreichen, aber es wird empfohlen, es zu spiegeln.

Das ist das Setup, über das ich nachgedacht habe:

  • 1 System-SSD
  • 11 Speicherplatten (raidz2)
  • 2 für ZIL / L2ARC in Scheiben geschnittene SSDs (Spiegeln der ZIL und Hinzufügen der beiden anderen Slices für das Caching)

Meine Argumentation bezüglich der in Scheiben geschnittenen SSD lautet:

  • Ich brauche kein schnellstes System, also kann ich die Kompromisse zwischen ZIL und L2ARC akzeptieren, die die IO gemeinsam nutzen
  • Ich habe immer noch den Vorteil, die ZIL zu spiegeln, also sollte ich bei einem Absturz auf Nummer sicher gehen

Die Speicherplatten sind derzeit 3-TB-Laufwerke, und wie ich es verstehe, bedeutet die Gesamtgröße des Pools (numberOfDisks-2)*sizeOfSmallestDisk: (11-2) * 3 TB = 27 TB

Meine Fragen sind also:

  • Ist dieses Setup ausgewogen?
  • Ist es möglich, die SSDs für die Protokolle und den Cache zu schneiden?
  • Ist meine Formel für die Poolgröße korrekt?
  • Kann ich die Festplatten nacheinander durch größere ersetzen und nach deren Aktualisierung den Pool vergrößern? Ersetzen Sie beispielsweise die Festplatten durch 4-TB-Platten und erhalten Sie 36 TB Speicherplatz
  • Funktioniert dies unter Linux? Ich habe derzeit OpenIndiana und möchte auf Ubuntu Server migrieren.

Danke im Voraus.

Meine wichtigsten Inspirationsquellen:

2
Wie viel Speicher hat Ihr System? Für den Heimgebrauch bezweifle ich, dass Sie einen erheblichen Gewinn für einen I2arc erzielen würden. Sie sollten das System wahrscheinlich mit Antrieben in Spiegelpaaren (wie raid10) auffüllen. Das wird schneller als raidzn und wird einfacher zu aktualisieren. Zoredache vor 7 Jahren 0
Welche Art von Backups haben Sie? 11 + 2 für einen RAIDZ2-Pool ist etwas groß und ein Resilver kann lange Zeit in Anspruch nehmen, vorausgesetzt, Sie können sogar den ersten Festplattenausfall ziemlich schnell feststellen und die ausgefallene Festplatte ersetzen. Andrew Henle vor 7 Jahren 0
Ich habe 16 GB RAM für den Moment, ich dachte, ich sollte 32 haben, weiß es aber nicht. Wie würde ich es in Spiegelpaaren machen? Für die Backups habe ich Amazon Glacier für die wichtigen Teile, aber der Server ist bereits das Backup für andere Maschinen, so dass viele Dinge neu erstellt werden können. Sie sagen lange, aber wie viele Stunden / Tage sollte ich erwarten? Stéphane Goetz vor 7 Jahren 0
@ StéphaneGoetz Es hängt von Ihrer aktuellen Auslastung (zusätzliche Treffer verlangsamt Resilver-Vorgänge), der Festplattenleistung (RPM für Festplatten, Schreiben von IOPS für SSDs), Poolfragmentierung, Datenmenge im Pool (bei weitem größter Punkt) und Betriebssystem ab (Solaris hat sequenzielles Resilvering, wodurch es beschleunigt wird, illumos / OpenZFS noch nicht). user121391 vor 7 Jahren 0

1 Antwort auf die Frage

1
user121391

Die meisten Ihrer Punkte sind richtig, deshalb konzentriere ich mich nur auf den Rest:

  1. Die Verwendung eines SLOG-Geräts für das ZIL hilft Ihnen nur bei kleinen synchronisierten Schreibvorgängen. Es ist daher zwingend erforderlich, wenn Sie virtuelle Maschinen darauf speichern möchten, und in den meisten anderen Heimanwendungsfällen, vor allem bei Sicherungen und Streaming-Medien, ziemlich nutzlos. Da Sie es später immer hinzufügen und entfernen können, sollten Sie ohne starten und erst dann hinzufügen, wenn dies erforderlich ist.

  2. L2ARC kann die Leseleistung verbessern, ist jedoch langsamer als der Arbeitsspeicher, benötigt zusätzlichen Arbeitsspeicher und hilft nur, wenn dieselben Daten gelesen werden. Wieder schlecht für das Streamen eines ganzen Films oder von Musik, aber gut, wenn Sie eine Website hosten, auf die häufig zugegriffen wird, oder wenn Hunderte von Benutzern auf Dateifreigaben zugreifen. Als Faustregel gilt: Zuerst sollte der Arbeitsspeicher maximal ausgeschöpft werden (abhängig von der Platine wahrscheinlich 32, 64, 128 oder 256 GB), und dann über L2ARC nachdenken.

  3. ZIL und L2ARC auf demselben Gerät sind normalerweise keine gute Idee, da sich ihre Bedürfnisse direkt widersprechen:

    • ZIL wird ständig für kleine zufällig synchronisierte IO geschrieben (große und sequentielle IO umgehen sie, asynchrone IO verwenden sie überhaupt nicht), was bedeutet, dass Sie eine SSD mit sehr geringer Schreiblatenz wünschen (Intel ist der einzige Anbieter, der ich anbiete. ' Wir haben festgestellt, dass diese Eigenschaft auch für die günstigeren Consumer-SSDs gilt), akzeptable IOPS-Schreibvorgänge (hier sind fast alle SSDs ausreichend) und eine hohe TBW-Menge, damit Ihre SSD nicht jedes Jahr vor Erschöpfung stirbt. In der Regel reichen für kleine Systeme <10 GB. Spiegelung wird bevorzugt, um Datenverlust zu vermeiden, wenn Strom und SSD gleichzeitig ausfallen.
    • L2ARC muss jedoch um ein Vielfaches größer sein (> 64 GB sind in Abhängigkeit vom Arbeitsspeicher üblich), wird selten geschrieben, aber häufig gelesen, sodass Sie hohe IOPS-Lesevorgänge, eine akzeptable Leselatenz benötigen und TBW nicht so wichtig sind . Das Spiegeln ist in den meisten Fällen eine Geldverschwendung, da es nur ein Cache-Gerät ist und ohne Probleme verloren gehen und erneut erstellt werden kann.
  4. Ein einzelner Root-Pool ist natürlich möglich, aber Sie sparen sich einige Kopfschmerzen, wenn Sie ihn spiegeln. Da es normalerweise nicht so sehr betroffen ist, sind zwei langsame Festplatten oder sogar USB-Geräte (jedes Mainboard hat mindestens zwei USB-Anschlüsse als Header) für den Heimgebrauch perfekt geeignet und Sie erhalten einen weiteren verwendbaren Festplattensteckplatz. Besonders wenn Sie ohne USV laufen, geben Ihnen zwei Rpool-Geräte wirklich Sicherheit.

  5. Ihre Poolgröße ist korrekt, es kann jedoch eine Option für 12 Festplatten mit 2x Z2 (jeweils 6 Festplatten) oder 1x Z3 (jeweils 12 Festplatten) gewählt werden. Als Faustregel gilt, dass Sie bei der Verwendung von Z1 / 2/3 zunächst alle verfügbaren Festplattensteckplätze auffüllen müssen, da die Aktualisierung der Festplattengröße nur geringfügig ist und später keine weiteren Platten hinzugefügt werden können.

  6. Ich kenne mich mit Linux nicht aus (sollte gut funktionieren), aber haben Sie sich andere illumos-basierte Systeme angesehen? OmniOS ist klein, einfach und stabil und kann an Ihre Bedürfnisse angepasst werden (dazu gehören auch Zonen mit KVM- und LX-Marken). SmartOS ist ähnlich, konzentriert sich jedoch stark auf Zonen (Container), sodass Sie alle Ihre Services unabhängig voneinander ausführen können und sogar Linux-Gäste in diesen Zonen für die wenigen Dienste ausführen können, die unter Solaris nicht verfügbar sind. Es gibt auch Delphix und NexentaStore Community Edition, aber ich habe sie nicht getestet.


Mein persönlicher Vorschlag:

  • Verwenden Sie das Betriebssystem, mit dem Sie vertraut sind (wenn Sie die Stabilität von Solaris mögen, versuchen Sie es mit OmniOS oder wenn Sie Virtualisierung möchten, versuchen Sie es mit SmartOS)
  • Verwenden Sie gespiegelte Rpools auf USB-Festplatten (USB3-Festplatten oder USB3-Sticks mit SLC-Speicher), um weitere Steckplätze für Festplatten verfügbar zu machen
  • Verwenden Sie 6 Ports von den Mainboards und 6 Ports von der HBA-Karte, damit Sie einen Controller verlieren und Ihr System weiter läuft
  • In Zukunft können je nach Bedarf 2 freie Ports für SLOG- oder L2ARC-Geräte verwendet werden
  • Layout (12 ist eine sehr schöne Zahl, 16 wäre am besten, da die meisten Controller 4 oder 8 Ports haben):
    • Wenn Sie maximale Leistung benötigen: 6x2 Spiegel, jeweils auf beiden Controllern
    • Wenn Sie maximale Belastbarkeit benötigen: 4x3 Spiegel oder 1x RAID Z3 (12) oder 2x RAID Z2 (6)
    • Wenn Sie maximalen Speicherplatz benötigen: 1x RAID Z2 (12)
  • Maximieren Sie zuerst den RAM, dann etwas anderes

Zu Ihren Folgefragen aus Kommentaren:

Ich mag die Idee, zwei gespiegelte USB3-Sticks für das System zu verwenden, aber ist es startfähig?

USB-Sticks sind im Wesentlichen die gleichen wie USB-Festplatten, sodass Sie problemlos von ihnen booten können (außer auf sehr alten Mainboards, aber alles aus den letzten zehn Jahren sollte in Ordnung sein). Einige Systeme wie SmartOS oder ESXi machen dies sogar als bewährte Methode bekannt.

Einige dagegen (wie FreeNAS) empfehlen es nicht, da sie nicht auf USB-Sticks zugeschnitten sind und daher ständig auf die Festplatten schreiben und billigere Sticks ziemlich schnell verbrauchen (weshalb so viele Raspberry Pis früh ausfallen - das Linux-System denkt, es hat eine unzerstörbare Festplatte und nicht etwa 5 EUR USB-Stick oder eine SD-Karte, die für gelegentliches Schreiben wie von einer Digitalkamera entwickelt wurde.

Bei SLC-Sticks (oder echten SSDs) treten diese Probleme nicht auf. Natürlich sind sie teurer, etwa 30 bis 40 EUR für 16-GB-Sticks (MachExtreme MX-ES sind ungefähr die einzigen Dinge, die es wert sind, in diesem Sektor zu arbeiten). SSD kann billiger sein (30 EUR für 32 GB), aber Sie benötigen einen USB-Adapter, der mehr Platz benötigt. Sie können sie außerhalb des Gehäuses für schnelle Backups / Swaps oder innen für die Zugriffskontrolle verwenden (lesen Sie: Wenn Sie Kinder haben, die glänzendes Spielzeug mögen).

Anscheinend brauche ich keine Log / Cache-Platten. Sollte ich alle 14 Ports für Festplatten verwenden?

Abhängig von Ihren Bedürfnissen und Ihrem Budget. Wenn Sie Spiegel verwenden, können Sie sie später flexibel hinzufügen. Wenn Sie RAID-Zn verwenden, würde ich den endgültigen Betrag vor dem Erstellen des Pools festlegen, da Sie nicht einfach mehr hinzufügen können. Auf der anderen Seite möchten Sie vielleicht einige Ports für die Sicherung freigeben (z. B. mit Slot-In-Caddys für 3,5-Zoll-Laufwerke) oder für Cache-Zwecke, wenn sich Ihre Anforderungen ändern. Es liegt an Ihnen, wenn Sie mehr als nur auf die Flexibilität Wert legen (und es hängt von Ihren Erweiterungskarten ab, die von Ihrer Hardware unterstützt werden).

So etwas wie 2x7 RaidZ2 zusammen gestreift? Wenn ich dies tue und der Controller ausfällt, wird der Pool ausfallen, aber wenn ich den Controller durch einen identischen Controller ersetze, wird er erneut ausgeführt?

Ja, und es funktioniert auch, wenn Sie einen anderen Controller verwenden, da alles in Software ausgeführt wird. Sie müssen nur genügend Festplatten hinzufügen, damit jedes vdev funktioniert, und Sie können den Pool wieder online stellen.

Wenn in Ihrem Fall der Controller mit 8 Ports ausfällt, müssen Sie dem System in beliebiger Weise fünf (7 - 2) dieser Festplatten hinzufügen (die Acht ist ohnehin entbehrlich, da die anderen sechs Festplatten noch laufen), z mit einem 4-Port-Controller und einer einzelnen USB-Festplatte (nicht zu empfehlen, nur um zu zeigen, dass die Verbindung grundsätzlich bedeutungslos ist).

In der Regel ersetzen Sie einfach den Controller durch dasselbe Modell, da Sie wissen, dass die Konfiguration problemlos funktioniert und die Leistung ausreicht (bei 8 Festplatten pro Controller ist der Preis des Controllers an sich ohnehin recht niedrig.

Und wenn ich das tue, kann ich einen Teil des Beckens wachsen lassen, ohne den anderen zu berühren?

Sie können die vdevs separat vergrößern, jedoch nur, wenn der Pool selbst online ist (dh, nachdem der Controller ausgetauscht wurde und Fehler aufgetreten sind). Berücksichtigen Sie, dass Ihre Daten nicht ausgewuchtet werden, wenn Sie den Wert "unausgewogen" vergrößern, wenn der andere vdev erweitert wird. Dies gilt nicht für neue und geänderte Blöcke (beim Schreiben werden die Daten beim Lesen nicht neu angeordnet). Dies sollte für Ihre Leistungsanforderungen kein Problem sein, aber ich dachte, ich würde es der Vollständigkeit halber erwähnen.

Vielen Dank für Ihre ausführliche Antwort. Ich habe ein paar Tage gebraucht, um alles zu verarbeiten: D Ich mag die Idee, zwei gespiegelte USB3-Sticks für das System zu verwenden, aber ist es bootfähig? Wie Sie erklärt haben, scheint es, dass ich keine Log / Cache-Festplatten benötige. Sollte ich alle 14 Ports für Festplatten verwenden? So etwas wie 2x7 RaidZ2 zusammen gestreift? Wenn ich dies tue und der Controller ausfällt, wird der Pool ausfallen, aber wenn ich den Controller durch einen identischen Controller ersetze, wird er erneut ausgeführt? Und wenn ich das tue, kann ich einen Teil des Beckens wachsen lassen, ohne den anderen zu berühren? Stéphane Goetz vor 7 Jahren 0
@ StéphaneGoetz Froh, ich könnte helfen. Ihre Frage war sehr detailliert und hat viel Nachforschungen gezeigt, daher verdient sie eine längere Antwort als die meisten anderen Fragen hier. Außerdem schreibe ich manchmal (immer) lange Posts. ;) Um ein einfaches und einfach zu implementierendes Managementsystem zu erhalten, werfen Sie einen Blick auf OmniOS + napp-it (http://napp-it.de/setup_de.html). Ich kann es uneingeschränkt empfehlen. user121391 vor 7 Jahren 0
RAIDZ2 mit 6 Festplatten ist auch ein Vorteil für den geringen Festplattenverbrauch und belastet die verbleibenden Festplatten im Falle eines Resilvers nicht zu sehr. Ich weiß nicht mehr, wo ich die Zusammenfassung gesehen habe, aber jemand hat einen Tisch mit etwas wie RAIDZ, RAIDZ2, RAIDZ3 für jeweils bis zu 20 Festplatten zusammengestellt, der den Aufwand für jede Kombination berechnet. Es ist ein kleines Detail und nicht besonders relevant, wenn Sie zwischen 2x6 oder 1x12 RAIDZ2 wählen. Wenn Sie sich jedoch zwischen einer ähnlichen Anzahl von Festplatten entscheiden, sollten Sie darüber nachdenken. a CVn vor 7 Jahren 0