GNU/Linux >> Tutoriels Linux >  >> Linux

Linux - Déplacer un volume logique d'un groupe de volumes à un autre ?

Est-il possible de déplacer un volume logique d'un groupe de volumes à un autre dans son intégralité ?

Il est possible de créer un lv correspondant (plus ou moins) et de copier les données, mais existe-t-il un moyen de le faire uniquement avec les outils LVM ?

Si non, y a-t-il une raison théorique ou une limitation technique (taille des extensions) ?

Réponse acceptée :

À partir de LVM dans Debian Stretch (9.0), à savoir 2.02.168-2, il est
possible de faire une copie d'un volume logique à travers des groupes de volumes en 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.

Une session d'exemple autonome complète utilisant des périphériques de boucle et lvconvert suit.

Résumé :nous créons le groupe de volumes vg1 avec volume logique lv1 , et vg2 avec lv2 , et faire une copie de lv1 en vg2 .

Créez des fichiers.

truncate pv1 --size 100MB
truncate pv2 --size 100MB

Configurez des périphériques de boucle sur les fichiers.

losetup /dev/loop1 pv1
losetup /dev/loop2 pv2

Créez des volumes physiques sur les périphériques en boucle (initialisez les périphériques en boucle pour
une utilisation par LVM).

pvcreate /dev/loop1 /dev/loop2

Créez des groupes de volumes vg1 et vg2 sur /dev/loop1 et /dev/loop2
respectivement.

vgcreate vg1 /dev/loop1
vgcreate vg2 /dev/loop2

Créez les 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

Éventuellement, écrivez quelque chose sur lv1 afin de pouvoir vérifier ultérieurement que la copie a été
correctement créée. Rendre 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 à partir de lv1 en utilisant lvconvert . Le dest-pv l'argument indique lvconvert pour faire la copie miroir
sur /dev/loop2 .

lvconvert --type raid1 --mirrors 1 <<source-lv>> <<dest-pv>>
lvconvert --type raid1 --mirrors 1 /dev/vg2/lv1 /dev/loop2

Divisez ensuite 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

Faire vg2/lv1 inactif.

lvchange -a n /dev/vg2/lv1

Puis (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) S'il y a une duplication des noms des volumes logiques dans
les deux groupes de volumes, vgmerge refusera de continuer.

Connexe :Comment programmer un AVR Raven avec Linux ou un Mac ?

3) Lors de la fusion, volumes logiques dans vg1 doit être inactif. Et sur les volumes logiques fractionnés dans vg2 appartenant à vg1 doit être inactif. Dans notre cas, il s'agit de lv1 .


Linux
  1. CentOS / RHEL :Comment déplacer un groupe de volumes d'un système à un autre

  2. Comment déplacer le swap d'une partition de disque vers un volume LVM sous Linux

  3. Comment déplacer (et écraser) tous les fichiers d'un répertoire à un autre ?

  4. Comment renommer plusieurs fichiers d'une extension à une autre sous Linux/Unix ?

  5. Existe-t-il un moyen simple de déplacer/copier un volume logique d'un groupe de volumes à un autre ? (LVM2)

Reptyr - Déplacer un processus en cours d'exécution d'un terminal à un autre sans le fermer

Gestion des volumes logiques

Comment déplacer des comptes d'un serveur cPanel vers un autre serveur cPanel ?

Wormhole - Partagez en toute sécurité des fichiers d'un ordinateur à un autre sous Linux

CentOS / RHEL :déplacer un volume physique d'un groupe de volumes existant vers un autre groupe de volumes

Exemples de commandes vgextend sous Linux