À la LVM dans Debian tronçon (9.0), à savoir 2.02.168-2, il est possible de faire une copie d'un volume logique pour les groupes de volumes utilisant une combinaison de vgmerge
, lvconvert
, et vgsplit
. Puisqu'un déplacement est une combinaison d'une copie et d'une suppression, cela fonctionnera également pour un déplacement.
Alternativement, vous pouvez utiliser pvmove
pour simplement déplacer le volume.
Un exemple de session complète autonome utilisant des périphériques en boucle et
lvconvert
suit.
Résumé: nous créons un groupe de volumes vg1
avec un volume logique lv1
, et vg2
avec lv2
, et faisons une copie de lv1
in vg2
.
Créez des fichiers.
truncate pv1 --size 100MB
truncate pv2 --size 100MB
Configurez des périphériques de boucle sur des fichiers.
losetup /dev/loop1 pv1
losetup /dev/loop2 pv2
Créez des volumes physiques sur les périphériques de boucle (initialisez les périphériques de boucle à utiliser par LVM).
pvcreate /dev/loop1 /dev/loop2
Créez les groupes de volumes vg1 et vg2 sur / dev / loop1 et / dev / loop2 respectivement.
vgcreate vg1 /dev/loop1
vgcreate vg2 /dev/loop2
Créez des volumes logiques lv1 et lv2 sur vg1 et vg2 respectivement.
lvcreate -L 10M -n lv1 vg1
lvcreate -L 10M -n lv2 vg2
Créez des systèmes de fichiers ext4 sur lv1 et lv2.
mkfs.ext4 -j /dev/vg1/lv1
mkfs.ext4 -j /dev/vg2/lv2
Vous pouvez éventuellement écrire quelque chose sur lv1 afin de pouvoir vérifier ultérieurement que la copie a été correctement créée. Rendez vg1 inactif.
vgchange -a n vg1
Exécutez la commande de fusion en mode test. Cela fusionne vg1 en vg2.
vgmerge -A y -l -t -v <<destination-vg>> <<source-vg>>
vgmerge -A y -l -t -v vg2 vg1
Et puis pour de vrai.
vgmerge -A y -l -v vg2 vg1
Créez ensuite une paire de miroirs RAID 1 à l' lv1
aide de lvconvert
. L'
dest-pv
argument indique lvconvert
d'activer la copie miroir /dev/loop2
.
lvconvert --type raid1 --mirrors 1 <<source-lv>> <<dest-pv>>
lvconvert --type raid1 --mirrors 1 /dev/vg2/lv1 /dev/loop2
Ensuite, divisez le miroir. Le nouveau LV est maintenant lv1_copy
.
lvconvert --splitmirrors 1 --name <<source-lv-copy>> <<source-lv>>
lvconvert --splitmirrors 1 --name lv1_copy /dev/vg2/lv1
Rendez vg2/lv1
inactif.
lvchange -a n /dev/vg2/lv1
Ensuite (mode test)
vgsplit -t -v <<source-vg>> <<destination-vg>> <<moved-to-pv>>
vgsplit -t -v /dev/vg2 /dev/vg1 /dev/loop1
Pour de vrai
vgsplit -v /dev/vg2 /dev/vg1 /dev/loop1
Sortie résultante:
lvs
[...]
lv1 vg1 -wi-a----- 12.00m
lv1_copy vg2 -wi-a----- 12.00m
lv2 vg2 -wi-a----- 12.00m
REMARQUES:
1) La plupart de ces commandes devront être exécutées en tant que root.
2) En cas de duplication des noms des volumes logiques dans les deux groupes de volumes, vgmerge
refusera de continuer.
3) Lors de la fusion, les volumes logiques dans vg1
doivent être inactifs. Et en cas de division, les volumes logiques vg2
appartenant à vg1
doivent être inactifs. Dans notre cas, c'est le cas lv1
.