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
- Acceda a Volumes > Volumes nella barra laterale sinistra.
- Clicchi su Create Volume.
- 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.
- Volume Name: un nome descrittivo (ad esempio
- 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
- Acceda a Volumes > Volumes.
- Individui il Suo volume e apra il menu delle azioni (freccia a destra).
- Selezioni Manage Attachments.
- Clicchi su + Attach Volume.
- Selezioni l'istanza dal menu a tendina.
- 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.