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.
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.
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.
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.
Die Speichervirtualisierung erfolgt hier auf verschiedenen Ebenen:
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:
Nachteile:
Beispiele: EMC Invista, LSI SVM und HP SVSP
Die Virtualisierung wird direkt in einem Speichersystem durchgeführt, das jetzt die Möglichkeit hat, Fremdspeicher in die eigene Verarbeitung zu integrieren.
Vorteile:
Nachteile:
Beispiel: HDS USP-V, HP XP P9000, IBM Storwize V7000 und OEM Derivate SUN
Spezielle Virtualisierungssysteme werden im SAN im Datenpfad etabliert. Jeder IO wird durch diese Systeme geleitet und entsprechend auf die Diskblöcke gemappt.
Vorteile:
Nachteile:
Beispiele: FalconStor IPStor, IBM San Volume Controller SVC, DataCore SANsymphony-V Storage-Hypervisor
Ein Treiber auf dem Hostsystem übernimmt sämtliche Virtualisierungsfunktionen.
Vorteile:
Nachteile:
Beispiele: Veritas/Symantec Storage Foundation, OSL Storage Cluster, Linux Logical Volume Manager