GNU/Linux >> Tutoriels Linux >  >> Linux

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

Un groupe de volumes se compose de volumes physiques entiers. Un volume physique se compose de plusieurs extensions (une extension est généralement de 4 Mo); chaque extension peut appartenir à un volume logique différent. Pour transférer un volume logique vers un groupe différent, vous ne pouvez pas simplement transférer des étendues, car cela pourrait diviser le volume physique entre le VG source et le VG cible.

Ce que vous pouvez faire est de transférer un ou plusieurs PV du VG source vers le VG cible, avec le vgsplit commande. Vous pouvez spécifier les PV que vous souhaitez transférer ou les LV (mais un seul à la fois). Si vous spécifiez un LV, celui-ci et les autres LV du VG source doivent se trouver sur des PV distincts. Le VG de destination sera créé si aucun VG n'existe avec le nom spécifié.

vgsplit -n source_group/volume_to_copy source_group target_group
vgsplit source_group target_group /dev/sdy99 /dev/sdz99

Vous devrez peut-être utiliser pvmove d'abord pour faire en sorte que les volumes logiques que vous souhaitez déplacer soient sur des PV distincts.

Si vous vouliez conserver les limites physiques du VG et déplacer les données, il n'y a pas d'outil intégré, mais vous pouvez créer un miroir puis supprimer l'original.


À partir de LVM dans Debian Stretch (9.0), à savoir 2.02.168-2, il est possible de faire une copie d'un volume logique sur 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 qu'ils soient utilisés 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

Facultativement, é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 . Ledest-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.

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


Je vais offrir le mien :

umount /somedir/

lvdisplay /dev/vgsource/lv0 --units b

lvcreate -L 12345b -n lv0 vgtarget

dd if=/dev/vgsource/lv0 of=/dev/vgtarget/lv0 bs=1024K conv=noerror,sync status=progress

mount /dev/vgtarget/lv0 /somedir/

si tout va bien, supprimez la source

lvremove vgsource/lv0

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

  2. déplacer un compte de messagerie d'un serveur cPanel à un autre

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

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

  5. Copier toute la hiérarchie du système de fichiers d'un lecteur à un autre

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 ?

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

Quel est le moyen le plus rapide de déplacer un million d'images d'un répertoire à un autre sous Linux ?

Comment rediriger un port d'une machine à une autre ?