Volume


Über die Volumes

Volumes sind der Block-Storage (ähnlich wie SAN-LUNs), der an Ihre Instanzen angehangen ist. Volumes können eine beliebige Größe haben und können von unterschiedlichen Speicher-Typen sein sowie mit unterschiedlicher Leistung und Kosten ausgestattet sein, abhängig von der Speicherkonfiguration der Cloud. HDD, SSD und NVMe-Speicher sind Beispiele für diese Speicher-Typen.

Ein wichtiges Merkmal eines Volumes ist, dass es zwar einer bestimmten Instanz angehängt wird oder an keine angehängt sein kann, es aber nicht zu einer bestimmten Instanz gehört. Daher ist es sehr einfach, ein Volume von einer Instanz zu lösen und an eine andere Instanz anzuhängen, um z. B. große Datenmengen zwischen den Instanzen zu verschieben. Wenn Sie eine Instanz löschen, werden ihre Volumes nicht automatisch mit gelöscht und können später wieder verwendet werden.


Volume Erstellung

Wenn Sie ein Volume erstellen, müssen Sie mehrere Entscheidungen treffen:

  1. Sie können ein neues (leeres) Volume, ein Volume aus einem vorhandenen [Volume Snapshot] (#volume-snapshots) oder einen Datenträger aus einem Image erstellen. Ein leeres Volume enthält noch keine Daten oder ein Dateisystem bevor Sie es also verwenden können, muss es mit einem geeigneten Dateisystem formatiert werden.Wenn das Volume aus einem Snapshot erstellt wurde, enthält es alle Daten, die im Original enthalten waren.Ein bootfähiges Volume wird üblicherweise aus einem. Image erstellt.Ein solches Volume kopiert den Inhalt des Images (typischerweise ist dies ein vorinstalliertes Betriebssystem). Bootfähige Volumes werden üblicherweise verwendet, um eine Instanz mit einem Boot-Volume zu erstellen.
  2. Wenn in Ihrer Cloud verfügbar, haben Sie möglicherweise die Wahl zwischen mehr als einem Typ von Volumes, mit unterschiedlicher Leistung und Kosten. Sie können den Typ zum Zeitpunkt der Erstellung des Volumes wählen. Bitte beachten Sie, dass der Typ später nicht ohne Datenmigration (z. B. durch Anhängen beider Volumes an eine Linux-Instanz sowie das verbinden und den Befehl dd ausführen, um die Daten Block für Block zu kopieren) geändert werden kann .
  3. Geben Sie die Größe des Volumes an (in GB). Falls erforderlich, können Sie die Volume-Größe später erhöhen.

Anhängen eines Volume an eine Instanz

Um ein Volume an Ihre Instanz anzuhängen, gehen Sie wie folgt vor:

  • Wählen Sie das anzuhängende Volume aus.
  • Wählen Sie eine Instanz aus, an die das Volume angehängt werden soll, und klicken Sie auf "Anhängen".

Die letzten Schritte sollten innerhalb der Instanz durchgeführt werden. Wenn das Volume leer war, müssen Sie ein Dateisystem erstellen, bevor Sie es mounten können. Formatieren Sie es entweder mit Disk Management unter Windows oder mit einem Befehl wie mkfs.ext4 unter Linux. Wenn das Volume bereits vorher benutzt wurde, sollte dieser Schritt entfallen (das Anlegen des Dateisystems zerstört alle vorherigen Inhalte auf dem Volume, bitte also mit Vorsicht verwenden!).

Während es unter Windows normalerweise sehr einfach ist, das Volume zu finden, kann es unter Linux nicht so offensichtlich sein. Die angeschlossenen Volumes bekommen ihre Namen zugewiesen als /dev/vda (das wäre das Boot-Volume, falls verwendet), und /dev/vdb als (erstes angeschlossenes Volume), /dev/vdc und so weiter. Dann wird der Name für ein bestimmtes Volume in der Instanz gesetzt, wenn es angeschlossen ist (kann auch in den Volume-Eigenschaften eingesehen werden).

Der letzte Schritt wäre das Mounten des Volume (oder das Zuweisen eines Laufwerksbuchstabens unter Windows). Unter Linux müssen Sie das Volume zur Instanzkonfiguration wie fstab hinzufügen, um sicherzustellen, dass das Dateisystem nach dem Neustart der Instanz noch zugänglich ist.

Beachten Sie, dass das Anhängen von Volume an mehrere Instanzen zur gleichen Zeit nicht unterstützt wird.


Größenänderung eines Volume

Ein angehängtes Volume kann nicht in der Größe verändert werden, daher müssen Sie es zuerst von einer Instanz trennen. Auch wenn es nicht von der Plattform erzwungen wird, ist es eine gute Idee, das Volume zunächst innerhalb der Instanz auszuhängen, bevor Sie es in der Plattform aushängen. Dadurch soll sichergestellt werden, dass sich das Volume in einem sauberen und konsistenten Zustand befindet.

Um die Größe eines Volumes zu ändern, klicken Sie im Kontextmenü des Volume dessen Größe Sie ändern möchte auf "Größenänderung"und geben Sie die neue Volume-Größe an. Die Größe muss größer sein als die vorherige Größe des Volumes (Sie können also die Volumengröße nur anheben).

Danach hängen Sie das Volume wieder an die Instanz ein. Wenn Sie es einfach mounten, werden Sie die geänderte Größe nicht sehen. Sie müssen also zuerst die Größe des Dateisystems neu anpassen, damit es den neuen verfügbaren Speicherplatz nutzt. Unter Linux wird dies mit dem Befehl resize2fs ausgeführt (zum Beispiel sudo resize2fs /dev/vdb). Unter Windows gehen Sie in die Datenträgerverwaltung, klicken sie dazu mit der rechten Maustaste auf das Volume und wählen Sie "Größe anpassen".


Über bootfähige Volumes

Wenn eine Instanz unter Verwendung eines bootfähigen Volumes erstellt wird (anstelle einer regulären Boot-Partition, die von der Konfiguration angegeben wird), enthält dieses Volume das Betriebssystem und seine Boot-Anweisungen. Das Betriebssystem kann entweder von einem Image kopiert werden (wenn das Volume aus einem Image erstellt wird), oder auch manuell von einem Installationsmedium wie einem ISO-Abbild installiert werden. Ein solches Volume wird als bootfähig markiert, im Gegensatz zu normalen Volumes (die nicht bootfähig sind). Beachten Sie, dass wenn eine Instanz die ein Boot-Volume verwendet gelöscht wird, das Volume selbst nicht gelöscht wird. Stattdessen muss es manuell gelöscht werden, sofern es nicht mehr benötigt wird.

Es ist auch möglich, ein bootfähiges Volume mit allen darauf befindlichen Daten für eine neue Instanz wieder zu verwenden. Um eine solche Instanz erfolgreich zu booten, muss das bootfähige Volume ein Betriebssystem aus der vorherigen Instanz-Bereitstellung enthalten.

Häufige Szenarien für die Verwendung bootfähiger Volume sind:

  • Ändern des Speichertyps des Root-Volumes (z. B. wenn das Root-Volume standardmäßig als HDD bereitgestellt wird, Sie jedoch SSD verwenden möchten).
  • Die Image-Größe überschreitet die im Flavor angegebenen Speichergrenzen (wenn die Instanz von einem Volume gebootet wird, sind Speicherbeschränkungen auf dem Root-Volume des Flavors nicht mehr relevant).
  • Persistenz (Sie möchten, dass die Root-Festplatte der Instanz erhalten bleibt, nachdem die Instanz selbst gelöscht wurde).

Volumen-Typen

Volumentypen beziehen sich auf den Speicher mit unterschiedlichem Hardware-Backends, und/oder unterschiedlichen QoS-Einstellungen, die zu einer unterschiedlichen Leistung (und typischerweise auf verschiedenen Preis des Speichers) führen. Zum Beispiel kann ein Volumen Typ auf HDD- und ein anderer auf SSD-Laufwerken basieren, die verschiedene Leistungen bieten.

Der Datenträgertyp wird zum Zeitpunkt der Erstellung eines Datenträgers angegeben. Aufgrund der Backend-Speicherimplementierung ist es nicht möglich, den Volume-Typ für ein bestehendes Volume zu ändern. Wenn der Benutzer also ein vorhandenes Volume von einem Typ zu einem anderen migrieren muss (z. B. um Daten von HDDs auf SSDs mit höherer Leistung), muss er ein neues Volume gleicher Größe erstellen. Danach muss er sowohl das alte als auch das neue Volume mit derselben Instanz verbinden und dann die Daten blockweise mit dd oder ähnlicher Software kopieren.


Volume-Snapshots

Ein Volume-Snapshot ist ein Wiederherstellungspunkt, der auf einem bestimmten Volume erstellt wird. Dieser Wiederherstellungspunkt ermöglicht später den Zugriff auf die Datenträgerdaten, die zum Zeitpunkt der Erstellung des Schnappschusses existierten. Zum Beispiel können Sie einen Snapshot erstellen, bevor Sie ein großes Update oder ein Upgrade eines Datenbankschemas durchführen. So ist es im Falle eines Fehlers möglich, die Daten vor der Änderung wiederherzustellen.

Im Gegensatz zu einem VM-Snapshot wie er in vielen Hypervisors verwendet wird, erlaubt der Volumen-Snapshot nicht ein bestehendes Volume in den vorherigen Zustand zurückzusetzen. Stattdessen kann der Snapshot verwendet werden, um ein neues Volume zu erstellen. Hierbei wird der Snapshot als Ausgangspunkt verwendet und das neue Volume enthält dann alle Daten welche in dem Schnappschuss enthalten sind (beachten Sie, dass in diesem Fall der neue Datenträger den gleichen Datenträgertyp (#volume-types) besitzen muss wie der als Quelle verwendete Originaldatenträger).

Volume-Snapshots sollten nicht mit Instanz-Snapshots verwechselt werden. Trotz der Namensgleichheit, ist die Implementierung unterschiedlich. Instanz-Snapshots existieren als separate Objekte (Images) im Image-Repository und bleiben erhalten (auch wenn die ursprüngliche Instanz gelöscht wurde). Volume Snapshots existieren nur mit dem Datenträger, wenn Sie den Datenträger löschen gehen alle vorhandenen Snapshots des Datenträgers verloren (tatsächlich können Sie aber kein Volume löschen, das Snapshots enthält. Die Snapshots müssen zuerst gelöscht werden).

Volume-Snapshots sind inkrementell, d.h. wenn ein neuer Snapshot erstellt wird, wird die ursprüngliche Volume-Basis schreibgeschützt und alle weiteren Volume-Änderungen werden per CoW (Copy on-Write) in den Snapshot umgeleitet. Die Größe des Snapshots, welcher ursprünglich leer war, beginnt zu wachsen und kann potenziell die volle Größe des Datenträgers erreichen (wenn jeder Block in diesem Datenträger geändert wird).

Ein Volume kann mehrere Snapshots enthalten. Wenn dies der Fall ist, werden die neuen Änderungen im letzten (neuesten) Snapshot gespeichert. Alle vorherigen Snapshots sind dann schreibgeschützt. Wenn Sie jedoch einen dazwischenliegenden Snapshot löschen, können die darüber liegenden Snapshots von den in diesem Snapshot gespeicherten Änderungen abhängen. Der letzte Snapshot kann aufgrund des gelöschten Snapshot und der Datenzusammenführung während des Löschvorgangs größer werden.

Volume-Verschlüsselung

Mit der Volume-Verschlüsselung können Daten innerhalb eines Volumes verschlüsselt werden. Die Daten sind dann ohne den richtigen Verschlüsselungs-Schlüssel nicht mehr lesbar. Der Verschlüsselungs-Schlüssel wird bei Erstellung des verschlüsselten Volumes erstellt. OpenStack über Cinder/Barbican ist für die sichere Verwaltung und Speicherung der Schlüssel verantwortlich. Die Verschlüsselung der Volumes erfolgt für den Kunden transparent. Gemäß den OpenStack-Empfehlungen und Industriestandards wird als Verschlüsselungsalgorithmus ein AES-256-Algorithmus verwendet.

Es können sowohl einfache als auch bootfähige Volumes verschlüsselt werden. Dazu muss in der Plattform der Typ des verschlüsselten Volumes während der Volume-Erstellung ausgewählt werden.

Wenn Sie ein verschlüsseltes Volume an eine Instanz anhängen, werden folgende Daten verschlüsselt:

  • Alle Daten, die sich auf dem Volume befinden
  • Alle vom Volume erstellten Snapshots
  • Alle Volumes, die aus diesen Snapshots erstellt wurden