Speichervirtualisierung

In der Informatik wird die Virtualisierung von Datenspeicher als Speichervirtualisierung bezeichnet. Obwohl ihr Prinzip auf unterschiedliche Arten von Datenspeicher d. h. Ebenen der Speicherhierarchie angewendet wird, hat sich der Begriff in der Praxis nur bei Storage Area Networks (SAN) etabliert.

Allgemeines Prinzip

Die Grundlage der Speichervirtualisierung bildet, wie auch bei den übrigen Virtualisierungen, eine Abstraktion von physischen Ressourcen, hier speziell Datenspeicher, gegenüber Subjekten, je nach Kontext auch Prinzipale, Akteure oder Aktivitäten genannt. Subjekt kann ein Benutzer, Programm (in Ausführung), Prozess, Thread oder Maschinenbefehl sein. Als Datenspeicher kommen entsprechend der Speicherhierarchie Prozessor-Register, Prozessor-Cache, physischer Arbeitsspeicher, Solid-State-Drives und Festplattenlaufwerke in Frage. Zwischen Subjekt und Datenspeicher liegt eine Abstraktionsschicht, die bestimmte physische Eigenschaften (z. B. die Speicherkapazität) des Datenspeichers vor dem Subjekt verbirgt. So kann ein physischer Datenspeicher in mehrere logische bzw. virtuelle Datenspeicher unterteilt oder mehrere physische Datenspeicher in einen logischen bzw. virtuellen Datenspeicher zusammengefasst werden. Im zweiten Fall kann Thin Provisioning angewendet werden, bei dem nur der Speicher reserviert wird, der auch tatsächlich benötigt wird. Bei Bedarf wird freie Kapazität zusätzlich für das Subjekt bereitgestellt. Die Summe der Obergrenzen des reservierbaren virtuellen Datenspeichers aller Subjekte darf die Kapazität des physischen Datenspeichers übersteigen. Bevor der tatsächlich genutzte Speicher die physische Kapazität überschreitet, werden Daten automatisch in einem Datenspeicher einer tieferen Ebene der Speicherhierarchie ausgelagert, was Swapping genannt wird, oder es muss rechtzeitig manuell physischer Datenspeicher hinzugefügt werden, z. B. durch Erweiterung des RAM im Computer oder Integration neuer SSDs oder Festplatten im Speichernetzwerk. Für Thin Provisioning gilt ebenfalls, dass der Begriff in der Praxis nur in Storage Area Networks verwendet wird.

Prozessor-Register

Programme, Prozesse und Threads können nur die in der Befehlssatzarchitektur (ISA) definierten Register verwenden. In der physischen Prozessorarchitektur von superskalaren Prozessoren existieren aber mehr Register. Beispielsweise sind beim Pentium Pro acht Register ansprechbar und 96 Register intern vorhanden. Die Register der ISA virtualisieren somit die physischen Register. Während der Befehlsdekodierung werden die virtuellen Register mittels Registerumbenennung in physische Register übersetzt.

Arbeitsspeicher

Der virtuelle Speicher ist ein vom tatsächlich vorhandenen Arbeitsspeicher unabhängiger Adressraum, der einem Prozess vom Betriebssystem zur Verfügung gestellt wird. Diese Speichervirtualisierung erfolgt durch die virtuelle Speicherverwaltung des Betriebssystems mit Unterstützung der Memory Management Unit (MMU) im Prozessor, welche beim Paging den Speicherseiten im virtuellen Adressraum Seitenrahmen im realen Adressraum mit Hilfe von im Arbeitsspeicher liegenden Seitentabellen zuordnet. Der insgesamt von allen Prozessen benutzte virtuelle Speicher kann größer werden als der tatsächlich vorhandene physische Speicher. Spätestens kurz bevor dieser Fall eintritt werden mittels Swapping Speicherseiten auf Festplatten ausgelagert.

Massenspeicher

Die Speichervirtualisierung erfolgt hier auf verschiedenen Ebenen:

Storage Area Networks

Methoden der Virtualisierung

Out of Band oder Switch Based

Die Betrachtung der Out-of-Band-Speichervirtualisierung ist heute nur noch akademisch notwendig. Die Produkte, die diesen Ansätzen gefolgt sind, wurden vom Markt verdrängt. Grund hierfür ist vor allen Dingen das sehr komplexe Setup, das für diese Art der Speichervirtualisierung notwendig war.

Dieser Ansatz verspricht, dass die eigentlichen Virtualisierungssysteme sich außerhalb des Datenpfades befinden. Die eigentliche Virtualisierung wird in Switchsystemen durchgeführt. Hier kommt es zu der logischen Verknüpfung von Speicherbereichen zu virtuellen Laufwerken.

Vorteile:

  • Keine Behinderung im Datenpfad. Da die Virtualisierung sehr nahe am Switch durchgeführt wird, spricht man hier von IO-Verzögerungen um ca. 30 Mikrosekunden je IO. Das ist vergleichsweise wenig, wenn man davon ausgeht, dass sich ein Diskzugriff im Millisekundenbereich abspielt.

Nachteile:

  • Keine Möglichkeit, Caching im Datenpfad zu etablieren. Damit hängt die Leistungsfähigkeit der Virtualisierung von der individuellen Performance und damit auch den Kosten der unterliegenden Speichersysteme ab.

Beispiele: EMC Invista, LSI SVM und HP SVSP

Virtualisierung über ein Speichersystem

Die Virtualisierung wird direkt in einem Speichersystem durchgeführt, das jetzt die Möglichkeit hat, Fremdspeicher in die eigene Verarbeitung zu integrieren.

Vorteile:

  • Ein Speichersystem, das individuell mit Fremdspeicher erweitert werden kann. Alle Funktionen können jetzt von einer zentralen Stelle aus verwaltet werden.
  • Das Konzept eignet sich sehr gut zur Konsolidierung verschiedener Speichersysteme.

Nachteile:

  • Durch den hohen Konsolidierungswert besteht die Gefahr, dass es wesentlich günstiger ist, das Speichersystem selbst auszubauen als Fremdspeicher an das System anzuschließen. Das wiederum widerspricht dem Virtualisierungsansatz speziell dann, wenn die Speichervirtualisierung als zukünftiges Konzept angesehen wird.

Beispiel: HDS USP-V, HP XP P9000, IBM Storwize V7000 und OEM Derivate SUN

In Band

Spezielle Virtualisierungssysteme werden im SAN im Datenpfad etabliert. Jeder IO wird durch diese Systeme geleitet und entsprechend auf die Diskblöcke gemappt.

Vorteile:

  • Die Virtualisierung ist komplett transparent für die Server.
  • Das Virtualisierungssystem wird zur Speicherinstanz: die Server benötigen keine speziellen Treiber für die Speicherhardware, da sie diese nicht mehr sehen können.
  • Durch integrierte Caches kann die Leistungsfähigkeit des Systems verbessert werden.
  • Günstigere Speichersysteme können dadurch wesentlich höhere Leistung erbringen.

Nachteile:

  • Immer dann, wenn das Virtualisierungssystem schwache Cacheeigenschaften hat, wird die Leistung des Speichers verschlechtert.
  • Eine erhöhte Latenzzeit durch den Einsatz eines Layers wird im Allgemeinen durch Cache ausgeglichen.

Beispiele: FalconStor IPStor, IBM San Volume Controller SVC, DataCore SANsymphony-V Storage-Hypervisor

Hostbasiert

Ein Treiber auf dem Hostsystem übernimmt sämtliche Virtualisierungsfunktionen.

Vorteile:

  • Es wird keine zusätzliche Hardware benötigt.
  • Beste Performance von allen Speichervirtualisierungsverfahren, da alle Speichergeräte immer direkt, d. h. ohne zwischengeschaltete Instanzen (vgl. In Band) und damit ohne zusätzliche Latenzen angesprochen werden können. Caching-Verfahren auf dem Host ermöglichen zusätzliche Beschleunigungen und sind prinzipbedingt schneller als Caches im SAN.
  • Beliebig skalierbar, limitierender Faktor ist primär die Zahl möglicher I/O-Controller.
  • Leichter Zugriff auf die Funktionen der Speichervirtualisierung vom Betriebssystem des Hosts oder gar aus Applikationen heraus.
  • Damit besondere Eignung für die Kombination mit virtuellen Maschinen.
  • Leichte Austauschbarkeit der Speichersysteme, hostgesteuerte Live-Migration der Daten zwischen Speichersystemen.

Nachteile:

  • Die hostbasierte Speichervirtualisierung muss für jede gewünschte Plattform portiert werden und ist daher meist nur für ausgewählte Betriebssysteme verfügbar.
  • Im SAN haben u. U. mehrere Host gleichzeitig Zugriff auf die Speicherressourcen. Erst eine clusterfähige hostbasierte Speichervirtualisierung kann die daraus entstehenden Probleme lösen, bietet dann aber mehr Komfort z. B. für Hochverfügbarkeitslösungen, Live-Migrationen und Ressourcen-Sharing.

Beispiele: Veritas/Symantec Storage Foundation, OSL Storage Cluster, Linux Logical Volume Manager

Siehe auch