Zum Inhalt springen

Speichervirtualisierung

aus Wikipedia, der freien Enzyklopädie
(Weitergeleitet von IPStor)

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

[Bearbeiten | Quelltext bearbeiten]

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

[Bearbeiten | Quelltext bearbeiten]

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

[Bearbeiten | Quelltext bearbeiten]

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:

  • Logical Block Addressing (LBA), bei dem Datenblöcke fortlaufend durchnummeriert und über ihre Blocknummern adressiert werden, abstrahiert die tatsächliche Festplattengeometrie. Auch können so Massenspeicher, die technisch anders als Festplattenlaufwerke aufgebaut sind (z. B. Solid-State-Drives) in der gleichen Weise adressiert werden.
  • Ein Hardware-RAID-System enthält mehrere Festplatten oder Solid-State-Drives, die von außen wie ein Laufwerk angesprochen werden, was eine Virtualisierung der internen Laufwerke bedeutet. Der eingebaute (RAID-)Controller verteilt die Daten und ggf. Paritätsinformationen entsprechend dem realisierten RAID-Level auf die physischen Laufwerke. Darüber hinaus können im RAID-System oft auch mehrere logische Laufwerke konfiguriert werden, die anstelle eines Laufwerkes nach außen sichtbar sind.
  • Beschreibbare Massenspeicher (physische Volumes) bestehen aus einer Partition oder sind in mehrere Partitionen, bestehend aus aufeinander folgenden Datenblöcken, unterteilt. Ihre Nutzung als Datenspeicher erfolgt nur über die Abstraktionsschicht der Partitionen.
  • Logische Volumes können mehrere Partitionen auf unterschiedlichen Massenspeichern umfassen und stellen somit im Vergleich zu Partitionen eine weitere Abstraktionsebene dar. Unter anderem werden sie vom Logical Volume Manager erzeugt oder sind das Ergebnis eines Software-RAID. Bei den dynamischen Datenträgern unter Windows wird zwischen „einfachem Volume“, „übergreifendem Volume“ und „Stripesetvolume“ unterschieden.
  • In logischen Volumes (einschließlich Partitionen einzelner Massenspeicher) muss durch Formatierung ein Dateisystem eingerichtet werden, das Anwendungen zum Speichern von Daten verwenden müssen.
  • Ein Block des Dateisystems (Cluster) umfasst mehrere Datenblöcke des Massenspeichers.
  • Der Pfadname einer Datei abstrahiert die in mehreren miteinander verketteten Clustern gespeicherten Daten der Datei. Außerdem können darüber Dateieigenschaften (Dateiattribute, Metadaten) ermittelt und teilweise geändert werden.
  • Dateien können virtuelle Laufwerke bilden, die insbesondere als Massenspeicher für virtuelle Maschinen dienen.

Storage Area Networks

[Bearbeiten | Quelltext bearbeiten]

Methoden der Virtualisierung

[Bearbeiten | Quelltext bearbeiten]

Out of Band oder Switch Based

[Bearbeiten | Quelltext bearbeiten]

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

[Bearbeiten | Quelltext bearbeiten]

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

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

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