Latenzzeiten senken und dabei Datenintegrität garantieren
Ähnlich wie beim Lesen funktioniert der Hybrid-Storage-Pool auch beim Schreiben. ZFS handhabt mittels Caching die synchronen Schreibvorgänge verschiedener Protokolle (beispielsweise NFS, SMB/CIFS). Die Schreibvorgänge werden im das "ZFS Intent Log" (ZIL) protokolliert, bis sie an nicht-volatilen Stellen im Speicher abgelegt sind. Die Latenz von synchronen Schreibvorgängen zu reduzieren, hat einen direkten Einfluss auf die Leistung, denn Datenbanken setzen gewöhnlich voraus, dass Daten auf einem dauerhaften Speicher geschrieben sind, bevor sie den Vorgang abschließen können.
Während alle Schreibvorgänge, sowohl synchrone als auch asynchrone, auf DRAM in den ARC geschrieben werden, werden synchrone zusätzlich auch auf den ZIL auf SSD geschrieben. ZFS bündelt regelmäßig alle neuen Schreibvorgänge im ARC und verteilt diese auf die Festplatten. Ab diesem Moment werden die Protokolle auf dem ZIL nicht länger benötigt und können überschrieben werden, da die Daten ihre finale Stelle auf einem langfristigen, nicht-volatilen Medium erreicht haben. Unter normalen Umständen wird das ZIL also nicht benötigt. Es wird nur gelesen, wenn synchrone Schreibvorgänge aus dem ARC nicht auf Festplatte geschrieben werden können, zum Beispiel nach einem Stromausfall oder bei Ausfall eines Controllers. Dann liest ZFS das ZIL und legt die Daten anschließend wie geplant auf den Festplatten ab. Auf diese Weise ist der Verlust einer Transaktion oder die Inkonsistent zwischen Nutz- oder Paritätsdaten ausgeschlossen. Genau wie ARC und L2ARC wird das ZIL automatisch und intelligent von ZFS verwaltet, ohne jeglichen Eingriff eines Administrators.
Die richtige Balance zwischen Leistung und Kapazität
ARC, L2ARC und ZIL bestimmen im Wesentlichen die Leistung innerhalb eines ZFS-Hybrid-Storage-Pools, da nur sehr wenige Datenzugriffe auf die dahinter liegenden Festplatten erfolgen. Somit können Festplatten dafür eingesetzt werden, wofür sie am besten geeignet sind: Günstige Speicherkapazität mit hoher Dichte. Eine Balance zu finden zwischen DRAM und Flash für die Performance einerseits und HDDs für die Kapazität andererseits, ist über die Gesamtlaufzeit des Systems gesehen effizienter, als nur Flash und Festplatten zu nutzen. Dies wird so lange gelten, bis Flash und Festplatten auf dem gleichen Preisniveau angekommen sind.
Ein neuer Parameter für Storage: Das Working-Size-Set.
Um die wichtigen Parameter bei herkömmlichen Speichersystemen abzustecken, muss der Administrator Kapazität, IOPS und Datendurchsatz bestimmen. Anhand dieser Zahlen kann er einfach ausrechnen, wie viele Spindeln nötig sind, um auf die gewünschte Leistung zu kommen. Da die Speicherindustrie sich jedoch immer ausgeklügelteren Caching-Methoden in Speichersystemen zuwendet, ist ein neuer Parameter vonnöten, um den Bedarf an Speicher zu bestimmen: Das Working-Size-Set.
Es beschreibt den Teil der Daten, mit dem aktiv gearbeitet wird. Dies ist meist der kleinste Teil des gesamten Datenvolumens. Beispielsweise kann das Working-Size-Set innerhalb eines Systems von insgesamt 20 TByte aus 500 GByte bestehen. Kennt man die Größe, ist es möglich, die Kapazität von ARC, L2ARC und sogar HDDs entsprechend der Bedürfnisse eines Unternehmens zu spezifizieren (siehe Diagramm 2).
Kennt man diese Größe, kann man die Größe der ARCs spezifisch anpassen. Indem sie DRAM, Flash und HDDs intelligent gemeinsam nutzen, können Hybrid-Storage-Pools die richtige Balance zwischen Kosten und Leistung für jedes Working-Size-Set bringen. Auch können Hybrid-Storage-Pools die Notwendigkeit, das Speichersystem durch einen Administrator nach I/O-Engpässen zu überwachen, massiv reduzieren. Der Aufwand für automatisches oder manuelles Tiering der Daten wird hinfällig. Der wichtigste Grund für die Nutzung eines Hybrid-Storage-Pools ist jedoch die Performance: ZFS-Hybrid-Storage-Pools sind einfach viel schneller als herkömmliche Speichersysteme, da sie die Latenz sowohl für Schreib- als auch Lesevorgänge stark verkürzen.