Vai al contenuto

Operazioni sui volumi

Questa pagina illustra l'intero ciclo di vita di un volume: creazione, collegamento a una VM, formattazione e mount all'interno del sistema guest, scollegamento ed eliminazione. Mostra inoltre come identificare i volumi all'interno di una VM quando ne sono collegati più di uno.

Creare un volume

Horizon

  1. Acceda a Volumes > Volumes nella barra laterale sinistra.
  2. Clicchi su Create Volume.
  3. Compili il modulo:
    • Volume Name: un nome descrittivo (ad esempio data-vol-01).
    • Description: facoltativa.
    • Volume Source: scelga No source, empty volume per un volume vuoto, oppure Snapshot / Image / Volume per creare da una sorgente esistente.
    • Type: selezioni il tipo di volume (ad esempio v-ssd-std). Se non viene indicato, viene utilizzato il tipo predefinito (v-ssd-std).
    • Size (GB): le dimensioni desiderate.
    • Availability Zone: selezioni l'AZ corrispondente alla Sua VM.
  4. Clicchi su Create Volume.

Il volume compare nell'elenco con lo stato available non appena è pronto.

CLI

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

Verifichi che il volume sia pronto:

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

Lo stato passa da creating a 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"
}

Collegare un volume a un'istanza

Un volume deve trovarsi nello stato available prima di poter essere collegato. Una volta collegato, si comporta come un disco aggiuntivo all'interno della VM.

Horizon

  1. Acceda a Volumes > Volumes.
  2. Individui il Suo volume e apra il menu delle azioni (freccia a destra).
  3. Selezioni Manage Attachments.
  4. Clicchi su + Attach Volume.
  5. Selezioni l'istanza dal menu a tendina.
  6. Clicchi su Attach Volume.

CLI

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

Esempio:

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

Note

L'argomento facoltativo --device, che specifica un nome di dispositivo (ad esempio /dev/sdb), non deve essere utilizzato: non funziona in modo affidabile e potrebbe essere rimosso in future versioni di OpenStack.

Formattare e montare il volume

Dopo il collegamento, acceda alla VM per individuare, formattare e montare il nuovo disco.

Individuare il disco

lsblk

Output:

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

Il nuovo volume compare come sdb (100 GB in questo esempio).

Partizionare e formattare

Installi parted se necessario:

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

Crei una partizione e un file system:

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

Tip

L'uso di una label (-L datavol) semplifica il montaggio e il monitoraggio del volume in seguito: non è necessario conoscere il nome esatto del dispositivo e /etc/fstab può fare riferimento a LABEL=datavol invece che a /dev/sdb1.

Per XFS invece di ext4:

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

Montare

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

Verifichi:

df -h /mnt/data

Persistenza dopo il riavvio

Aggiunga una voce in /etc/fstab affinché il volume venga montato automaticamente all'avvio:

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

Warning

Utilizzi l'opzione nofail per evitare che la VM blocchi il processo di avvio se il volume non è disponibile (ad esempio a causa di problemi di rete). Rimuova nofail solo se desidera che la VM rifiuti di avviarsi senza il volume.

Note

L'opzione di mount nobarrier non è consigliata. I volumi vengono acceduti tramite una cache; ignorare l'ordine corretto dei commit del journal può danneggiare il file system in caso di problemi hardware.

Scollegare ed eliminare un volume

Scollegare

Prima di scollegare il volume, lo smonti all'interno della VM:

sudo umount /mnt/data

Scolleghi quindi il volume tramite Horizon o CLI.

Horizon: acceda a Volumes > Volumes, apra il menu delle azioni del volume, selezioni Manage Attachments e clicchi su Detach Volume.

CLI:

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

Warning

Scollegare un volume ancora montato è tecnicamente possibile, ma i successivi accessi IO a quel dispositivo all'interno della VM restituiranno errori di I/O. Smonti sempre il volume prima.

Dopo lo scollegamento, verifichi che il volume sia tornato allo stato available:

openstack volume show <VOLUME-NAME> -c status

Eliminare

Una volta scollegato, il volume può essere eliminato. Questa operazione è irreversibile.

openstack volume delete <VOLUME-NAME>

Il volume passa allo stato deleting e scompare da openstack volume list.

Identificare i volumi all'interno di una VM

Quando più volumi sono collegati alla stessa istanza, può associare gli ID dei volumi OpenStack ai dispositivi a blocchi all'interno del sistema guest.

I volumi compaiono in /dev/disk/by-id/ come voci nella forma scsi-0QEMU_QEMU_HARDDISK_<ID>, dove <ID> è un prefisso dell'ID del volume OpenStack.

Esempio, dal lato OpenStack:

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

All'interno della VM:

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

Il frammento 71bd47d8-b51e-4f12-9 corrisponde all'inizio dell'ID del volume 71bd47d8-b51e-4f12-9c51-0445fc36c9e4.