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
- Navigieren Sie zu Volumes > Volumes in der linken Seitenleiste.
- Klicken Sie auf Create Volume.
- 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.
- Volume Name — ein beschreibender Name (z. B.
- 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
- Navigieren Sie zu Volumes > Volumes.
- Suchen Sie Ihr Volume und öffnen Sie das Aktionsmenü (Pfeil rechts).
- Wählen Sie Manage Attachments.
- Klicken Sie auf + Attach Volume.
- Wählen Sie die Instanz aus dem Dropdown.
- 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.