chris - Fotolia
Neue NVMe-Anforderungen konzentrieren sich auf Management
NVMe ist zu einem Standard für die Kommunikation bei SSDs geworden. NVMe-MI ist eine Erweiterung dieses Standards, die zusätzliche Aufgaben unterstūtzt.
Das NVMe-Interface entwickelt sich schnell zu einem Industriestandard für die Kommunikation zwischen In-band Host-Software und SSDs. Seit kurzem wurde die NVMe Management-Interface-Spezifikation (NVMe-MI) als Zusatz zu NVMe hinzugefügt, um Support für das Out-of-Band-Management zu gewährleisten. Der Standard NVMe-MI definiert eine Gruppe von Befehlen und eine Architektur zur Kontrolle von NVMe-Storage, mit der über eine entfernte Management-Applikation NVMe-Geräte identifiziert, überwacht und erneuert werden können.
NVMe ist eine Schnittstelle und ein Kommando-Set zur Kommunikation mit Speichergeräten, die über einen Serial Expansion Bus beziehungsweise via Peripheral Component Interconnect Express (PCIe) an einen Computer angeschlossen sind.
PCIe ist ein Bus-Standard, der im allgemeinen für die Anbindung peripherer Geräte an einen Computer benutzt wird und niedrigere Latenzen und höhere Datentransferraten als seine Vorläufer bietet. Jedes periphere Gerät, das über einen PCIe-Bus an das Motherboard angeschlossen ist, verfügt über seine eigene Point-to-Point-Verbindung. Auf diese Weise konkurrieren mehrere PCIe-Geräte, die an den gleichen Computer angebunden sind, nicht um die Bandbreite.
Das NVMe-Interface kümmert sich um viele Begrenzungen früherer Storage-Technologien, die nicht die Vorteile von PCIe-SSDs voll ausnutzen konnten, indem sie nun Verbesserungen bei IOPS, Bandbreite und Latenzen bringt. Als ein Resultat dieser Entwicklung wird NVMe schnell zu einem De-facto-Standard für diese PCIe-Drives.
NVMe erleichtert die Kommunikation zwischen der Host-Software und PCIe Non-Volatile-Memory-Subsystemen. Ein NVM-Subsystem besteht aus einem PCIe-Storage-Modul, das die benötigten Komponenten zur NVMe-Kommunikation umfasst. Zusätzlich zu den Speichermedien enthält das Subsystem einen oder mehrere NVMe-Controller, eventuell mehrere PCIe-Ports und verschiedene andere Komponenten.
Einführung von NVMe-MI
NVMe-MI setzt auf der NVMe-Interface-Spezifikation auf, um eine Management-Infrastruktur für NVMe-Geräte zur Verfügung zu stellen. NVMe-MI besteht aus einer Architektur und einem Befehlssatz, die unmittelbare Out-of-Band-Verwaltung von NVM-Subsystemen ermöglicht. Der NVMe-MI-Befehlssatz definiert die Command-Botschaften, die der Management-Controller erledigen darf. Der Set umfasst NVMe-Admin-Kommandos, spezifische NVMe-MI-Kommandos und Kommandos, die Zugang zu PCIe-Konfigurationen bieten.
Entsprechend der NVMe-MI-Spezifikation unterstützt NVMe-MI verschiedene Schlüsselaufgaben:
- Auffinden von NVMe-Geräten und ihrer Fähigkeiten
- Speichern von Daten über die Host-Umgebung und sie für den Management-Controller verfügbar machen
- Monitoring des Zustands und der Auslastung der NVMe-Geräte
- Erhaltung der Security der nicht-aktiven Daten
Zusätzlich zu diesen Aufgaben stellt NVMe-MI mehrere Befehlssätze zur Verfügung, um langfristige Latenzkommandos daran zu hindern, Monitoring-Aufgaben zu blockieren. NVMe-MI unterstützt auch das Standardformat Vital Product Data (VPD) und stellt das Lesen und Schreiben von VPD-Inhalten zur Verfügung.
Besonders wichtig ist es, dass diese NVMe-Interface-Spezifikation offen gegenüber allen Systemen ist. Sie gibt keine Empfehlungen oder Voraussetzungen über NVM-Storage, Systemprozessoren oder Betriebssysteme an oder schlägt irgendwelche Anwendungsmodelle vor. Zum Beispiel äußert sich die Spezifikation nicht darüber, ob NVMe mit SSDs, Hauptspeicher, Cache oder anderen Memory-Arten benutzt werden sollte. Das primäre Ziel der Spezifikation besteht darin, eine Schnittstelle für allgemeines Management auf einem Niveau zur Verfügung zu stellen, das von den Implementierungsdetails abstrahiert.
Die Prokoll-Layer von NVMe-MI
Eine NVMe-MI-Infrastruktur besteht aus Applikations-Layer, Protokoll-Layer, Message-Transport-Layer und physischem Layer, die bei den managementbezogenen Nachrichten zusammenarbeiten:
- Der Applikations-Layer umfasst zwei Komponenten. Die erste ist die Managementanwendung, die für die Verwaltung des NVM-Subsystems genutzt wird. Die zweite ist der Management-Controller, der mit dem Subsystem wegen der Anwendung kommuniziert.
- Der Protokoll-Layer besteht aus dem aktuellen NVMe-MI-Interface, das mit jedem Management-Controller verbunden ist. Das Interface führt die Managementaufgaben bei dem NVM-Subsystem und dessen Managementendpunkten aus.
- Der Message Transport-Layer beruht auf dem Management Component Transport Protocol (MCTP) und den MCTP-Verbindungen mit dem physischen Layer. MCTP ist ein Protokoll, das Managementaufgaben zwischen intelligenten Hardwaregeräten unterstützt. NVMe-MI nutzt MCTP, um die Kommunikation zwischen dem Management-Controller und den -Endpunkten zu erleichtern. Der Message-Transport-Layer unterstützt sowohl PCIe- und System-Management-Bus-I2C-Verbindungen. SMBus und I2C sind kompatible zweidrahtige Busse.
- Der physische Layer schließt die nötigen Ports ein, um Nachrichten vom Message-Transport-Layer zu empfangen, wobei jeder Port mit einem Managementendpunkt verbunden ist. Der physische Layer kann entweder keine oder mehrere PCIe-Ports oder auch einen SMBus-I2C-Port umfassen.
Alle NVMe-MI-Verbindungen kommen zwischen dem Management-Controller in dem Applikations-Layer und den Managementendpunkten im physischen Layer zustande, wobei sie unterwegs den Protokoll-Layer und den Message-Transport-Layer passieren. Mit anderen Worten, alle NVMe-MI-Kommunikation entsteht oder endet beim Management-Controller oder den Managementendpunkten.
Die Managementendpunkte, die an die PCIe- und SMbus-I2C-Ports angeschlossen sind, unterstützen alle die gleichen NVMe-MI-Kommandos und stellen die gleiche Funktionalität zur Verfügung, einschließlich der Fähigkeit, ihre Leistungen anzuzeigen. PCIe-Ports unterstützen jedoch viel höhere Datenraten als SMBus-I2C-Ports.
NVMe-MI wird immer besser
Die jüngste Überarbeitung der NVMe-MI-Spezifikation ist die Version 1.1, die vor allem die Fähigkeit hinzugefügt hat, NVMe-Kommandos über eine NVMe Admin Queue zu tunneln. Da NVMe over Fabrics ebenso die NVMe Admin Queue unterstützt, können NVMe-MI-Kommandos nun über eine NVMe-oF-Verbindung geschickt werden. Außerdem fügt NVMe-MI 1.1 die Unterstützung für In-band-Management hinzu sowie die Fähigkeit, SSD-Systeme zu verwalten, einschließlich solcher Elemente wie Ventilatoren und Temperatursensoren.
Trotz der Verbesserungen, die Version 1.1 bringt, ist dieser NVMe-Schnittstellenstandard noch immer eine relativ junge Technologie, und es wird noch einige Zeit vergehen, ehe sie breiter eingesetzt wird. Auf jeden Fall aber stellt NVMe-MI eine wichtige Ergänzung der NVMe-Spezifikation und einen entscheidenden Schritt vorwärts hin zu einem effektiveren Management von NVMe-Geräten dar. NVMe-MI unterstreicht auch die wichtigen Geländegewinne, die NVMe in den vergangenen Jahren gemacht hat und welche wesentliche Rolle es inzwischen bei der Unterstützung von SSD-Geräten spielt. Mit so einer weit verbreiteten Anwendung wird es nur eine Sache der Zeit sein, bis NVMe-MI auch ein regulärer Bestandteil der IT-Infrastruktur werden wird.