Speicher

In diesem Abschnitt wird beschrieben, wie physische Speicherhardware virtuellen Maschinen (VMs) zugeordnet wird, und welche Softwaremobjekte, die von der Management-API zum Ausführen speicherbezogener Aufgaben verwendet werden. Detaillierte Abschnitte zu den unterstützten Speichertypen enthalten die folgenden Informationen:

  • Verfahren zum Erstellen von Speicher für VMs mithilfe der CLI mit typspezifischen Gerätekonfigurationsoptionen
  • Erstellen von Snapshots für Sicherungszwecke
  • Best Practices für die Speicherverwaltung
  • QoS-Einstellungen für virtuelle Festplatten (Quality of Service)

Speicher-Repositories (SRs)

Ein Storage Repository (SR) ist ein bestimmtes Speicherziel, in dem Virtual Machine (VM) Virtual Disk Images (VDIs) gespeichert werden. Ein VDI ist eine Speicherabstraktion, die ein virtuelles Festplattenlaufwerk (HDD) darstellt.

SRs sind flexibel, mit integrierter Unterstützung für die folgenden Laufwerke:

Lokal verbunden:

  • ID
  • SATA
  • SCSI
  • SAS

Remote-Verbindung:

  • iSCSI
  • NFS
  • SAS
  • Fibre Channel

Die SR- und VDI-Abstraktionen ermöglichen es, erweiterte Speicherfunktionen für Speicherziele verfügbar zu machen, die sie unterstützen. Beispielsweise erweiterte Funktionen wie Thin Provisioning, VDI-Snapshots und schnelles Klonen. Für Speichersubsysteme, die erweiterte Vorgänge nicht direkt unterstützen, wird ein Software-Stack bereitgestellt, der diese Funktionen implementiert. Dieser Software-Stack basiert auf Microsofts Virtual Hard Disk (VHD) Spezifikation.

SR-Befehle bieten Operationen zum Erstellen, Löschen, Ändern der Größe, Klonen, Verbinden und Entdecken der einzelnen VDIs, die sie enthalten.

Ein Speicher-Repository ist eine persistente, auf der Festplatte gespeicherte Datenstruktur. Bei SR-Typen, die ein zugrunde liegendes Blockgerät verwenden, beinhaltet das Erstellen einer SR das Löschen vorhandener Daten auf dem angegebenen Speicherziel. B. NFS, erstellen Sie parallel zu vorhandenen SRs einen Container auf dem Speicher-Array.

Jeder HASH (0x2e68218) Server kann mehrere SRs und verschiedene SR-Typen gleichzeitig verwenden. Diese SRs können zwischen Hosts freigegeben oder für bestimmte Hosts dediziert werden. Gemeinsamer Speicher wird zwischen mehreren Hosts innerhalb eines definierten Ressourcenpools gepoolt. Ein freigegebener SR muss für jeden Host auf das Netzwerk zugreifen können. Alle Server in einem einzelnen Ressourcenpool müssen mindestens eine gemeinsame gemeinsame SR haben.

CLI-Vorgänge zur Verwaltung von Speicher-Repositorys werden unter beschriebenSR-Befehle.

Virtual Disk Image (VDI)

Ein Virtual Disk Image (VDI) ist eine Speicherabstraktion, die ein virtuelles Festplattenlaufwerk darstellt. VDIs sind die grundlegende Einheit des virtualisierten Speichers in HASH (0x2c1a078). VDIs sind persistente, auf Datenträgerobjekte, die unabhängig von HASH-Servern (0x2e68218) vorhanden sind. CLI-Vorgänge zur Verwaltung von VDIs werden unter beschriebenVDI-Befehle. Die Darstellung der Daten auf der Festplatte unterscheidet sich vom SR-Typ. Eine separate Speicher-Plug-in-Schnittstelle für jede SR, die sogenannte SM-API, verwaltet die Daten.

Physische Blockgeräte (PBDs)

Physische Blockgeräte stellen die Schnittstelle zwischen einem physischen Server und einem angeschlossenen SR dar. PBDs sind Connectorobjekte, mit denen ein bestimmter SR einem Host zugeordnet werden kann. PBDs speichern die Gerätekonfigurationsfelder, die verwendet werden, um eine Verbindung mit einem bestimmten Speicherziel herzustellen und mit ihnen zu interagieren. Die NFS-Gerätekonfiguration enthält beispielsweise die IP-Adresse des NFS-Servers und den zugeordneten Pfad, den der HASH-Server (0x2e68218) bereitstellt. PBD-Objekte verwalten die Laufzeitanhänge einer bestimmten SR an einen bestimmten HASH (0x2e68218) Server. CLI-Operationen in Bezug auf PBDs werden unter beschriebenPBD-Befehle.

Virtuelle Blockgeräte (VBDs)

Virtuelle Blockgeräte sind Connectorobjekte (ähnlich der oben beschriebenen PBD), die Zuordnungen zwischen VDIs und VMs ermöglichen. Neben der Bereitstellung eines Mechanismus zum Anfügen eines VDI an eine VM ermöglichen VBDs die Feinabstimmung von Parametern bezüglich QoS (Quality of Service) und Statistiken eines bestimmten VDI und ob dieser VDI gestartet werden kann. CLI-Vorgänge, die sich auf VBDs beziehen, werden unter beschriebenVBD-Befehle.

Zusammenfassung der Speicherobjekte

Die folgende Abbildung zeigt, wie die bisher dargestellten Speicherobjekte zusammenhängen:

Grafische Übersicht über Speicher-Repositories und zugehörige Objekte

Datenformate virtueller Datenträger

Im Allgemeinen gibt es die folgenden Arten der Zuordnung von physischem Speicher zu einem VDI:

  1. Logische Volume-basierte virtuelle Festplatte auf einer LUN: Der standardmäßige HASH (0x2c1a078) blockbasierte Speicher fügt einen logischen Volume-Manager auf einem Datenträger ein. Diese Festplatte ist entweder ein lokal angeschlossenes Device (LVM) oder eine SAN-angeschlossene LUN über Fibre Channel, iSCSI oder SAS. VDIs werden als Volumes innerhalb des Volume-Managers dargestellt und im VHD-Format gespeichert, um eine Thin Provisioning von Referenzknoten auf Snapshot und Clone zu ermöglichen.

  2. Dateibasiertes QCOW2 auf einer LUN: VM-Images werden als Thin-bereitgestellte QCOW2-Formatdateien auf einem GFS2-Dateisystem mit freigegebenem Datenträger auf einer LUN gespeichert, die entweder über iSCSI-Softwareinitiator oder Hardware-HBA angeschlossen ist.

  3. Dateibasierte virtuelle Festplatte auf einem Dateisystem: V M-Images werden als Thin-Provisioned-VHD-Formatdateien auf einem lokalen, nicht freigegebenen Dateisystem (EXT-Typ SR) oder einem gemeinsam genutzten NFS-Ziel (NFS-Typ SR) gespeichert.

VDI-Typen

Für die meisten SR-Typen werden VHD-Format-VDIs erstellt. Sie können roh zum Zeitpunkt der Erstellung des VDI verwenden. Diese Option kann nur mit der xe-CLI angegeben werden. Für GFS2-SRs werden QCOW2-VDIs erstellt.

Um zu überprüfen, ob ein VDI mit erstellt wurdetype=raw, überprüfen Sie die zugehörigesm-configKarte. Zu diesem Zweck können die Befehle „sr-param-list und „vdi-param-list xe „verwendet werden.

Erstellen eines virtuellen Rohdatenträgers mithilfe der xe-CLI

  1. Führen Sie den folgenden Befehl aus, um einen VDI mit der UUID des SR zu erstellen, in dem Sie das virtuelle Laufwerk platzieren möchten:

    xe vdi-create sr-uuid=sr-uuid type=user virtual-size=virtual-size \
            name-label=VDI name sm-config:type=raw
    
  2. Schließen Sie das neue virtuelle Laufwerk an eine VM an. Verwenden Sie die Datenträgertools innerhalb der VM zum Partitionieren und Formatieren oder anderweitig den neuen Datenträger verwenden. Mit demvbd-create Befehl können Sie eine VBD erstellen, um das virtuelle Laufwerk Ihrer VM zuordnen.

Konvertieren zwischen VDI-Formaten

Es ist nicht möglich, eine direkte Konvertierung zwischen den Roh- und VHD-Formaten durchzuführen. Stattdessen können Sie eine VDI erstellen (entweder roh, wie oben beschrieben, oder virtuelle Festplatte) und dann Daten von einem vorhandenen Volume in sie kopieren. Verwenden Sie die xe-CLI, um sicherzustellen, dass der neue VDI eine virtuelle Größe hat, die mindestens so groß ist wie der VDI, von dem Sie kopieren. Sie können dies tun, indem Sie dasvirtual-size Feld überprüfen, z. B. mit demvdi-param-list Befehl. Anschließend können Sie diesen neuen VDI an eine VM anhängen und Ihr bevorzugtes Tool innerhalb der VM verwenden, um eine direkte Blockkopie der Daten zu erstellen. Zum Beispiel Standard-Datenträgerverwaltungstools in Windows oder derdd Befehl in Linux. Wenn es sich bei dem neuen Volume um ein VHD-Volume handelt, verwenden Sie ein Tool, das das Schreiben leerer Sektoren auf den Datenträger vermeiden kann. Diese Aktion kann sicherstellen, dass der Speicherplatz im zugrunde liegenden Speicher-Repository optimal genutzt wird. Ein dateibasierter Kopieransatz ist möglicherweise besser geeignet.

VHD- und QCOW2-basierte VDIs

VHD- und QCOW2-Images können verkettetwerden, sodass zwei VDIs gemeinsame Daten gemeinsam nutzen können. In Fällen, in denen eine VHD-gestützte oder QCOW2-gestützte VM geklont wird, teilen die resultierenden VMs die gemeinsamen Daten auf der Festplatte zum Zeitpunkt des Klonens. Jede VM führt ihre eigenen Änderungen in einer isolierten Copy-on-Write-Version des VDI durch. Mit dieser Funktion können solche VMs schnell aus Vorlagen geklont werden, was eine sehr schnelle Bereitstellung und Bereitstellung neuer VMs erleichtert.

Wenn VMs und ihre zugehörigen VDIs im Laufe der Zeit geklont werden, werden dadurch Bäume von verketteten VDIs erstellt. Wenn eine der VDIs in einer Kette gelöscht wird, rationalisiert HASH (0x2c1a078) die anderen VDIs in der Kette, um unnötige VDIs zu entfernen. Dieser Koaleszierungs prozess wird asynchron ausgeführt. Die Menge des zurückgeforderten Festplattenspeichers und die benötigte Zeit für die Durchführung des Prozesses hängen von der Größe des VDI und der Menge der gemeinsam genutzten Daten ab.

Sowohl das VHD- als auch das QCOW2-Format unterstützen Thin Provisioning. Die Image-Datei wird automatisch in feine, granulare Blöcke erweitert, wenn die VM Daten auf die Festplatte schreibt. Für dateibasierte VHD und GFS2-basierte QCOW2 hat dieser Ansatz den erheblichen Vorteil, dass VM-Imagedateien nur so viel Speicherplatz auf dem physischen Speicher belegen wie erforderlich. Bei LVM-basierter VHD muss der zugrunde liegende logische Volume-Container auf die virtuelle Größe des VDI angepasst werden. Ungenutzter Speicherplatz auf dem zugrunde liegenden Copy-on-Write-Instanzdatenträger wird jedoch zurückgewonnen, wenn ein Snapshot oder ein Klon auftritt. Der Unterschied zwischen den beiden Verhaltensweisen kann folgendermaßen beschrieben werden:

  • Bei LVM-basierten VHD-Imagesverbrauchen die Differenzfestplattenknoten innerhalb der Kette nur so viele Daten, wie sie auf die Festplatte geschrieben wurden. Die Blattknoten (VDI-Klone) bleiben jedoch vollständig auf die virtuelle Größe der Festplatte aufgeblasen. Snapshot-Blattknoten (VDI-Snapshots) bleiben bei Nichtverwendung deflationiert und können schreibgeschützt angefügt werden, um die deflationierte Zuordnung beizubehalten. Snapshot-Knoten, die mit Lese-/Schreibzugriff verbunden sind, werden beim Anhängen vollständig aufgeblasen und beim Trennen deflationiert.

  • Bei dateibasierten VHDs und GFS2-basierten QCOW2-Images verbrauchen alle Knoten nur so viele Daten wie geschrieben. Die Blattknotendateien wachsen, um Daten aufzunehmen, während sie aktiv geschrieben werden. Wenn für eine VM ein 100-GB-VDI zugewiesen und ein Betriebssystem installiert ist, entspricht die VDI-Datei physisch nur der Größe der Betriebssystemdaten auf dem Datenträger sowie ein geringfügiger Metadaten-Overhead.

Beim Klonen von VMs basierend auf einer einzelnen VHD- oder QCOW2-Vorlage bildet jede untergeordnete VM eine Kette, in der neue Änderungen auf die neue VM geschrieben werden. Alte Blöcke werden direkt aus der übergeordneten Vorlage gelesen. Wenn die neue VM in eine weitere Vorlage umgewandelt und mehr VMs geklont wurde, führt die resultierende Kette zu einer Leistungseinbußen. HASH (0x2c1a078) unterstützt eine maximale Kettenlänge von 30. Nähern Sie sich dieser Grenze nicht ohne guten Grund. Im Zweifelsfall kopieren Sie die VM mit HASH (0x2e6c8e8) oder verwenden Sie denvm-copy Befehl, der die Kettenlänge auf 0 zurücksetzt.

VHD-spezifische Hinweise zur Koaleszie

Für eine SR ist je nur ein Koaleszenzprozess aktiv. Dieser Prozessthread wird auf dem SR-Master-Host ausgeführt.

Wenn kritische VMs auf dem Masterserver des Pools ausgeführt werden, können Sie die folgenden Schritte ausführen, um gelegentlich langsame E/A zu vermeiden:

  • Migrieren der VM auf einen anderen Host als den SR-Master

  • Legen Sie die Festplatten-E/A -Priorität auf eine höhere Ebene fest, und passen Sie den Scheduler an. Weitere Informationen finden Sie unter QoS-Einstellungen für virtuelle Festplatte.