Speicheroptionen mit RAM und SSDs in OpenZFS-Systemen

RAM und SSD Cache-Optionen für OpenZFS

Diese Komponenten sind genauso wichtig wie die Auswahl der richtigen Festplatten für Ihr OpenZFS-Konzept. Aber lassen Sie uns zuerst einige wichtige Hardware-Unterschiede und Betriebsmechanismen diskutieren, die in OpenZFS verwendet werden und die diese Hardware-Auswahl beeinflussen können.

Index

Error Correction Code-RAM vs. Non-ECC Modul
Was ist ein Single-Bit-Error?
Wie kann ECC-Speicher zum Schutz meiner Daten beitragen?
Muss ich ECC-Speicher mit OpenZFS verwenden?
Ist ECC-Speicher schneller als Non-ECC-Speicher?
Was sind die Voraussetzungen für die Verwendung von ECC-Speicher in meinem TrueNAS Build?
Registered versus Unregistered Memory
OpenZFS-Caching und RAM-Nutzung
Read-Caching
Was ist ein ARC?
Wie viel RAM verwendet OpenZFS für den ARC-Cache?
Was also ist ein L2ARC?
Wird ein L2ARC auch gemeinsam genutzt?
Was sollte als L2ARC verwendet werden?
Kann ich die gleiche SSD verwenden, um einen L2ARC zu mehreren Pools hinzuzufügen?
Was passiert, wenn ich meinen L2ARC verliere?
Wann sollte ich einen L2ARC zu meinem System hinzufügen?
Write-Caching
Synchrone Schreibvorgänge
Asynchrone Schreibvorgänge
Was also ist ein SLOG?
Welche Geräte sollen für das SLOG verwendet werden?
Wie groß sollte mein SLOG sein?
Kann ich dieselbe SSD sowohl für den L2ARC als auch für das SLOG verwenden?
Kurz und bündig
TL;DR

Error Correction Code-RAM vs. übliche Module
(ECC vs. Non-ECC-RAM)

Auf dem Markt gibt es zwei Hauptvarianten von RAM:

  • ECC-Speicher
  • Non-ECC-Speicher

ECC ist ein RAM-Typ, der eine Fehlerkorrektur-Methode (Error Correction Code) zur Erkennung und Korrektur von Einzelbit-Datenfehlern während des Betriebs verwendet. ECC-Speichermodule unterscheiden sich physisch von Non-ECC-Speichermodulen, da sie zusätzliche Chips enthalten, die für die Aufnahme und Verarbeitung des Erkennungs-/Korrekturcodes verwendet werden. Diese zusätzlichen Chips und ihr Herstellungsaufwand sind auch ein Grund, warum ECC-Speicher teurer sind.

ECC_vs_Nicht-ECC 
OpenZFS
Ein ECC-RAM-Modul (oben) im Vergleich zu einem Nicht-ECC-Modul. Haben Sie den zusätzlichen Chip auf dem ECC-Modul bemerkt?

Was ist ein Single-Bit-Error?

Ein Ein-Bit-Fehler ist im Grunde ein umgedrehtes Bit, das beim Durchlaufen des Systems von 0 auf 1 oder umgekehrt wechselt. Die Ursache für die Beschädigung kann alles sein, angefangen bei einer schlechten Kabelverbindung zur Festplatte (oder anderen Komponenten) bis hin zu einem kosmischen Strahl, der Ihr System im falschen Moment trifft.

Obwohl ein einziger Bitfehler in der Regel keinen Schaden in Ihrem Pool anrichten würde, kann er manchmal erhebliche Probleme verursachen. Wenn er beispielsweise eine wichtige Datei ramponiert (z.B. in Datenbanken) oder indirekt Ihre Daten beschädigt, indem er eine kritische Systemanweisung korrumpiert. Genauso kann er auch einen kompletten Systemabsturz während der Pool-Schreibvorgänge verursachen. Zudem führen mehrere dieser Fehler mitunter dazu, dass der Pool beschädigt wird – wenn sie nicht frühzeitig erkannt werden.

Was ist ein Single-Bit-Error? RAM-SSD
Beispiele für Bit-Flipping: Es kann dazu führen, dass statt des Großbuchstaben (Z) ein kleines (z) abgespeichert wird, oder dass sich die Buchstaben (A) und (C) vertauschen.

Wie kann ECC-Speicher zum Schutz meiner Daten beitragen?

ECC-Speicher schützen vor Bit-Fehlern, indem sie ECC-Logik/Algorithmen auf dem Chip verwenden, um die Daten während der Verarbeitung (d.h. in Echtzeit) zu vergleichen.

Die Idee ist einfach, aber genial: Da alle Daten in Binärcode (Einsen und Nullen) umgewandelt werden, prüft der Arbeitsspeicher jedes Datenbyte und berechnet die Summe aller Einsen (1) in jedem Byte. Schließlich kann es nur eine gerade oder ungerade Zahl sein. Der RAM verwendet dann den zusätzlichen physischen RAM-Chip, um diese Summe als zusätzliches Paritätsbit (Steuerbit) zu speichern. Wenn es an der Zeit ist, die Daten aus dem RAM zu lesen (z.B. wenn ein angeschlossener Client eine Datei aus dem OpenZFS-Cache anfordert, der sich im RAM befindet), vergleicht der ECC-Chip die gespeicherte Summe mit denen aus den zu lesenden Daten. Im Falle einer Abweichung (ein Bit-Sprung) werden die Daten anhand des gespeicherten Wertes schnell korrigiert.

ECC-RAM kann auch mehrere Fehler innerhalb eines einzigen Worts erkennen, ist aber nur in der Lage einen Fehler zu korrigieren. Wenn mehrere Fehler auftreten und nicht korrigiert werden können, stoppt der ECC-Speicher die Verarbeitung der beschädigten Bits und hält das System an. Für OpenZFS schließt dieser Mechanismus praktisch aus, dass beschädigte Daten aus dem Arbeitsspeicher auf die Festplattenlaufwerke gelangen kann. So werden auch die Pools geschützt und Fehler in den gespeicherten Dateien vermieden.

Muss ich ECC-Speicher mit OpenZFS verwenden?

Nein, aber es wäre besser.

ZFS verfügt über folgende Built-in-Mechanismen zur Erkennung und Reparatur von Datenbeschädigungen:

  • ZFS führt End-to-End-Prüfsummen für Ihre Daten durch. Diese Prüfsummen helfen dabei, Datenbeschädigungen bei Lesevorgängen zu erkennen.
  • ZFS versucht automatisch, beschädigte Festplattenblöcke zu reparieren, indem es die in seinen RAIDZ-Arrays verfügbaren redundanten Daten verwendet.
  • Es führt regelmäßige Scrubs durch, um Bit-Rot zu erkennen (passiert normalerweise bei beschädigten Datenträgern)
  • Außerdem werden Checksummenprüfungen für Replikationsstreams durchgeführt, um sicherzustellen, dass die Daten während des Vorgangs nicht beschädigt wurden.

ZFS selbst wurde also nicht für ECC-RAM konzipiert. Er kann auch Nicht-ECC-RAM verwenden. Das Gleiche gilt für OpenZFS, als Abspaltung von ZFS. Aber die Tatsache, dass wir über Produktionsserver sprechen, die die Integrität der geschäftskritischen Daten Ihres Unternehmens oder Ihrer Kunden beherbergen und schützen sollen, macht deutlich, dass Sie sich der Bedrohung bewusst sein sollten, die ein Nicht-ECC-Speicher für die Kontinuität Ihrer Daten und Ihres Betriebs darstellt.

Wenn Sie der Meinung sind, dass der von Ihnen gekaufte Nicht-ECC-Speicher zuverlässig ist und die Möglichkeit einer Datenbeschädigung so gering ist, dass Sie sich nicht um die Verwendung von ECC-Speicher kümmern sollten, dann werfen Sie bitte einen Blick auf diese Studie: Sie ist das Ergebnis von mehr als zwei Jahren Arbeit eines Teams der Universität von Toronto und Google. Sie untersuchten die Speicherleistung eines ganzen Google-Rechenzentrums unter kontrollierten Betriebsbedingungen.

Das Ergebnis war, dass es etwa 14 bis 40 Stunden dauert, bis der erste Bitwechsel in einem Gigabit verarbeiteter Daten eines DRAM-Chip stattfindet.

Andererseits verfügt ZFS nicht über ein Toolset zur Wiederherstellung des Dateisystems nach einer Beschädigung. Im Gegensatz zu EXT3/4, XFS und sogar NTFS, die über eigene Dateisystem-Scan- und Reparaturwerkzeuge verfügen, können beschädigte ZFS-Pools nicht gerettet werden. Sobald ein ZFS-Pool beschädigt ist, sind die Daten weg. Meistens ist es so.

Ist ECC-Speicher schneller als Non-ECC-Speicher?

Nein. Aufgrund der zusätzlichen Verarbeitung durch die Speicherchips hat ECC-Speicher in der Regel eine etwas höhere Latenzzeit als Nicht-ECC-Speicher. Dieser Unterschied ist so gering, dass er vernachlässigbar ist und die Serverleistung in keiner Weise beeinträchtigt.

Was sind die Voraussetzungen für die Verwendung von ECC-Speicher in meinem TrueNAS Build?

ECC-Unterstützung auf der CPU und auf dem Mainboard. Schauen Sie in den technischen Datenblättern Ihrer Hardware nach, ob sie ECC-RAM verarbeiten kann. Stellen Sie außerdem sicher, dass Sie genau den ECC-Speicher kaufen, den Ihre Hardware unterstützt. Einige Mainboards können zum Beispiel keine gepufferten ECC-Module verarbeiten.

Registrierter vs. unregistrierter Speicher

Beim Kauf von RAM-Modulen müssen wir in der Regel zwischen registrierten und unregistrierten Sticks wählen – auch als gepufferter und ungepufferter Arbeitsspeicher bezeichnet.

Registrierter (gepufferter) Arbeitsspeicher verfügt über einen zusätzlichen Register-Chip, der als Schnittstelle zwischen den eigentlichen Speicherchips und dem Speicher-Controller des Systems fungiert, der sich meist auf der CPU befindet. Dadurch wird der Speicher-Controller (innerhalb der CPU) entlastet und das System kann eine größere Gesamtmenge an RAM bewältigen. Wenn Sie die Mainboard-Spezifikationen prüfen, werden Sie daher in der Regel eine Aussage wie „Dieses Mainboard unterstützt 64 GB ECC UDIMM und bis zu 128 GB ECC RDIMM“ finden. Hier ist ein Beispiel von der Supermicro-Website.

Registrierter Speicher kostet etwas mehr als die unregistrierte Version, da für die Implementierung des Registerchips zusätzliche Schaltungen erforderlich sind.

Wenn Ihre Anwendung eine große Menge an RAM benötigt, sind RDIMMs die richtige Wahl. Beachten Sie, dass die meisten Consumer-Mainboards und auch einige Server-Mainboards keinen gepufferten Speicher unterstützen. Stellen Sie also sicher, dass das von Ihnen gewählte Mainboard dies unterstützt.

Tipp: Wie jede andere elektronische oder elektromechanische Komponente in einem Computersystem kann auch der ECC-RAM ausfallen. Wenn Ihr System mit ECC-Speicher ausgestattet ist und häufig abstürzt, überprüfen Sie den Arbeitsspeicher, die Festplatten und die Verkabelung/Verbindungen. Es kann sein, dass eines Ihrer Speichermodule defekt ist, eine Festplatte ausfällt oder ein Kabel nicht richtig angeschlossen ist. Die frühzeitige Erkennung solcher Probleme kann zum Schutz Ihrer Daten beitragen.

Eine der beliebtesten AIO-Hardware-Testoptionen ist Hiren’s BootCD PE. Dies ist eine bootfähige CD, die eine ausgewählte Sammlung von freien und/oder Open-Source-Inspektionswerkzeugen enthält – einschließlich Memtest86+.

OpenZFS-Caching und RAM-Nutzung

OpenZFS verfügt über zwei verschiedene Arten von Zwischenspeichern: Lese- und Schreibcache – und es nutzt den Systemspeicher sowohl für den Lese- als auch für den Schreibcache, allerdings auf unterschiedliche Weise und in unterschiedlicher Intensität.

Read-Caching

Der OpenZFS-Lesecache hat zwei Ebenen:

  • ARC (Adaptive Replacement Cache)
  • L2ARC (Level2 Adaptive Replacement Cache)
Was ist ein ARC?

Ein ARC bildet die erste Ebene des OpenZFS-Lesecaches. Er enthält Hot-Data, die aus dem Pool gelesen und im RAM gespeichert wurden.

Der ARC befindet sich im RAM und wird von allen Datenpools im Speichersystem verwendet. Grundsätzlich werden die Dateien, die Sie von Ihrem OpenZFS/TrueNAS-System anfordern, von dem zugrunde liegenden Pool-Disk-Array abgerufen und in den Arbeitsspeicher des Systems kopiert, bevor sie über Ethernet an den Client gesendet werden.

Dadurch werden nachfolgende Lesevorgänge für dieselben Dateien beschleunigt, da keine Lesevorgänge auf der Festplatte durchgeführt werden. Das System sucht die Datei zunächst im ARC-Cache, und wenn sie dort existiert, als Treffer angeliefert.

Das bedeutet: Für Umgebungen mit mehreren Clients und Servern, die eine große Anzahl von Dateien verarbeiten, ist es besser, wenn Ihr System über so viel RAM verfügt wie möglich.

Was ist ein ARC? RAM SSD Cache OpenZFS
ZFS führt eine intelligente Prüfung durch, um festzustellen, ob Daten bereits im ARC-Cache vorhanden sind.

Wie viel RAM verwendet OpenZFS für den ARC-Cache?

OpenZFS und TrueNAS verwenden bis zu 90% des verfügbaren Systemspeichers für ihren ARC-Cache (siehe Screenshot imersten Artikel). Dies ist mit TrueNAS möglich, da das zugrunde liegende FreeBSD-Betriebssystem sehr RAM-effizient ist.

Was also ist ein L2ARC?

Es ist die Abkürzung für Level 2 ARC und besteht aus Daten, die bereits im ARC enthalten waren und immer noch benötigt werden, aber von den Kunden als weniger gefragt angesehen werden.

Physisch besteht L2ARC normalerweise aus einem oder mehreren schnellen SSDs innerhalb des Systems.

Sobald der ARC den gesamten verfügbaren Arbeitsspeicher verbraucht hat, wird OpenZFS regelmäßig einen Teil der zwischengespeicherten Daten von ARC in den L2ARC auslagern, um etwas Arbeitsspeicher für neue Lesedaten vorhalten zu können. Dieser Vorgang wird als Evektion bezeichnet.

Dies geschieht jedoch nur, wenn ein L2ARC vorhanden ist. Und L2ARC existiert dann, wenn Sie ihn zu Ihren Pools hinzugefügt haben.

Wird ein L2ARC auch gemeinsam genutzt?

Anders als ARC wird L2ARC nicht von allen Pools innerhalb Ihres Systems gemeinsam genutzt. Er ist poolspezifisch, da er während oder nach seiner Erstellung einem Pool zugeordnet und ausschließlich von diesem verwendet wird.

Denken Sie daran, dass L2ARC eine Option ist, während der ARC ein Muss darstellt. Sie können ein paar NVMe-Laufwerke zu Ihrem System hinzufügen und sie als L2ARC verwenden, aber Sie können ARC nicht eliminieren, da es eine Kernkomponente von OpenZFS ist.

Was sollte als L2ARC verwendet werden?

L2ARC kann eine schnelle SSD beziehungsweise NVMe sein. Diese sind immer noch schneller als HDDs, aber langsamer als Ihr RAM.

Um die Leistung des L2ARC zu verbessern, implementieren wir seine Laufwerke als Striped Devices (RAID0). Striping verbessert die Leistung des L2ARC des Systems erheblich.

Die Langlebigkeit von SSDs ist hier immer noch wichtig, aber nicht mehr so sehr wie bei der Verwendung als Speicher und SLOG. Achten Sie bei der Auswahl einer SSD für L2ARC auf ein Gerät mit:

  • Höchstleistungen bei zufälligen Lesevorgängen
  • PFP
  • Eine angemessene TDWPD-Bewertung
Kann ich die gleiche SSD verwenden, um einen L2ARC zu mehreren Pools hinzuzufügen?

Technisch gesehen können Sie mehrere Partitionen auf derselben SSD erstellen und jede davon als L2ARC eines bestimmten Pools zuweisen. Von dieser Variante ist jedoch dringend abzuraten.

Die Leistung Ihrer SSD ist schließlich endlich. Sie hat eine begrenzte Anzahl von IOPS, und diese IOPS werden von allen Lese- und Schreibvorgängen auf dieser speziellen Festplatte gemeinsam genutzt. Wenn Sie die Festplatte mit E/A-Anforderungen aus verschiedenen Quellen mit unterschiedlichen Arten von Lese-/Schreibvorgängen überlasten, sinkt die Leistung des Systems.

Am besten ist es, für jeden Pool eine eigene Gruppe von SSDs zu verwenden. Bessere Leistung und viel weniger Ärger.

Was passiert, wenn ich meinen L2ARC verliere?

So gut wie nichts. Bei ARC und L2ARC handelt es sich um doppelte Daten, die auf einem schnelleren Medium (RAM und SSD) gespeichert werden, während die ursprünglichen Daten auf den Festplatten des Pools verbleiben. Abgesehen von einer möglichen negativen Auswirkung auf die Leistung gibt es keinen Grund zur Sorge.

Wann sollte ich L2ARC zu meinem System hinzufügen?

Wenn das Hinzufügen von mehr Arbeitsspeicher zu Ihrem System unerschwinglich schwierig und/oder teuer ist.

Denken Sie an diese beiden Fakten:

  • RAM ist schneller als alles andere, was wir haben. Es ist derzeit immer noch schneller als die schnellste SSD auf dem Markt.
  • Alle Daten im L2ARC werden in einer Tabelle referenziert, die im RAM gespeichert ist. Das bedeutet: Je größer Ihr L2ARC ist, desto mehr RAM verbraucht er.

Wenn Sie also ein großes L2ARC-Gerät verwenden, verbrauchen Sie mehr Arbeitsspeicher, wodurch die Datenmenge, die auf diesem schnellen Medium zwischengespeichert werden kann, verringert wird.

Write-Caching

Der OpenZFS-Schreibcache ist relativ kompliziert. ZFS verwendet einen Transaktionsgruppen-Mechanismus, das die Schreibvorgänge zunächst im System-RAM zwischenspeichert, sie organisiert und dann in kurzen Intervallen in Patches (Gruppen) in den Pool spült, wo sie in ein verstecktes Slice innerhalb des Pools geschrieben werden.

Dieses versteckte Slice wird ZFS Intention Log (kurz ZIL) genannt und ist über die Pool-Laufwerke gestriped – es befindet sich also nicht auf einer einzigen Platte.

Diese RAM-zu-Laufwerk-Pufferung verbessert die Leistung von HDD-basierten Systemen, indem sie den rotierenden Festplatten genügend Zeit zum Speichern der Daten gibt. Außerdem wird die Datenintegrität verbessert, da im Falle eines Systemabsturzes oder eines Stromausfalls partielle Schreibvorgänge nicht abgeschlossen werden können, da die Daten im RAM verdampfen.

OpenZFS verwendet auch einen Transaktionsverzögerungsmechanismus – auch bekannt als Write Throttle. Wenn ZFS feststellt, dass die zugrundeliegenden Festplatten des Pools nicht in der Lage sind, die schnelle Rate der eingehenden Schreibvorgänge zu bewältigen, drosselt ZFS die eingehenden Schreibvorgänge weiter, um den Festplatten etwas mehr Zeit zu geben, die Daten auf ihre Platten zu schreiben.

In OpenZFS, wie auch in vielen anderen Dateisystemen und Datenzugriffsprotokollen, gibt es zwei Haupttypen von Schreibvorgängen:

  • Synchrone Schreibvorgänge
  • Asynchrone Schreibvorgänge

Und beide haben ihre eigenen Vor- und Nachteile.

Synchrone Schreibvorgänge

Beim synchronen Schreiben (kurz: syn-write) sendet der Client die Daten an das Speichersystem und das System wartet, bis die Daten sicher in den Speicherpool geschrieben wurden. Erst dann kann der Client mit dem Senden des nächsten Datenpakets fortfahren. Der Vorteil ist also eine bessere Datenintegrität, der Nachteil ist eine langsamere Leistung, da der Client für jeden erfolgreichen Schreibvorgang auf eine Bestätigung des Speichersystems warten muss, bevor er weitere Daten senden kann.

Asynchrone Schreibvorgänge

Beim asynchronen Schreiben (kurz: async-write) sendet der Client die Daten an das Speichersystem, und das System speichert die Daten im Arbeitsspeicher und teilt dem Client sofort mit, dass die Daten gespeichert wurden. Der Client kann dann mit dem Senden des nächsten Datenpakets fortfahren. Im Hintergrund spült das System die Daten langsam und mit angemessener Geschwindigkeit aus dem RAM auf die Festplatten.

Da der Arbeitsspeicher viel schneller ist als Festplatten, ist die Leistung von asynchronen Schreibvorgängen besser, da die Daten nur im Arbeitsspeicher gespeichert werden müssen, bevor dem Client die Speicherung bestätigt wird.

Der Nachteil ist jedoch, dass RAM flüchtig ist und im Falle eines Systemabsturzes oder eines Stromausfalls die Transaktionsdatengruppen, die sich noch im RAM befanden, verloren gehen. Der Kunde wird denken, dass die Daten sicher geschrieben wurden, obwohl dies nicht der Fall ist, und Sie werden mit beschädigten, teilweise geschriebenen Dateien dastehen.

Was also ist SLOG?

Als Mittelweg zwischen dem ausschließlichen Verlassen auf RAM und asynchronen Schreibvorgängen als auch dem Warten auf langsame, sich drehende Festplatten, die die Transaktionsdaten auf ihre Platten schreiben, kann ZFS einen schnellen, nichtflüchtigen Speicher (SSD) verwenden, um die Transaktionsdaten aus dem RAM auf das Gerät zu schreiben und dem Client dann mitzuteilen, dass die Daten gespeichert wurden. In diesem Szenario sind die auf die SSD geschriebenen Daten selbst bei einem Systemabsturz oder einer Stromunterbrechung noch vorhanden, nachdem das System wiederhergestellt wurde.

Dieses Zwischengerät wird als Separate Log (kurz SLOG) bezeichnet.

Welche Geräte sollen für SLOG verwendet werden?

Es wird empfohlen, redundante schnelle SSDs mit PFP und hoher TDWPD-Haltbarkeit zu verwenden. Die Spiegelung Ihres SLOG ist von entscheidender Bedeutung. Dies ist eine wichtige Maßnahme, um Datenverluste bei Ausfall eines einzelnen SLOG-Geräts während des Schreibvorgangs zu verhindern.

Wie groß sollte mein SLOG sein?

64 GB bis 128 GB sind für die meisten Systeme ausreichend. Hier kommt es auf Redundanz, Geschwindigkeit und Haltbarkeit an, nicht auf die Größe.

Kann ich dieselbe SSD sowohl für L2ARC als auch für SLOG verwenden?

Auch hier gilt: Wenn Sie Leistung oder Datensicherheit eine geringere Priorität einräumen, warum nicht.

Zum Schluss sehen Sie, wie es aussieht, wenn Ihr OpenZFS-System über kein SLOG verfügt:

Kann ich dieselbe SSD sowohl für L2ARC als auch für SLOG verwenden? RAM SSD OpenZFS

In diesem Beispiel werden die Daten vom Citrix-Virtualisierungsserver an den Pool gesendet. Bei Citrix müssen die Schreibvorgänge synchronisiert werden. Das System beachtet die Synchronisierungsanforderung und sendet erst dann eine Schreibbestätigung (ACK), wenn die Daten sicher auf die zugrunde liegenden Laufwerke geschrieben wurden.

Das bedeutet, dass ACKs länger dauern können, insbesondere wenn Sie langsame Laufwerke haben oder eine Ihrer Festplatten den Geist aufgibt.

Andererseits könnten in einem Pool mit SLOG die ACKs viel schneller zurückgeschickt werden,

wenn Ihr OpenZFS-System kein SLOG besitzt.

In diesem Fall kann das System den Schreibvorgang bestätigen und das ACK senden, sobald die Daten in den SLOG-Satz geschrieben wurden. Der SLOG kann dann die Daten langsam und mit angepasster Geschwindigkeit auf die rotierenden Festplatten übertragen.

Kurz und bündig

ECC-Speicher kann den Unterschied zwischen einem gesunden und einem beschädigten Datensatz ausmachen. Wenn Ihre Daten wertvoll sind, sollte der Preisunterschied keine Rolle spielen und das Feature ECC für Sie Priorität haben. Erwarten Sie allerdings auch keine Leistungssteigerung durch ECC.

OpenZFS hat zwei Ebenen von Lese-Cache, ARC und L2ARC. ARC befindet sich im Arbeitsspeicher des Systems und verbraucht normalerweise den größten Teil davon, während L2ARC über eine optionale schnelle SSD realisiert wird, die Sie dem System hinzufügen können.

Mehr Arbeitsspeicher zu Ihrem System hinzuzufügen ist besser als jedes L2ARC-Gerät, das Sie hinzufügen können. Ein L2ARC ist nicht verlustfrei zu haben, sondern belastet den System-RAM, da der Inhalt von L2ARC im RAM referenziert werden muss. Fügen Sie also einen L2ARC hinzu, wenn das Einbauen weiterer RAM-Module in Ihr System zu schwierig ist.

ZIL ist die OpenZFS-Version des Schreibcaches. Sie ist Teil jedes ZFS-Pools, es sei denn, Sie entscheiden sich für die Verwendung eines SLOG – das ist ein Satz separater schneller SSDs, die zum Hosten des ZIL verwendet werden. SLOG-Geräte für das ZIL können die Leistung bei synchronen Schreibvorgängen verbessern. Achten Sie darauf, dass Sie sich für eine schnelle SSD mit einer hohen Lebensdauer entscheiden. Die Spiegelung Ihrer SLOG-Geräte ist ein Muss für jede ernsthafte Anwendung.

TL;DR

RAM und SSDs auf OpenZFS

  • ECC-RAM unterscheidet sich physikalisch von Nicht-ECC-RAM. Dasselbe gilt für gepuffertes und ungepuffertes RAM.
  • ECC-RAM kann Einzelbit-Fehler erkennen und korrigieren und trägt so zum Schutz der Integrität Ihrer Daten bei.
  • ECC-RAM kann auch mehrere Fehler innerhalb eines Wortes erkennen, kann aber nicht mehr als einen Fehler korrigieren.
  • Registrierter (gepufferter/ RDIMM) ECC-RAM ermöglicht die Installation von mehr Speicher in Ihrem Server. Stellen Sie nur sicher, dass Ihr Mainboard dies unterstützt.
  • ECC-RAM ist nicht unbedingt schneller als Nicht-ECC-RAM, aber der Latenzunterschied ist vernachlässigbar, wenn man die Vorteile der Datensicherheit betrachtet.
  • ECC-RAM ist kein Muss für OpenZFS, wird aber dringend empfohlen, wenn Ihnen die Datenintegrität und die Serverstabilität wichtig sind.
  • Die Datenbeschädigung im Speicher erfolgt mit einer Rate, die der Menge der vom Computersystem verarbeiteten Daten entspricht.
  • Wenn Ihr OpenZFS/TrueNAS-Build für die Speicherung kritischer Daten verwendet werden soll, dann verwenden Sie ECC.
  • Um ECC-RAM in Ihrem System zu verwenden, benötigen Sie eine CPU und möglicherweise einen Mainboard-Chipsatz, der ECC unterstützt.
  • ECC oder nicht, Speichermodule können ausfallen. Wenn Sie Fehler entdecken, überprüfen Sie sofort Ihren Arbeitsspeicher.
  • ZFS hat einen Lese-Cache, der in zwei Ebenen unterteilt ist, die ARC und L2ARC genannt werden.
  • ARC ist eine Kernkomponente von OpenZFS. L2ARC ist optional.
  • ARC befindet sich in Ihrem System-RAM, während L2ARC eine schnelle NVMe-Festplatte sein könnte.
  • Strippen Sie Ihre L2ARC-Geräte, um ihre Leistung zu erhöhen.
  • Es ist besser, mehr RAM in Ihr System einzubauen, als L2ARC-Geräte zu installieren.
  • ZIL ist das Protokoll über Schreibvorgänge von OpenZFS. Er ist Teil jedes OpenZFS-Pools.
  • Ein SLOG ist eine schnelle SSD, die für den ZIL-Teil Ihres Pools bestimmt ist.
  • SLOG kann dazu beitragen, Ihre synchronen Schreibvorgänge zu verbessern, indem es ZIL-Schreibvorgänge schnell annimmt und sie dann langsam an Ihre Festplatten weiterleitet.

Starline Kontakt

Noch Fragen? Kontaktieren Sie uns.

Der ausgewiesene Experte für alle Linux- und Ceph-Plattformen kam 2018 zu Starline. Seine Vorliebe gilt raffinierten Open-Source-Lösungen und kniffligen Produktentwicklungen. Deshalb steht er auch für Anfragen bezüglich PetaSAN und FreeNAS bereit. Aber auch ARM-Server von Ambedded oder Mac-Betriebssysteme haben es ihm angetan. Privat befasst sich der Ingenieur gern mit 3D-Druckern und Robotern.

Mohammad Ammar
Technik