Étendre des volumes
Un volume peut être étendu tout en conservant ses données existantes, tant que le système de fichiers prend en charge le redimensionnement (Ext4 et XFS le font tous les deux). Les volumes ne peuvent pas être réduits, ils peuvent seulement être agrandis.
Le processus se déroule en deux étapes :
- Étendre le volume (côté OpenStack)
- Redimensionner le système de fichiers (dans la VM)
Étendre le volume
Horizon
- Accédez à Volumes > Volumes.
- Trouvez le volume et ouvrez le menu d'actions.
- Sélectionnez Extend Volume.
- Saisissez la nouvelle taille (elle doit être supérieure à la taille actuelle).
- Cliquez sur Extend Volume.
CLI
openstack volume set --size <NEW-SIZE-GB> <VOLUME-NAME>
Exemple : étendre data-vol-01 de 100 GB à 150 GB :
openstack volume set --size 150 data-vol-01
Vérifiez la nouvelle taille :
openstack volume show data-vol-01 -c size -c status
Redimensionner le système de fichiers
Après avoir étendu le volume, vous devez redimensionner le système de fichiers dans la VM afin que le système d'exploitation puisse utiliser le nouvel espace.
Ext4
sudo resize2fs /dev/sdb1
Si le système de fichiers n'est pas monté, montez-le d'abord :
sudo mount /dev/sdb1 /mnt/data
sudo resize2fs /dev/sdb1
XFS
Pour XFS, le système de fichiers doit être monté avant le redimensionnement :
sudo mount /dev/sdb1 /mnt/data
sudo xfs_growfs /mnt/data
Vérification
df -h /mnt/data
Note
Si la VM ne voit pas la nouvelle taille, vous devrez peut-être arrêter puis démarrer l'instance (pas de redémarrage : utilisez stop puis start) :
openstack server stop <INSTANCE-NAME>
openstack server start <INSTANCE-NAME>
Erreurs courantes
Le volume est en cours d'utilisation
Failed to set volume size: Volume is in in-use state,
it must be available before size can be extended
Le volume est attaché à une VM. Vous avez deux options :
Option 1 : utiliser le client Cinder (sans détachement) :
Le client openstack ne peut pas redimensionner les volumes en cours d'utilisation, mais le client cinder le peut. Notez que cinder requiert l'ID du volume, pas le nom.
sudo apt install python3-cinderclient
cinder --os-volume-api-version 3.42 extend <VOLUME-ID> 150
Après l'extension, arrêtez puis démarrez la VM afin que la nouvelle taille soit reconnue :
openstack server stop <INSTANCE-NAME>
openstack server start <INSTANCE-NAME>
Option 2 : détacher, étendre, rattacher :
sudo umount /mnt/data
openstack server remove volume <INSTANCE-NAME> <VOLUME-NAME>
openstack volume set --size 150 <VOLUME-NAME>
openstack server add volume <INSTANCE-NAME> <VOLUME-NAME>
Quota dépassé
VolumeSizeExceedsAvailableQuota: Requested volume or snapshot
exceeds allowed Gigabytes quota. (HTTP 413)
Le stockage total des volumes de votre projet dépasse le quota. Demandez une augmentation de quota via le Cloud Services Portal sous Quota Management.
Limite de volumes dépassée
VolumeLimitExceeded: Maximum number of volumes allowed (N) exceeded
Vous avez dépassé le nombre de volumes autorisés dans votre projet. Demandez une augmentation de limite via le Cloud Services Portal sous Quota Management.
Impossible de réduire un volume
Les volumes peuvent uniquement être étendus, pas réduits. Si vous avez besoin d'un volume plus petit, créez un nouveau volume plus petit, copiez les données, puis supprimez l'ancien.