Zum Inhalt

Volume-Operationen

Diese Seite behandelt den gesamten Lifecycle eines Volumes: Erstellen, Anhängen an eine VM, Formatieren und Mounten im Gast, Trennen und Löschen. Ausserdem wird gezeigt, wie Sie Volumes innerhalb einer VM identifizieren, wenn mehrere angehängt sind.

Volume erstellen

Horizon

  1. Navigieren Sie zu Volumes > Volumes in der linken Seitenleiste.
  2. Klicken Sie auf Create Volume.
  3. Füllen Sie das Formular aus:
    • Volume Name — ein beschreibender Name (z. B. data-vol-01).
    • Description — optional.
    • Volume Source — wählen Sie No source, empty volume für ein leeres Volume oder Snapshot / Image / Volume, um aus einer bestehenden Quelle zu erstellen.
    • Type — wählen Sie den Volume-Typ (z. B. v-ssd-std). Ohne Angabe wird der Standard (v-ssd-std) verwendet.
    • Size (GB) — die gewünschte Grösse.
    • Availability Zone — wählen Sie die AZ, die zu Ihrer VM passt.
  4. Klicken Sie auf Create Volume.

Das Volume erscheint in der Liste mit dem Status available, sobald es bereit ist.

CLI

openstack volume create data-vol-01 \
    --size 100 \
    --type v-ssd-std \
    --availability-zone ch-zh1-az2

Prüfen Sie, ob das Volume bereit ist:

openstack volume show data-vol-01 -c status -c id

Der Status wechselt von creating zu available.

Ansible

- os_volume:
    display_name: "data-vol-01"
    size: 100
    volume_type: "v-ssd-std"
    availability_zone: "ch-zh1-az2"

Terraform

resource "openstack_blockstorage_volume_v3" "data_vol_01" {
    name              = "data-vol-01"
    size              = 100
    volume_type       = "v-ssd-std"
    availability_zone = "ch-zh1-az2"
}

Volume an eine Instanz anhängen

Ein Volume muss den Status available haben, bevor es angehängt werden kann. Nach dem Anhängen verhält es sich wie eine zusätzliche Disk innerhalb der VM.

Horizon

  1. Navigieren Sie zu Volumes > Volumes.
  2. Suchen Sie Ihr Volume und öffnen Sie das Aktionsmenü (Pfeil rechts).
  3. Wählen Sie Manage Attachments.
  4. Klicken Sie auf + Attach Volume.
  5. Wählen Sie die Instanz aus dem Dropdown.
  6. Klicken Sie auf Attach Volume.

CLI

openstack server add volume <INSTANZ-NAME> <VOLUME-NAME>

Beispiel:

openstack server add volume my-vm data-vol-01

Note

Das optionale Argument --device zur Angabe eines Gerätenamens (z. B. /dev/sdb) sollte nicht verwendet werden — es funktioniert nicht zuverlässig und kann in zukünftigen OpenStack-Versionen entfernt werden.

Volume formatieren und mounten

Nach dem Anhängen loggen Sie sich in die VM ein, um die neue Disk zu finden, zu formatieren und zu mounten.

Disk identifizieren

lsblk

Ausgabe:

NAME   MAJ:MIN RM  SIZE RO TYPE MOUNTPOINT
sda      8:0    0   20G  0 disk
└─sda1   8:1    0   20G  0 part /
sdb      8:16   0  100G  0 disk

Das neue Volume erscheint als sdb (100 GB in diesem Beispiel).

Partitionieren und formatieren

Installieren Sie parted falls nötig:

sudo apt-get install parted   # Debian/Ubuntu
sudo yum install parted       # RHEL/CentOS

Erstellen Sie eine Partition und ein Dateisystem:

sudo parted -s /dev/sdb mklabel msdos mkpart primary ext4 0% 100%
sudo mkfs -t ext4 -L datavol /dev/sdb1

Tip

Die Verwendung eines Labels (-L datavol) erleichtert das Mounten und Verfolgen des Volumes später — Sie müssen den genauen Gerätenamen nicht kennen, und /etc/fstab kann LABEL=datavol anstelle von /dev/sdb1 referenzieren.

Für XFS statt ext4:

sudo parted -s /dev/sdb mklabel gpt mkpart primary xfs 0% 100%
sudo mkfs.xfs -L datavol /dev/sdb1

Mounten

sudo mkdir -p /mnt/data
sudo mount -L datavol /mnt/data

Überprüfen:

df -h /mnt/data

Über Reboots hinweg persistent machen

Fügen Sie einen Eintrag zu /etc/fstab hinzu, damit das Volume beim Booten automatisch gemountet wird:

LABEL=datavol /mnt/data ext4 noatime,nodiratime,user_xattr,nofail 0 0

Warning

Verwenden Sie die Option nofail, um zu verhindern, dass die VM beim Booten blockiert, falls das Volume nicht verfügbar ist (z. B. wegen Netzwerkproblemen). Entfernen Sie nofail nur, wenn die VM ohne das Volume nicht booten soll.

Note

Die Mount-Option nobarrier wird nicht empfohlen. Volumes werden über einen Cache zugegriffen; das Ignorieren der korrekten Reihenfolge von Journal-Commits kann bei einem Hardwareproblem zu einem korrupten Dateisystem führen.

Volume trennen und löschen

Trennen

Vor dem Trennen müssen Sie das Volume innerhalb der VM unmounten:

sudo umount /mnt/data

Trennen Sie dann über Horizon oder CLI.

Horizon: Navigieren Sie zu Volumes > Volumes, öffnen Sie das Aktionsmenü des Volumes, wählen Sie Manage Attachments und klicken Sie auf Detach Volume.

CLI:

openstack server remove volume <INSTANZ-NAME> <VOLUME-NAME>

Warning

Das Trennen eines Volumes, während es noch gemountet ist, ist technisch möglich, aber nachfolgende IO-Zugriffe auf dieses Gerät innerhalb der VM führen zu I/O-Fehlern. Unmounten Sie immer zuerst.

Prüfen Sie nach dem Trennen, ob das Volume wieder den Status available hat:

openstack volume show <VOLUME-NAME> -c status

Löschen

Nach dem Trennen kann das Volume gelöscht werden. Dies kann nicht rückgängig gemacht werden.

openstack volume delete <VOLUME-NAME>

Das Volume wechselt in den Status deleting und verschwindet aus openstack volume list.

Volumes innerhalb einer VM identifizieren

Wenn mehrere Volumes an dieselbe Instanz angehängt sind, können Sie OpenStack-Volume-IDs Blockgeräten im Gast zuordnen.

Volumes erscheinen unter /dev/disk/by-id/ als Einträge der Form scsi-0QEMU_QEMU_HARDDISK_<ID>, wobei <ID> ein Präfix der OpenStack-Volume-ID ist.

Beispiel — von OpenStack-Seite:

openstack volume show data-vol-01 -c id -c attachments
| id          | 71bd47d8-b51e-4f12-9c51-0445fc36c9e4             |
| attachments | Attached to my-vm on /dev/sdb                     |

Innerhalb der VM:

ls /dev/disk/by-id/
scsi-0QEMU_QEMU_HARDDISK_71bd47d8-b51e-4f12-9

Das Fragment 71bd47d8-b51e-4f12-9 stimmt mit dem Anfang der Volume-ID 71bd47d8-b51e-4f12-9c51-0445fc36c9e4 überein.