18 Juni 2024

NetApp-Speicher und NVMe-oF für bahnbrechende Leistung in Proxmox-Virtualisierungsumgebungen

NetApp-Speicher und NVMe-oF für bahnbrechende Leistung in Proxmox-Virtualisierungsumgebungen

Was ist NVMe-oF

NVMe over Fabrics (NVMe-oF) ist ein hochmodernes Protokoll, das entwickelt wurde, um die beeindruckende Leistung und die geringe Latenz von NVMe-Speichergeräten über Netzwerk-Fabrics zu übertragen. Diese Innovation ist besonders transformativ für Rechenzentren, da sie die Trennung von Speicher- und Rechenressourcen ermöglicht, wodurch Administratoren die Möglichkeit erhalten, diese Ressourcen flexibler und mit größerer Skalierbarkeit bereitzustellen, was es perfekt für Virtualisierungs-Workloads macht.

NVMe-oF ist vielseitig in seiner Unterstützung für mehrere Transportschichten, wo es über Fibre Channel (FC), Ethernet mit dem TCP/IP-Protokoll mit RDMA-Funktionen über RoCE oder iWARP und sogar InfiniBand betrieben werden kann, wobei jede einzigartige Leistungsmerkmale bietet, die auf unterschiedliche Bereitstellungsanforderungen zugeschnitten sind.

NVMe-oF über TCP

Wenn NVMe-oF über Ethernet mit TCP bereitgestellt wird, bringt es die Vorteile von NVMe-Speicher in die größtmögliche Bandbreite von Umgebungen, ohne dass eine spezialisierte Netzwerkinfrastruktur wie Fibre Channel oder InfiniBand erforderlich ist. Dies ermöglicht den Zugriff auf Hochleistungsspeicher durch die Nutzung des gängigen und vertrauten TCP-Stacks, wodurch Komplexität und Kosten erheblich reduziert werden. Die Einführung von NVMe-oF mit TCP wird durch die weite Verbreitung von Ethernet und Fachwissen weiter erleichtert, was es zu einer überzeugenden Wahl für Unternehmen macht, die ihre Speichernetzwerke ohne eine komplette Überarbeitung aufrüsten möchten.

Die Effizienz des Protokolls bleibt auch über TCP gut erhalten, wodurch NVMe-Befehle mit minimalem Overhead übergeben werden können, was die Latenz gering hält und für latenzempfindliche Anwendungen wie virtualisierte Datenserver entscheidend ist.

NetApp-Speicher konfigurieren

Allgemein

Der Leitfaden setzt voraus, dass Benutzer die grundlegende Speichereinrichtung bereits vorgenommen haben, einschließlich der Konfiguration von Storage Virtual Machines (SVMs). Er hebt hervor, dass die Verwaltung dieser Systeme dank der intuitiven Weboberfläche, die von NetApp-Speichersystemen bereitgestellt wird, relativ unkompliziert ist. Benutzer können eine benutzerfreundliche Erfahrung bei der Verwaltung ihrer Speicherlösungen erwarten, da die Weboberfläche darauf ausgelegt ist, komplexe Aufgaben zu vereinfachen. Dies umfasst auch die gesamte Einrichtung für NVMe-oF-Speicher, was erfordert, NVMe generell auf der SVM zu aktivieren, den NVMe-Namespace und das NVMe-Subsystem einzurichten.

Hinweis: Alle Änderungen können selbstverständlich auch automatisiert durch Orchestrierung der OnTap API vorgenommen werden.

NVMe auf SVM aktivieren

Um NVMe auf SVM-Ebene in einem NetApp-Speichersystem zu aktivieren, kann dies typischerweise durch Befolgen dieser zusammengefassten Schritte erfolgen, die über die Weboberfläche des Systems zugänglich sind. Navigieren Sie einfach zum Menü Storage, dann zu Storage VMs und wählen Sie schließlich den spezifischen SVM-Namen aus, den Sie konfigurieren möchten:

  1. NVMe-Protokoll konfigurieren: Suchen Sie innerhalb der SVM-Einstellungen nach einem Abschnitt oder Tab, der sich auf Protokolle bezieht. Suchen Sie die NVMe-Option und aktivieren Sie sie. Dies kann das Aktivieren eines Kontrollkästchens oder das Umschalten eines Schalters in die Position ‚Ein‘ beinhalten.
  2. Änderungen speichern und anwenden: Nachdem Sie NVMe aktiviert haben, stellen Sie sicher, dass Sie die Änderungen speichern. Es können zusätzliche Aufforderungen oder Schritte zur Bestätigung der Änderungen erforderlich sein, abhängig vom spezifischen NetApp-System und seiner Version.

Denken Sie daran, alle Voraussetzungen oder zusätzlichen Konfigurationseinstellungen zu prüfen, die für den NVMe-Betrieb erforderlich sein könnten, wie Netzwerkeinstellungen, Lizenzierung oder Kompatibilitätsprüfungen der Hardware. Die genauen Schritte können je nach ONTAP-Version oder dem spezifischen NetApp-Modell, das Sie verwenden, leicht variieren. Beziehen Sie sich immer auf die neueste offizielle NetApp-Dokumentation oder Support-Ressourcen für die genaueste Anleitung.

Das NVMe-Subsystem erstellen

Anschließend kann ein neues NVMe-Subsystem auf dem NetApp-Speichersystem erstellt werden. Dies kann durch Auswahl des Abschnitts Hosts und Auswahl von NVMe Subsystem erfolgen, um den Prozess des Hinzufügens eines neuen Subsystems zu starten. Ein neuer Assistent öffnet sich, der zusätzliche Informationen zum neu zu erstellenden Subsystem erfordert:

Name: <Ein Bezeichner des NVMe-Subsystems>
Storage VM: <Die zuvor angepasste SVM>
Host-Betriebssystem: Linux (wichtig für die Blockgröße)
Host NQN: <NQN des Proxmox VE-Knotens>

Es ist unerlässlich sicherzustellen, dass alle Informationen, insbesondere der Host-NQN, korrekt eingegeben werden, um Konnektivitätsprobleme zu vermeiden. Konsultieren Sie zusätzlich die offizielle NetApp-Dokumentation für versionsspezifische Anweisungen oder zusätzliche Konfigurationsschritte, die erforderlich sein könnten.

Den NVMe-Namespace erstellen

Als letzten Schritt muss der NVMe-Namespace erstellt werden. Um einen NVMe-Namespace auf einem NetApp-Speichersystem hinzuzufügen, melden Sie sich zunächst bei der Weboberfläche an und navigieren Sie zum Abschnitt Storage, gefolgt von der Auswahl von NVMe Namespaces. In diesem Bereich initiieren Sie den Prozess der Erstellung eines neuen Namespace. Sie werden aufgefordert, spezifische Details für den Namespace anzugeben, wie seinen Namen, seine Größe und die zugehörige SVM, die ihn verwalten wird.

Hinweis: Beachten Sie auch einen wichtigen Hinweis zum Performance Service Level, der möglicherweise auf ein benutzerdefiniertes Profil umgestellt werden sollte, um Einschränkungen zu vermeiden.

Sobald Sie alle erforderlichen Informationen eingegeben haben, werden Sie typischerweise fortfahren, die Leistungsmerkmale auszuwählen, wie das Service Level oder die Tiering-Richtlinie, abhängig von Ihren Leistungsanforderungen und den Fähigkeiten Ihres NetApp-Systems.

Nachdem Sie diese Einstellungen konfiguriert haben, müssen Sie Ihre Auswahl überprüfen und die neue Namespace-Konfiguration speichern, um sie zur Verwendung verfügbar zu machen. Es ist wichtig sicherzustellen, dass der Namespace ordnungsgemäß konfiguriert ist, um den Anforderungen Ihrer Umgebung für optimale Leistung und Kompatibilität zu entsprechen. Überprüfen Sie immer auf zusätzliche Schritte oder Voraussetzungen, indem Sie die NetApp-Dokumentation konsultieren, die für Ihre ONTAP-Version oder Ihr Speichermodell relevant ist.

Die Konfiguration auf der Speicherseite ist nun abgeschlossen. Die nächsten Schritte werden auf dem/den Proxmox VE-Knoten durchgeführt.

Proxmox-Knoten konfigurieren

Allgemein

Nach der Konfiguration der NetApp-Speicherappliance müssen alle Proxmox VE-Knoten innerhalb des Clusters für die Nutzung und den Zugriff auf den NVMe-oF-Speicher konfiguriert werden. Leider unterstützt Proxmox VE diese Art von Speicher nicht von Haus aus. Daher kann dies nicht einfach über die Proxmox-Weboberfläche konfiguriert werden. Glücklicherweise basiert Proxmox VE auf Debian Linux, von wo aus alle benötigten Abhängigkeiten und Konfigurationen bezogen werden können, aber es erfordert, dass wir alles über die Kommandozeile (CLI) erledigen. Abhängig von der Anzahl der Knoten innerhalb des Clusters können weitere Konfigurationsmanagement-Tools wie Ansible den anfänglichen Einrichtungsprozess beschleunigen und für neue potenzielle Knoten in der Zukunft wiederholbar machen. Wir können Sie auch bei der Einrichtung maßgeschneiderter Konfigurationsmanagement-Umgebungen unterstützen, die Ihren Anforderungen entsprechen.

Im Allgemeinen besteht dieser Prozess aus:

  • Erforderliche Pakete installieren.
  • Die Kernel-Module aktivieren.
  • Erkennung des Speichers.
  • Verbindung mit dem Speicher herstellen.
  • Eine LVM-Volume-Gruppe erstellen.
  • Den Speicher in der Proxmox-Weboberfläche zuweisen.

Die nächsten Schritte in diesem Blogbeitrag werden den Prozess detailliert behandeln und Sie durch die erforderlichen Schritte auf den Proxmox VE-Knoten führen, die auf der Kommandozeile ausgeführt werden müssen.

Erforderliche Pakete installieren

Die Nutzung und der Zugriff auf NVMe-oF erfordert, dass die zugehörigen User-Land-Tools (nvme-cli) auf dem Proxmox VE-Knoten vorhanden sind. Debian Linux stellt diese Tools bereits im Debian-Repository bereit. Daher ist der gesamte Installationsprozess sehr einfach. Das Paket kann einfach mit dem folgenden Befehl installiert werden:

apt-get install nvme-cli

Dieses Paket stellt auch bereits das erforderliche Kernel-Modul bereit, das einfach durch Ausführen von geladen werden kann:

modprobe nvme_tcp

Anschließend sollte das Modul hinzugefügt werden, um beim Booten geladen zu werden:

echo "nvme_tcp" > /etc/modules-load.d/20-nvme_tcp.conf

Nach diesen Schritten kann eine Verbindung mit dem Speicher initialisiert werden.

Verbindung mit dem Speicher herstellen

Die Interaktion mit dem NetApp-Speicher und seiner NVMe-oF-Funktionalität ist ein mehrstufiger Prozess und erfordert den Austausch der NVMe Qualified Name (NQN)-Adresse jedes Proxmox VE-Knotens, der auf den NVMe-Speicher zugreift. Die NQN-Adresse eines Proxmox VE-Knotens kann durch Ausführen des Befehls abgerufen werden:

cat /etc/nvme/hostnqn

Fügen Sie die Host-NQN-Adresse zu Ihrem NetApp-Export hinzu, um den Knoten den Zugriff darauf zu ermöglichen. Eine Beispielausgabe ist im Screenshot angegeben.

Erkennung & Verbindung

Im nächsten Schritt werden die NVMe-Geräte erkannt und mit dem Proxmox VE-Knoten verbunden. Der Erkennungs- und Verbindungsprozess erfolgt einfach durch Ausführen der folgenden Befehle:

nvme discover -t tcp -a 192.168.164.100 -s 4420
nvme connect -t tcp -n na01-nqn01 -a 192.168.164.100 -s 4420

Um diese Konfiguration systemneustartfest zu machen, werden die Befehle auch zur nvme-Discovery-Datei hinzugefügt. Die nvmf-autoconnect systemd-Unit-Datei stellt sicher, dass dies geladen wird. Daher muss diese systemd-Unit-Datei ebenfalls aktiviert werden.

echo "discover -t tcp -a 192.168.164.100 -s 4420" >> etc/nvme/discovery.conf
systemctl enable nvmf-autoconnect.service

Volume-Gruppe

Die letzten Schritte werden teilweise auf der Kommandozeile und teilweise über die Proxmox-Weboberfläche durchgeführt, um den neuen Speicher zum Cluster hinzuzufügen.

Wichtig:
Diese Schritte dürfen nur auf einem einzelnen Proxmox VE Host-Knoten und nicht auf allen durchgeführt werden. Die Integration erfolgt auf Clusterebene und betrifft alle Proxmox VE-Knoten, sobald dies geschehen ist.

Der letzte Befehl auf der Kommandozeile führt zur Erstellung einer neuen LVM Volume Group (VG) auf dem neuen NVMe-Gerät, was einfach durch Ausführen des Befehls geschehen kann:

vgcreate shared_nvme01 /dev/nvme0n1

Die neu erstellte LVM Volume Group (VG) kann durch Ausführen des Befehls validiert werden:

vgdisplay shared_nvme01

Eine Ausgabe wie im angegebenen Screenshot sollte zurückgegeben werden, einschließlich aller weiteren Details dieser VG. Nach der Validierung der Informationen sind alle Aufgaben auf der Kommandozeile abgeschlossen.

Um diese LVM Volume Group schließlich auf allen Proxmox VE-Knoten innerhalb des Clusters zu verwenden, muss diese Volume Group auf Clusterebene hinzugefügt und integriert werden. Dazu müssen wir uns im Web-Frontend des Clusters anmelden und dies unter hinzufügen:

  • Datacenter
  • Storage
  • Hinzufügen
  • LVM

Im neuen Fenster müssen weitere Details für den neuen LVM-Speicher definiert werden:

  • ID: shared_nvme01 (dies kann beliebiger Text sein und ist lediglich ein Bezeichner)
  • Basisspeicher: Bestehende Volume-Gruppen
  • Volume-Gruppe: shared_nvme01
  • Inhalt: Disk-Image, Container (kann variieren)
  • Knoten: <Wählen Sie alle Knoten aus, die es verwenden sollen>
  • Aktiviert: Ja
  • Freigegeben: Ja
  • Entfernte Volumes löschen: Nein

Durch Klicken auf Hinzufügen wird dies als neues Volume an die ausgewählten Knoten angehängt und kann direkt verwendet werden.

Fazit

Die Nutzung von NVMe over Fabrics (NVMe-oF) über TCP in Verbindung mit Proxmox VE in einer Virtualisierungsumgebung stellt eine überzeugende Lösung für Organisationen dar, die kostengünstige und dennoch hochleistungsfähige Speicherarchitekturen suchen. Dieser Ansatz nutzt die weite Verbreitung und Kompatibilität von Ethernet-basierten Netzwerken, wodurch die Notwendigkeit spezialisierter Hardware wie Fibre Channel oder InfiniBand vermieden wird, die für viele Unternehmen kostenintensiv sein kann.

Durch die Integration von NVMe-oF mit Proxmox, einer beliebten Open-Source-Virtualisierungsplattform, können Benutzer von deutlich verbesserten Datenübertragungsgeschwindigkeiten und geringerer Latenz im Vergleich zu traditionellen Speicherlösungen profitieren. NVMe-oF kann nicht nur mit Proxmox VE, sondern auch auf anderen Betriebssystemen wie FreeBSD und Hypervisoren wie bhyve verwendet werden. Dies bietet einen großen Vorteil für latenzempfindliche Workloads, wie virtualisierte Datenbankserver, wo schneller Datenzugriff für die Leistung entscheidend ist. Das NVMe-Protokoll ist darauf ausgelegt, das volle Potenzial von Solid-State-Speichertechnologien auszuschöpfen. Bei Verwendung über ein Netzwerk-Fabric mittels TCP kann es eine nahezu lokale NVMe-Leistung liefern, indem es sehr kostengünstig ist.

Gerne stehen wir Ihnen zur Verfügung, um weitere Einblicke in NetApp-Speichersysteme zu geben, die sowohl Hardware- als auch Softwareaspekte abdecken. Unsere Expertise erstreckt sich auch auf Open-Source-Produkte, insbesondere bei der Einrichtung von Virtualisierungsumgebungen mit Technologien wie Proxmox und OpenShift oder deren Wartung mit Konfigurationsmanagement. Wir laden Sie ein, sich bei Bedarf an uns zu wenden.

Es könnte Sie auch interessieren zu erfahren, wie Sie VMs von VMware ESXi zu Proxmox VE migrieren oder wie Sie den Proxmox Backup Server in Ihre Infrastruktur integrieren können.

Kategorien: credativ® Inside Proxmox
Tags: howto proxmox Virtualisierung

über den Autor

gyptazy

Senior DevOps Consultant

zur Person

In my tech repertoire, FreeBSD and federated services stand not just as a personal preference but as a symbol of a commitment to the ethos of open-source. I am a fervent believer in the symbiotic relationship between developers including DevOps, SysOps and the open source community. As I continue to lead teams in the ever-evolving landscape of technology, their dedication to open-source contributions and advocacy for decentralized and federated services echoes not only in the code they write but in the ethos they instill within the teams.

Beiträge ansehen


Beitrag teilen: