Struktur von File-Systemen kann NVMe-Performance ausbremsen
File-Systeme spielen eine wichtige Rolle für NVMe-Storage. Traditionell sind sie aber nicht optimiert für I/O-Prozesse von NVMe-Laufwerken.
NVMe versetzt die Speicherinfrastruktur in die Lage, Flash-basierten Storage durch die verbesserte physische Schnittstelle voll auszunutzen, außerdem wirken sich die zunehmende Kommando-Anzahl und die längere Warteschlange positiv aus. Aber NVMe sorgt auch für ein neues Problem: NVMe ist so effizient, was Latenzen angeht, dass es Schwächen bei anderen Komponenten der Storage-Infrastruktur aufdecken kann. Jedes schwache Glied in der Infrastruktur erhöht die Latenzen und reduziert den Wert von NVMe.
Einer der problematischeren Teile der Speicherinfrastruktur ist das File-System. Es ist an der Zeit für die Hersteller, die Struktur der File-Systeme zu überdenken. Insbesondere müssen sie die Interaktion ihrer File-Systeme mit NVMe-Storage überarbeiten, um zu vermeiden, dass hier das primäre Bottleneck entsteht.
Warum sind File-Systeme wichtig?
File-Systeme, die für Artificial Intelligence (AI) und sehr schnelle Workloads eingesetzt werden, sind in der Regel für Scale-Out geeignet. Ein Scale-Out-File-System setzt sich aus mehreren Storage-Servern oder Nodes zusammen. Das File-System vereinigt den internen Storage in jedem dieser Nodes und präsentiert ihn als einen einzigen Speicher-Pool, auf den Anwender und Applikationen zugreifen können. Traditionelle File-Systeme sind auch Scale-Out-fähig, gehen dabei aber seriell vor: Alle I/O-Prozesse laufen durch einen primären Knoten, den AI und High-Velocity-Workloads leicht überfluten können und so für ein Bottleneck sorgen. Diese Workloads sind für eine parallele File-System-Struktur gedacht, die jeden Knoten in dem Cluster in die Lage versetzt, I/O-Prozesse für den Anwender oder die Applikation durchzuführen, was natürlich die Funktionsfähigkeit des Netzwerks noch wichtiger macht.
Die meisten NVMe-Speichersysteme sind für Block-Storage entwickelt worden. Das bedeutet, sie umgehen den Performance-Overhead der File-System-Struktur. In den meisten Fällen ist jedoch ein File-System zu dem Block-Storage-System hinzugefūgt worden, so dass es AI- und High-Velocity-Workloads benutzen kann. Die meisten modernen Anwendungen – besonders AI, Machine Learning und Big Data Analytics – bauen auf einem File-System auf.
Ein gut entwickeltes Block-basiertes NVMe-Speichersystem mit einem hinzugefügten File-System wird immer noch schneller sein als ein Block-basiertes SAS-Storage-System, aber der Performance-Abfall zwischen Raw-Block-Storage und File-System-Storage ist beträchtlich. Die Unternehmen brauchen deshalb File-Systeme, die für NVMe optimiert sind.
Worauf bei Benchmarks zu achten ist
Es gibt verschiedene Benchmark-Tests für File-Systeme, mit denen Hersteller ihre Fähigkeiten demonstrieren wollen. Die meisten dieser Tests benutzen NVMe Block Storage mit einem parallelen File-System, wie zum Beispiel Spectrum Scale File-System von IBM. Die Hersteller sind frei darin, verschiedene Konfigurationen zu benützen, um sich ihren Platz an der Spitze der Charts zu erkämpfen. Dies kann in die Irre führen.
Zum Beispiel variieren die führenden Hersteller in dem gegenwärtigen Standard Performance Evaluation Corp. SFS 2014 Benchmark signifikant die Anzahl der Laufwerke, Laufwerkstypen und Storage-Knoten in der Test-Umgebung. In den meisten Fällen versuchen die Hardwarehersteller, den Overhead der File-System-Struktur abzumildern, indem sie mehr Hardware als eigentlich notwendig einsetzen und damit den Preis für eine vernünftige und ausreichende Investition, die für die meisten Unternehmen reichen würde, hochtreiben.
Wirklich wichtig ist, wie gut sich die Hardware und das File-System mit den Workload-Varianten und dem Budget des Unternehmens vertragen. Die meisten Unternehmen verfügen nicht über unbegrenzte Finanzmittel, um sich die perfekte Kombination von NVMe und File-System anzuschaffen. IT-Professionals sollten sich deshalb nach der einfachsten möglichen Konfiguration umsehen, die zu den gewünschten Resultaten führt.
Auf was man bei einem File-System achten sollte
Es gibt hauptsächlich drei einschränkende Faktoren für die Performance eines File-Systems:
- wie effektiv kommuniziert das File-System mit dem Storage Node;
- wie effektiv verwaltet das File-System das Netzwerk, das es mit den verschiedenen Storage Nodes verbindet, und wie effektiv kommuniziert es mit den Clients; und
- wie effektiv verwaltet das File-System den Zugang zu den Metadaten.
In den meisten modernen Anwendungsumgebungen machen die Metadaten mehr als 80 Prozent aller I/O-Prozesse aus.
File-Systeme kommunizieren in der Regel mit den Speichermedien über den I/O-Stack des Betriebssystems. Die meisten fortgeschrittenen File-Systeme basieren auf Linux und kommunizieren auch darüber. Aber der Linux-Stack fügt Overhead hinzu. Eine Alternative besteht darin, für das File-System auf NVMe-Basis einen eigenen I/O-Kanal zu schaffen. Eine direkte Verbindung mit dem Laufwerk ist vom Standpunkt des Entwicklungsprozesses eines File-Systems aus schwieriger, aber es bietet den Anwendern bessere Performance-Chancen – und das ohne den Umweg über Investitionen in teure Hardware.
In der Regel kommunizieren File-Systeme mit den Clients, indem sie standardmäßige NFS-Protokolle nutzen. Aber NVMe besitzt mit NVMe-oF auch eine Netzwerkvariante. Moderne File-Systeme sollten Software zur Verfūgung stellen, die parallelen native NVMe-oF-Zugang auf dem Client ermöglicht. NVMe-oF könnte auch dazu benutzt werden, verschiedene Storage Nodes miteinander zu verbinden. Der Vorteil für den File-System-Kunden besteht in der Zugangserleichterung, die File-Systeme auf der Basis von Latenzen direkt angeschlossener Speichergeräte bieten.
In einer File-System-Struktur auf kompletter NVMe-Basis ist der Zugang zu Metadaten naturgemäß schnell, aber die Art und Weise, wie die Metadaten dargestellt werden, sollte unproblematisch sein, um wirklich von den niedrigen Latenzen von NVMe profitieren zu können. Um die Performance von Metadaten zu optimieren, sollten sie über alle Knoten des File-System-Clusters hinweg gestript werden, so dass kein einzelner Knoten die Gesamt-Performance beeinträchtigen könnte.
Wie man das Meiste aus NVMe herausholt
Mehr als alle anderen Workload-Arten können AI- und High-Velocity-Anwendungsfälle wohl besonders viel von NVMe profitieren. Das Problem bei diesen Workloads besteht darin, dass Anwendungen in der Regel den Speicherzugang über ein File-System organisieren. Traditionelle File-Systeme optimieren allerdings nicht ihre I/O-Prozesse für NVMe-basierte Laufwerke. Schnellere Nodes-Hardware und NVMe-Drives sorgen für verbesserte Performance, aber die File-System-Struktur erlaubt es der Hardware nicht, ihr volles Potential auszuspielen.
Um dieses Problem anzugehen, sollte man sich nach File-Systemen umsehen, die direkt auf NVMe-Laufwerke schreiben anstatt den Weg durch den I/O-Stack des Betriebssystems zu gehen. Man sollte auch nach File-Systemen Ausschau halten, die den Client in die Lage versetzen, über NVMe-oF zu kommunizieren, und die die Metadaten in einer Art und Weise managen, die keinen Bottleneck für die Performance darstellt.