Speichervirtualisierung (Storage-Virtualisierung)
Speichervirtualisierung oder auch Storage-Virtualisierung ist das Zusammenfassen von physischem Speicher aus mehreren Speichergeräten zu einem scheinbar einzigen Speichergerät - oder einem Pool verfügbarer Speicherkapazität -, das von einer zentralen Konsole aus verwaltet wird. Die Technologie stützt sich auf Software, um verfügbare Speicherkapazität von physischen Geräten zu identifizieren und diese Kapazität dann als Speicherpool zu aggregieren, der von Servern in herkömmlicher Architektur oder in einer virtuellen Umgebung von virtuellen Maschinen (VMs) genutzt werden kann.
Die virtuelle Speichersoftware fängt Ein-/Ausgabeanforderungen (E/A, I/O) von physischen oder virtuellen Maschinen ab und sendet diese Anforderungen an den entsprechenden physischen Standort der Speichergeräte, die Teil des gesamten Speicherpools in der virtualisierten Umgebung sind. Für den Benutzer sind die verschiedenen Speicherressourcen, aus denen der Pool besteht, nicht sichtbar, sodass der virtuelle Speicher wie ein einzelnes physisches Laufwerk, ein Share oder eine Logical Unit Number (LUN) erscheint, die Standard-Lese- und Schreibvorgänge akzeptieren kann.
Eine sehr grundlegende Form der Speichervirtualisierung wird durch eine Software-Virtualisierungsschicht zwischen der Hardware einer Speicherressource und einem Host - einem Personal Computer (PC), einem Server oder einem beliebigen Gerät, das auf den Speicher zugreift - dargestellt, die es Betriebssystemen und Anwendungen ermöglicht, auf den Speicher zuzugreifen und ihn zu nutzen. Sogar ein RAID-Array kann manchmal als eine Art der Speichervirtualisierung betrachtet werden. Mehrere physische Laufwerke im Array werden dem Benutzer als ein einziges Speichergerät präsentiert, das im Hintergrund Daten auf mehrere Festplatten verteilt (striped) und repliziert, um die I/O-Leistung zu verbessern und Daten zu schützen, falls ein einzelnes Laufwerk ausfällt.
Arten der Speichervirtualisierung: Block vs. File
Es gibt zwei grundlegende Methoden der Speichervirtualisierung: dateibasiert oder blockbasiert. Die dateibasierte Speichervirtualisierung ist ein spezieller Anwendungsfall, der auf Network Attached Storage-Systeme (NAS) angewendet wird. Unter Verwendung der Protokolle Server Message Block (SMB) oder Common Internet File System (CIFS) in Windows-Server-Umgebungen beziehungsweise Network File System (NFS) für Linux-Systeme bricht die dateibasierte Speichervirtualisierung die Abhängigkeit in einem normalen NAS-Array zwischen den Daten, auf die zugegriffen wird, und dem physischen Speicherorts auf. Durch das Pooling von NAS-Ressourcen können Dateimigrationen leichter im Hintergrund abgewickelt werden, was zu einer Leistungssteigerung führt. Normalerweise ist es nicht so komplex, NAS-Systeme zu verwalten, aber die Speichervirtualisierung vereinfacht die Aufgabe der Verwaltung mehrerer NAS-Geräte über eine einzige Managementkonsole erheblich.
Blockbasierter oder Blockzugriffsspeicher - Speicherressourcen, auf die typischerweise über ein Fibre Channel (FC)- oder iSCSI-SAN zugegriffen wird - wird häufiger virtualisiert als dateibasierte Speichersysteme. Blockbasierte Systeme abstrahieren den logischen Speicher, zum Beispiel eine Laufwerkspartition, von den tatsächlichen physischen Speicherblöcken in einem Speichergerät, beispielsweise einem Festplattenlaufwerk (HDD) oder einem Solid-State-Speichergerät. Da sie ähnlich wie die native Laufwerkssoftware arbeiten, gibt es weniger Overhead für Lese- und Schreibvorgänge, so dass Blockspeichersysteme eine bessere Leistung als dateibasierte Systeme erbringen.
Der blockbasierte Betrieb ermöglicht es der Virtualisierungsmanagement-Software, die Kapazität der verfügbaren Speicherblöcke über alle virtualisierten Arrays hinweg zu sammeln und in einer gemeinsamen Ressource zusammenzufassen, die einer beliebigen Anzahl von VMs, Bare-Metal-Servern oder Containern zugewiesen werden kann. Speichervirtualisierung ist besonders für Blockspeicher von Vorteil. Im Gegensatz zu NAS-Systemen kann die Verwaltung von SANs ein zeitaufwändiger Prozess sein; die Konsolidierung einer Reihe von Blockspeichersystemen unter einer einzigen Verwaltungsschnittstelle, die die Benutzer oft von den mühsamen Schritten der LUN-Konfiguration abschirmt, kann eine erhebliche Zeitersparnis darstellen.
Eine frühe Version der blockbasierten Virtualisierung war der SAN Volume Controller (SVC) von IBM, der jetzt IBM Spectrum Virtualize (Stand März 2021) heißt. Die Software läuft auf einer Appliance oder einem Speicherarray und erstellt einen einzigen Speicherpool durch die Virtualisierung von LUNs, die an Servern angeschlossen sind, die mit Speicher-Controllern verbunden sind. Spectrum Virtualize ermöglicht es Kunden auch, Blockdaten auf Public Cloud-Speicher zu schichten.
Ein weiteres frühes Produkt zur Speichervirtualisierung war die TagmaStore Universal Storage Platform von Hitachi Data Systems, die heute als Hitachi Virtual Storage Platform (VSP) bekannt ist. Die Array-basierte Speichervirtualisierung von Hitachi ermöglichte es Kunden, einen einzigen Speicherpool über verschiedene Arrays hinweg zu erstellen, sogar über Arrays anderer führender Speicherhersteller.
Funktionsweise der Speichervirtualisierung
Um den Zugriff auf die auf den physischen Speichergeräten gespeicherten Daten zu ermöglichen, muss die Virtualisierungssoftware entweder eine Zuordnung mit Hilfe von Metadaten erstellen oder in einigen Fällen einen Algorithmus verwenden, um die Daten dynamisch im laufenden Betrieb zu finden. Die Virtualisierungssoftware fängt dann Lese- und Schreibanforderungen von Anwendungen ab und kann anhand der erstellten Map die Daten auf dem entsprechenden physischen Gerät finden oder speichern. Dieser Prozess ähnelt der Methode, die von PC-Betriebssystemen beim Abrufen oder Speichern von Anwendungsdaten verwendet wird.
Die Speichervirtualisierung versteckt die tatsächliche Komplexität eines Speichersystems, zum Beispiel eines SANs, was einem Speicheradministrator hilft, die Aufgaben der Sicherung, Archivierung und Wiederherstellung einfacher und in kürzerer Zeit durchzuführen.
In-Band- vs. Out-of-Band-Virtualisierung
Im Allgemeinen gibt es zwei Arten der Virtualisierung, die auf eine Speicherinfrastruktur angewendet werden können: In-Band und Out-of-Band.
- Bei der In-Band-Virtualisierung - auch symmetrische Virtualisierung genannt - werden die Daten, die gelesen oder gespeichert werden, und die Steuerinformationen (zum Beispiel E/A-Anweisungen, Metadaten) im selben Kanal oder Layer verarbeitet. Auf diese Weise kann die Speichervirtualisierung erweiterte Betriebs- und Verwaltungsfunktionen wie Daten-Caching und Replikationsdienste bereitstellen.
- Bei der Out-of-Band-Virtualisierung - oder asymmetrischen Virtualisierung - werden die Daten- und Steuerpfade aufgeteilt. Da die Virtualisierungseinrichtung nur die Steueranweisungen sieht, sind erweiterte Speicherfunktionen normalerweise nicht verfügbar.
Virtualisierungsmethoden
Speichervirtualisierung bezieht sich heute in der Regel auf Kapazität, die von mehreren physischen Geräten angesammelt und dann zur Neuzuweisung in einer virtualisierten Umgebung zur Verfügung gestellt wird. Moderne IT-Methoden wie hyperkonvergente Infrastrukturen (Hyper-Converged Infrastructure, HCI) und die Containerisierung nutzen neben virtueller Rechenleistung und virtueller Netzwerkkapazität auch virtuellen Speicher.
Obwohl sie als Backup-Zielmedium an Bedeutung verlieren, werden Bandspeicher immer noch häufig für die Archivierung von Daten verwendet, auf die nur selten zugegriffen wird. Archivierungsdaten sind in der Regel sehr umfangreich. Speichervirtualisierung kann für Bandmedien eingesetzt werden, um die Verwaltung großer Datenspeicher zu erleichtern. Linear Tape File System (LTFS) ist eine Form der Bandvirtualisierung, die ein Band wie ein typisches NAS-Dateispeichergerät aussehen lässt und das Auffinden und Wiederherstellen von Daten vom Band mit Hilfe eines Verzeichnisses des Bandinhalts auf Dateiebene wesentlich erleichtert.
Es gibt mehrere Möglichkeiten, wie Speicher in einer virtualisierten Umgebung eingesetzt werden kann:
Host-basierte Speichervirtualisierung ist softwarebasiert und am häufigsten in HCI-Systemen und Cloud-Storage zu sehen. Bei dieser Art der Virtualisierung stellt der Host oder ein hyperkonvergentes System, das aus mehreren Hosts besteht, den Gastmaschinen virtuelle Laufwerke mit unterschiedlicher Kapazität zur Verfügung, unabhängig davon, ob es sich um VMs in einer Unternehmensumgebung, physische Server oder PCs handelt, die auf File Shares oder Cloud-Speicher zugreifen. Die gesamte Virtualisierung und Verwaltung erfolgt auf der Host-Ebene über Software, und der physische Speicher kann fast jedes Gerät oder Array sein. Einige Serverbetriebssysteme verfügen über integrierte Virtualisierungsfunktionen, wie beispielsweise Windows Server Storage Spaces.
Array-basierte Speichervirtualisierung bezieht sich am häufigsten auf die Methode, bei der ein Speicher-Array als primärer Speicher-Controller fungiert und Virtualisierungssoftware ausführt, die es ihm ermöglicht, die Speicherressourcen anderer Arrays zu bündeln und verschiedene Arten von physischem Speicher für die Verwendung als Speicher-Tiers zu präsentieren. Ein Storage-Tier kann Solid-State-Drives (SSDs) oder HDDs auf den verschiedenen virtualisierten Storage-Arrays umfassen; der physische Standort und das spezifische Array sind für die Server oder Benutzer, die auf den Speicher zugreifen, verborgen.
Die netzwerkbasierte Speichervirtualisierung ist heute in Unternehmen die am häufigsten eingesetzte Form. Ein Netzwerkgerät, zum Beispiel ein intelligenter Switch oder ein spezieller Server, verbindet sich mit allen Speichergeräten in einem FC- oder iSCSI-SAN und stellt den Speicher im Speichernetzwerk als einen einzigen, virtuellen Pool dar.
Vorteile und Einsatzmöglichkeiten der Speichervirtualisierung
Als die Speichervirtualisierung vor mehr als zwei Jahrzehnten zum ersten Mal eingeführt wurde, war sie tendenziell schwierig zu implementieren und hatte nur eine begrenzte Anwendbarkeit, was die Frage betraf, mit welchen Marken und Modellen von Speicher-Arrays die verfügbare Technologie funktionieren würde. Da sie ursprünglich Host-basiert war, musste die Speichervirtualisierungssoftware auf allen Servern installiert und gewartet werden, die Zugriff auf die gepoolten Speicherressourcen benötigten. Mit zunehmender Reife konnte die Technologie wie beschrieben auf verschiedene Arten implementiert werden, was den Einsatz in einer Vielzahl von Umgebungen erleichterte, da die Benutzer die Virtualisierungsmethode wählen konnten, die für die bestehende Infrastruktur ihres Unternehmens am sinnvollsten war.
Die Weiterentwicklung der Virtualisierungssoftware sowie Standards wie die Storage Management Initiative Specification (SMI-S) ermöglichten es den Virtualisierungsprodukten, mit einer größeren Anzahl von Speichersystemen zusammenzuarbeiten, was sie zu einer viel attraktiveren Option für Unternehmen machte, die mit steigenden Speicherkapazitäten zu kämpfen haben.
Einige der Vorteile und Einsatzmöglichkeiten der Speichervirtualisierung sind
- Leichtere Verwaltung. Eine einzige Management-Konsole zur Überwachung und Wartung mehrerer virtualisierter Storage-Arrays reduziert den Zeit- und Arbeitsaufwand für die Verwaltung der physischen Systeme. Dies ist besonders vorteilhaft, wenn sich Speichersysteme verschiedener Hersteller im Virtualisierungspool befinden.
- Bessere Speicherauslastung. Das Pooling von Speicherkapazität über mehrere Systeme hinweg erleichtert die Zuweisung, sodass die Kapazität effizienter zugewiesen und genutzt wird. Bei unverbundenen, disparaten Systemen ist es wahrscheinlich, dass einige Systeme an oder nahe der Kapazitätsgrenze arbeiten, während andere kaum genutzt werden.
- Verlängert die Lebensdauer von älteren Speichersystemen. Virtualisierung bietet eine großartige Möglichkeit, die Nutzungsdauer älterer Speichersysteme zu verlängern, indem sie als Tier in den Pool aufgenommen werden, um Archivierungs- oder weniger kritische Daten zu verwalten.
- Erweiterte Funktionen universell hinzufügen. Einige moderne Speicherfunktionen wie Tiering, Caching und Replikation können auf der Virtualisierungsebene implementiert werden. Dies hilft bei der Standardisierung dieser Praktiken über alle Systeme hinweg und kann diese erweiterten Funktionen für Systeme bereitstellen, denen sie möglicherweise fehlen.