Opérations sur les volumes
Cette page couvre l'ensemble du cycle de vie d'un volume : création, rattachement à une VM, formatage et montage dans le système invité, détachement et suppression. Elle montre aussi comment identifier les volumes à l'intérieur d'une VM lorsque plusieurs sont rattachés.
Créer un volume
Horizon
- Accédez à Volumes > Volumes dans la barre latérale gauche.
- Cliquez sur Create Volume.
- Remplissez le formulaire :
- Volume Name : un nom descriptif (par exemple
data-vol-01). - Description : facultative.
- Volume Source : choisissez No source, empty volume pour un volume vide, ou Snapshot / Image / Volume pour créer à partir d'une source existante.
- Type : sélectionnez le type de volume (par exemple
v-ssd-std). S'il n'est pas indiqué, le type par défaut (v-ssd-std) est utilisé. - Size (GB) : la taille souhaitée.
- Availability Zone : sélectionnez l'AZ correspondant à votre VM.
- Volume Name : un nom descriptif (par exemple
- Cliquez sur Create Volume.
Le volume apparaît dans la liste avec le statut available dès qu'il est prêt.
CLI
openstack volume create data-vol-01 \
--size 100 \
--type v-ssd-std \
--availability-zone ch-zh1-az2
Vérifiez que le volume est prêt :
openstack volume show data-vol-01 -c status -c id
Le statut passe de creating à 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"
}
Rattacher un volume à une instance
Un volume doit être au statut available avant de pouvoir être rattaché. Une fois rattaché, il se comporte comme un disque supplémentaire dans la VM.
Horizon
- Accédez à Volumes > Volumes.
- Recherchez votre volume et ouvrez le menu d'actions (flèche à droite).
- Sélectionnez Manage Attachments.
- Cliquez sur + Attach Volume.
- Sélectionnez l'instance dans la liste déroulante.
- Cliquez sur Attach Volume.
CLI
openstack server add volume <INSTANCE-NAME> <VOLUME-NAME>
Exemple :
openstack server add volume my-vm data-vol-01
Note
L'argument facultatif --device, qui permet de spécifier un nom de périphérique (par exemple /dev/sdb), ne doit pas être utilisé : il ne fonctionne pas de manière fiable et pourrait être supprimé dans de futures versions d'OpenStack.
Formater et monter le volume
Après le rattachement, connectez-vous à la VM pour identifier, formater et monter le nouveau disque.
Identifier le disque
lsblk
Sortie :
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
Le nouveau volume apparaît comme sdb (100 GB dans cet exemple).
Partitionner et formater
Installez parted si nécessaire :
sudo apt-get install parted # Debian/Ubuntu
sudo yum install parted # RHEL/CentOS
Créez une partition et un système de fichiers :
sudo parted -s /dev/sdb mklabel msdos mkpart primary ext4 0% 100%
sudo mkfs -t ext4 -L datavol /dev/sdb1
Tip
Utiliser un label (-L datavol) facilite le montage et le suivi du volume par la suite : vous n'avez pas besoin de connaître le nom exact du périphérique, et /etc/fstab peut référencer LABEL=datavol au lieu de /dev/sdb1.
Pour XFS au lieu d'ext4 :
sudo parted -s /dev/sdb mklabel gpt mkpart primary xfs 0% 100%
sudo mkfs.xfs -L datavol /dev/sdb1
Monter
sudo mkdir -p /mnt/data
sudo mount -L datavol /mnt/data
Vérifiez :
df -h /mnt/data
Persistance après redémarrage
Ajoutez une entrée dans /etc/fstab pour que le volume soit monté automatiquement au démarrage :
LABEL=datavol /mnt/data ext4 noatime,nodiratime,user_xattr,nofail 0 0
Warning
Utilisez l'option nofail pour éviter que la VM ne bloque le processus de démarrage si le volume n'est pas disponible (par exemple en raison de problèmes réseau). Ne retirez nofail que si vous souhaitez que la VM refuse de démarrer sans le volume.
Note
L'option de montage nobarrier n'est pas recommandée. Les volumes sont accédés via un cache ; ignorer l'ordre correct des validations du journal peut corrompre votre système de fichiers en cas de problème matériel.
Détacher et supprimer un volume
Détacher
Avant de détacher le volume, démontez-le dans la VM :
sudo umount /mnt/data
Détachez ensuite le volume via Horizon ou la CLI.
Horizon : accédez à Volumes > Volumes, ouvrez le menu d'actions du volume, sélectionnez Manage Attachments et cliquez sur Detach Volume.
CLI :
openstack server remove volume <INSTANCE-NAME> <VOLUME-NAME>
Warning
Détacher un volume encore monté est techniquement possible, mais les accès IO ultérieurs à ce périphérique dans la VM renverront des erreurs d'I/O. Démontez toujours le volume en premier.
Après le détachement, vérifiez que le volume est revenu au statut available :
openstack volume show <VOLUME-NAME> -c status
Supprimer
Une fois détaché, le volume peut être supprimé. Cette opération est irréversible.
openstack volume delete <VOLUME-NAME>
Le volume passe au statut deleting et disparaît de openstack volume list.
Identifier les volumes à l'intérieur d'une VM
Lorsque plusieurs volumes sont rattachés à la même instance, vous pouvez associer les ID de volume OpenStack aux périphériques de bloc dans le système invité.
Les volumes apparaissent sous /dev/disk/by-id/ sous la forme scsi-0QEMU_QEMU_HARDDISK_<ID>, où <ID> est un préfixe de l'ID de volume OpenStack.
Exemple, côté 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 |
Dans la VM :
ls /dev/disk/by-id/
scsi-0QEMU_QEMU_HARDDISK_71bd47d8-b51e-4f12-9
Le fragment 71bd47d8-b51e-4f12-9 correspond au début de l'ID de volume 71bd47d8-b51e-4f12-9c51-0445fc36c9e4.