pvmove déplace les données d'un disque LVM vers un autre à chaud, sans démonter ni interrompre le service. C'est la commande qui permet de retirer un disque d'un Volume Group, d'en remplacer un qui faiblit, ou de migrer un stockage vers du matériel plus récent, sans coupure. Ce guide montre comment ajouter un disque, déplacer ses extents avec pvmove, puis le retirer proprement avec vgreduce et pvremove. Pour administrateurs Linux intermédiaires, sur Debian/Ubuntu et RHEL/AlmaLinux. Toutes les sorties proviennent d'un test réel.
Ce que vous allez apprendre
Section intitulée « Ce que vous allez apprendre »- Ajouter un disque à un Volume Group avec
vgextend - Déplacer les données d'un disque vers un autre, à chaud, avec
pvmove - Retirer un disque proprement (
vgreducepuispvremove) - Remplacer un disque défaillant
- Agrandir un PV après extension d'un disque virtuel (
pvresize)
Prérequis
Section intitulée « Prérequis »Une pile LVM en place (voir le guide LVM) et un second disque disponible pour accueillir les données déplacées. Le Volume Group doit avoir assez d'espace libre sur les autres PV pour recevoir les extents migrés.
Ajouter un disque à un Volume Group
Section intitulée « Ajouter un disque à un Volume Group »Quand un Volume Group manque d'espace, on lui ajoute un disque. On initialise le PV, puis on l'agrège avec vgextend :
sudo pvcreate /dev/sdcsudo vgextend vg_data /dev/sdcLe VG dispose maintenant de la somme des deux disques. C'est aussi la première étape pour remplacer un disque : on ajoute le neuf avant de vider l'ancien.
Déplacer un volume entre disques avec pvmove
Section intitulée « Déplacer un volume entre disques avec pvmove »pvmove recopie les extents physiques d'un disque vers les autres PV du Volume Group, en ligne. Le service continue de lire et d'écrire pendant l'opération. Partons d'un VG sur deux disques, dont le premier porte un volume de 1 Gio :
sudo pvs PV VG Fmt Attr PSize PFree /dev/sdb vg_data lvm2 a-- <2.00g 1020.00m /dev/sdc vg_data lvm2 a-- <2.00g <2.00gLe disque /dev/sdb est occupé (il ne reste que 1020 Mio libres sur 2 Gio), /dev/sdc est vide. On vide /dev/sdb vers le reste du VG :
sudo pvmove /dev/sdb /dev/sdb: Moved: 100.00%Les données ont migré, et pvs confirme l'inversion : /dev/sdb est maintenant vide, /dev/sdc porte le volume.
PV VG Fmt Attr PSize PFree /dev/sdb vg_data lvm2 a-- <2.00g <2.00g /dev/sdc vg_data lvm2 a-- <2.00g 1020.00mpvmove /dev/sdb répartit les extents sur tous les PV disponibles du groupe. Pour viser un disque précis, ajoutez la destination : pvmove /dev/sdb /dev/sdc. Pour ne déplacer qu'une plage d'extents : pvmove /dev/sdb:1000-1999. Et pvmove -b lance l'opération en tâche de fond.
Retirer un disque proprement
Section intitulée « Retirer un disque proprement »Une fois le disque vidé, on le retire du Volume Group puis on efface son étiquette LVM, dans cet ordre :
-
Vider le disque (si ce n'est pas déjà fait) :
Fenêtre de terminal sudo pvmove /dev/sdb -
Sortir le PV du Volume Group :
Fenêtre de terminal sudo vgreduce vg_data /dev/sdbRemoved "/dev/sdb" from volume group "vg_data" -
Effacer l'étiquette LVM du disque, qui peut alors être débranché :
Fenêtre de terminal sudo pvremove /dev/sdbLabels on physical volume "/dev/sdb" successfully wiped.
L'ordre est important : pvremove avant vgreduce exigerait l'option -ff (déconseillée). Toujours retirer du VG d'abord.
Remplacer un disque défaillant
Section intitulée « Remplacer un disque défaillant »Pour remplacer un disque qui faiblit mais fonctionne encore, on combine les étapes : ajouter le neuf, migrer dessus, retirer l'ancien.
sudo vgextend vg_data /dev/sdNEUF # 1. ajouter le disque neufsudo pvmove /dev/sdANCIEN /dev/sdNEUF # 2. migrer les données vers le neufsudo vgreduce vg_data /dev/sdANCIEN # 3. sortir l'ancien du VGsudo pvremove /dev/sdANCIEN # 4. effacer son étiquetteAgrandir un PV après extension du disque
Section intitulée « Agrandir un PV après extension du disque »Quand on agrandit un disque virtuel (VM) ou une partition sous-jacente, LVM ne voit pas le nouvel espace tant qu'on ne le lui signale pas. pvresize met le PV à jour :
sudo pvresize /dev/sdbL'espace ajouté devient alors allouable par le Volume Group, prêt pour un lvextend. C'est le complément naturel de pvmove lors d'une migration vers un disque plus grand.
Prudence : pvmove est lent et intensif
Section intitulée « Prudence : pvmove est lent et intensif »Dépannage
Section intitulée « Dépannage »| Symptôme | Cause probable | Solution |
|---|---|---|
pvmove : no extents available | pas assez d'espace libre sur les autres PV | ajouter un disque (vgextend) avant de migrer |
vgreduce refuse de retirer le PV | des extents y sont encore alloués | lancer pvmove d'abord pour le vider |
pvremove refuse : still in VG | PV encore membre du VG | vgreduce avant pvremove |
| Migration interrompue par un reboot | normal, pvmove est reprenable | relancer pvmove sans argument |
| Espace d'un disque agrandi invisible | PV pas mis à jour | pvresize /dev/sdX |
Contrôle de connaissances
Section intitulée « Contrôle de connaissances »Vérifiez que l'essentiel de ce guide est acquis. Les questions portent uniquement sur ce qui vient d'être expliqué ici.
Contrôle de connaissances
Validez vos connaissances avec ce quiz interactif
Informations
- Le chronomètre démarre au clic sur Démarrer
- Questions à choix multiples, vrai/faux et réponses courtes
- Vous pouvez naviguer entre les questions
- Les résultats détaillés sont affichés à la fin
Lance le quiz et démarre le chronomètre
Vérification
(0/0)Profil de compétences
Quoi faire maintenant
Ressources pour progresser
Des indices pour retenter votre chance ?
Nouveau quiz complet avec des questions aléatoires
Retravailler uniquement les questions ratées
Retour à la liste des certifications
À retenir
Section intitulée « À retenir »pvmovedéplace les extents d'un disque vers les autres PV du VG, à chaud.- Cibler une destination (
pvmove /dev/sdb /dev/sdc) ou une plage (pvmove /dev/sdb:0-999). - Retirer un disque :
pvmovepuisvgreducepuispvremove, dans cet ordre. - Remplacer un disque vivant :
vgextend(neuf) →pvmove→vgreduce→pvremove(ancien). - Disque mort :
vgreduce --removemissing --forcepuis restaurer depuis une sauvegarde. pvmoveest lent, intensif en I/O mais reprenable (relancer sans argument). Sauvegarder avant.
FAQ : questions fréquentes sur pvmove et la gestion des disques LVM
Section intitulée « FAQ : questions fréquentes sur pvmove et la gestion des disques LVM »pvmove déplace les extents physiques d'un disque (PV) vers les autres PV du Volume Group, à chaud, pendant que le service continue de tourner. On l'utilise pour vider un disque avant de le retirer, remplacer un disque qui faiblit, ou migrer un stockage vers du matériel plus récent, le tout sans coupure. La syntaxe de base est pvmove /dev/sdX, avec possibilité de cibler une destination (pvmove /dev/sdX /dev/sdY) ou une plage d'extents.sudo pvmove /dev/sdb # 1. vider le disque vers les autres PV
sudo vgreduce vg_data /dev/sdb # 2. sortir le PV du Volume Group
sudo pvremove /dev/sdb # 3. effacer l'étiquette LVM
L'ordre compte : faire pvremove avant vgreduce exigerait l'option -ff (déconseillée). On retire toujours le PV du VG d'abord, puis on efface son étiquette.pvmove fonctionne en ligne : les applications continuent de lire et d'écrire sur le volume pendant la migration des données. En revanche, l'opération recopie les blocs un à un : elle est lente et très intensive en I/O, ce qui dégrade les performances pendant sa durée. On la lance donc en heures creuses. Elle écrit des points de contrôle, donc elle est reprenable après un redémarrage : relancer pvmove sans argument.sudo vgextend vg_data /dev/sdNEUF
sudo pvmove /dev/sdANCIEN /dev/sdNEUF
sudo vgreduce vg_data /dev/sdANCIEN
sudo pvremove /dev/sdANCIEN
Si le disque est déjà mort, pvmove ne peut plus lire ses extents : il faut forcer le retrait avec vgreduce --removemissing --force vg_data, puis restaurer depuis une sauvegarde les volumes qui résidaient dessus. D'où l'intérêt d'agir avant la panne.pvmove écrit des points de contrôle au fil de la migration, donc il survit à une interruption (crash, redémarrage). Pour reprendre l'opération là où elle s'était arrêtée, relancez simplement :sudo pvmove
sans aucun argument. Pour annuler une migration en cours, utilisez pvmove --abort. C'est cette robustesse qui rend pvmove sûr même sur des volumes de plusieurs centaines de Gio.