Daniel KrasoÅ - stock.adobe.com
Die Limits von NVMe-Storage-Controllern kennen und umgehen
Innovationen bei Storage und Memory können die Limits von NVMe-Controllern abschwächen. Achten Sie darauf, die richtigen Vergleiche anzustellen und effektiv zu skalieren.
Storage-Controller haben Einschränkungen, wenn es um die Anzahl der unterstützten NVMe-Laufwerke geht. Dies ist ein Problem der PCIe-Bandbreite – es gibt nicht genug.
Dieses Problem besteht unabhängig davon, ob es sich bei der CPU des NVMe-Storage-Controllers um Intel, AMD, ARM oder kundenspezifische ASICs handelt.
Die PCIe-Bandbreite ist abhängig von der PCIe-Generation, wie in der Tabelle unten zu sehen ist.
Die meisten Storage Controller sind heute PCIe 3.0, das eine maximale Bandbreite von etwa 32 GB/s hat. Mit der zunehmenden Verbreitung von PCIe 4.0- und PCIe 5.0-Storage-Controllern wird sich die Bandbreite verdoppeln beziehungsweise vervierfachen. Das ist dringend notwendig und eine großartige Nachricht für Speicherkunden.
Allerdings kann nicht die gesamte Bandbreite den NVMe-SSDs zugewiesen werden. Der Frontend-Netzwerk-Interconnect wird einen Großteil davon verbrauchen. Die Bandbreite in diesem Bereich steigt schnell schneller als die PCIe-Bandbreite. Ethernet-NICs und InfiniBand-Host-Channel-Adapter erreichen schnell neue Bandbreiten-Höchstwerte mit einem Durchsatz pro Port, der 400 Gb/s (50 GB/s) erreicht. Sogar Fibre Channel ist jetzt mit 64 Gbit/s (8 GBit/s) verfügbar. Es braucht nicht allzu viele dieser NICs oder Adapter, um den PCIe zu sättigen.
Das bedeutet, dass die PCIe-Bandbreite für den Backend-Interconnect zu NVMe-Laufwerken für jeden gegebenen Storage Controller begrenzt sein wird, unabhängig von der PCIe-Generation. Die Bestimmung der maximalen Anzahl von NVMe-Laufwerken ist ein Balanceakt zwischen Frontend, Backend und erforderlichem Durchsatz. Die Obergrenze für PCIe 3.0-basierte NVMe-Storage-Controller liegt in der Regel bei 24 Laufwerken. Das ist nicht unbedingt eine feste Grenze. Sie hängt letztlich von den Gesamtdurchsatzanforderungen ab. Es ist jedoch eine praktische Grenze.
Die gängige Meinung in der Branche ist, dass mit der zunehmenden Verbreitung von PCIe 4.0 und 5.0 in Storage Controllern auch die praktische Anzahl der unterstützten NVMe-Laufwerke steigen sollte. Das ist möglich, aber es gibt andere Aspekte, die das Gegenteil nahelegen. Der Durchsatz von NVMe-Laufwerken wird ebenfalls zunehmen. Alles, was mit PCIe verbunden ist, erhöht den Bandbreitenverbrauch im Verhältnis zur PCIe-Bandbreite.
Und dann ist da noch die Effizienz des Storage-Software-Stacks. Software-Bloat wird wahrscheinlich adressiert werden müssen, da sonst die CPU dazu neigt, zum Performance-Engpass zu werden. Es ist möglich, ja sogar wahrscheinlich, dass sich die Gesamtzahl der unterstützten Laufwerke pro Storage Controller nicht ändern wird. Wenn das der Fall ist, wie können Speichersysteme dann ihre Gesamtleistung steigern? Die Antwort ist laut den Speicheranbietern recht einfach – mehr Controller hinzufügen.
Skalierung von NVMe-Storage-Controllern
Das derzeit gängigste Shared-Storage-System-Konfiguration ist der Aktiv-Aktiv-Controller. Zwei Controller haben jeweils Zugriff auf die Laufwerke des anderen, falls ein Controller ausfällt. Zwei Controller erhöhen in der Regel nicht die Anzahl der voll adressierbaren NVMe-Laufwerke. Dies soll verhindern, dass es zu großen Leistungseinbußen kommt, wenn ein NVMe-Storage-Controller nicht verfügbar ist. Die Skalierung der Anzahl der Storage Controller über zwei hinaus erfordert eine etwas kreativere Architektur.
Skalieren Sie die Anzahl der Controller mit der Scale-out-Methode. Die Skalierung von Blockspeicher erfolgt in der Regel durch eine Art von Clustering. Scale-Out für Datei- und Objektspeicher ist in der Regel ein globaler Namespace, aber nicht immer. Alle Scale-Out-Architekturen sind entweder Shared Everything oder Shared Nothing. Bei Blöcken ist es wahrscheinlicher, dass es sich um Shared Everything handelt, aber nicht immer. Shared Nothing ist häufiger bei Dateien und Objekten anzutreffen.
Ein Problem bei einigen Scale-Out-Block-Architekturen ist die abnehmende Gesamtleistung. Jeder neue Controller bringt weniger Leistung als der vorherige, bis der nächste die Leistung negativ beeinflusst. Dies ist im Allgemeinen ein Problem für geclusterte Shared-Everything-Architekturen. Shared-Nothing-Architekturen skalieren in der Regel eher nahezu linear auf viel höhere Zahlen. Alle Scale-Out-Architekturen erhöhen jedoch die Anzahl der Rack-Einheiten (RU), Switch-Ports, Switches, NICs oder Adapter, Kabel, Transceiver, Kabelmanagement, Leerrohre, Stromversorgung, Kühlung, USV oder anderer Hardware. Dies erhöht die Kosten für die Speichersysteme spürbar.
Verfügbare Produkte
Es gibt einige gute Nachrichten. In den letzten Jahren gab es sinnvolle Innovationen von mehreren Anbietern, die speziell darauf abzielen, die Einschränkungen von NVMe-Laufwerken zu lösen. Dieser Artikel hebt vier von ihnen hervor. Aber es sind bei weitem nicht die einzigen vier.
Pavilion Data Systems HyperParallel Flash Array, angetrieben von Pavilion HyperOS. Pavilion hat herausgefunden, wie man 20 Storage Controller und 72 NVMe-Laufwerke in ein einziges 4-HE-Gehäuse einbauen kann. Alle Controller haben über einen internen PCIe-Switch Zugriff auf alle Laufwerke. Dies reduziert den Platzbedarf im Rack, den Stromverbrauch, die Kühlung, und die USV bei der Skalierung erheblich. Sie unterstützen Block-, Datei- und Objektspeicher und können jeweils linear skaliert werden, indem einfach zusätzliche Chassis hinzugefügt werden. Das Produkt clustert Blöcke und nutzt dabei einen globalen Datei- und einen globalen Objekt-Namensraum. Dies ist eine clevere Mischung aus Shared-Alles- und Shared-Nothing-Architekturen.
StorOne S1 Storage Systems. StorOne ist derzeit nur eine skalierbare Aktiv-Aktiv-Architektur, die sich eindeutig auf den Speichersoftware-Stack und die Effizienz der Dienste konzentriert. Sie unterstützt Block-, Datei- und Objektspeicher. Ihre effizientere Software setzt die CPU frei, um die maximale Leistung aus den angeschlossenen NVMe- und SAS/SATA-Laufwerken herauszuholen. Dies erhöht zwar nicht die Anzahl der adressierbaren NVMe-Laufwerke, verringert aber die Latenz und erhöht IOPS und Durchsatz dieser Laufwerke innerhalb des Speichersystems.
Fungibel. Dieses Produkt ist ein reines Block-Storage-Produkt. Was Fungible innovativ macht, ist die vollständige Trennung von Steuerung und Datenpfad. Die Logik der Speicherdienste und die Metadaten sind von den Speicher-I/Os in separaten Controllern außerhalb des Datenpfads getrennt. Alle Storage-I/O-Controller befinden sich im Datenpfad und haben nichts miteinander zu tun. Die Out-of-Data-Path-Controller kümmern sich um Routing, Snapshots, Replikation und Verwaltung im Allgemeinen.
Vast Data Universal Storage. Universal Storage ist ein Datei- und Objektspeicher, der linear bis in den Exabyte-Bereich skaliert. Es handelt sich um eine disaggregierte Shared-Alles-Architektur. Vast Data hat auch die Speicherlogik-Controller und die Speicher-I/O-Controller innovativ getrennt. Die Speicherlogik-Controller haben einen globalen Namespace und sind das, womit sich die Anwendungsserver verbinden. Ein Vast Data Speicherlogik-Controller kann eine Appliance oder ein Container in einem Server sein. Jeder der Speicherlogik-Controller greift dann über NVMe-oF-Ethernet auf Speicher-I/O-Controller mit QLC-SSD-Kapazität zu. Jeder Speicher-I/O-Controller verfügt über einen Frontend-Cache mit 18 TB Speicher der NVMe-Speicherklasse. Jeder der Logik-Controller hat Zugriff auf jeden der Kapazitätsspeicher-I/O-Controller.
Dies sind nicht die einzigen innovativen, skalierbaren NVMe-Speichersysteme auf dem Markt. Start-ups wie Excelero (Block), WekaIO (Datei) und Rozo (Datei und Objekt) haben innovative Architekturen, um mit den Einschränkungen der NVMe-Controller umzugehen. Selbst die großen traditionellen Speicheranbieter wie Dell, HPE, IBM, NetApp und Vantara haben vergleichsweise innovative Scale-Out-Speicherprodukte, die Einschränkungen der NVMe-Controller abschwächen können.
Der Vergleich dieser Systemarchitekturen ist schwierig. Ihre Architekturen sind die Art und Weise, wie sie Speicherprobleme lösen, wie die Einschränkungen der NVMe-Storage-Controller. Vergleichen Sie nicht die Architekturen, sondern die Ergebnisse im Hinblick darauf, wie sie die Anforderungen des Unternehmens erfüllen. Stellen Sie sicher, dass die Vergleiche sich gleichermaßen auf die Anforderungen konzentrieren, nicht wie sie diese erfüllen.
Es ist am besten, die erforderliche Leistung und Kapazität über die geplante Lebensdauer des Speichersystems zu bestimmen. Messen Sie dann, wie die einzelnen Systeme diese Anforderungen erfüllen können und welche Gesamtkosten sie dafür verursachen.
Im Interesse einer vollständigen Transparenz ist keiner dieser Anbieter ein aktueller Kunde des Autors. Die meisten von ihnen waren jedoch in den letzten 23 Jahren zu einem bestimmten Zeitpunkt Kunden.