Fondamentalement, je souhaite déplacer / copier plusieurs volumes logiques (lv) dans un nouveau groupe de volumes (vg). Le nouveau groupe de volumes réside sur un nouvel ensemble de volumes physiques. Quelqu'un sait-il comment le faire en toute sécurité sans endommager les données à l'intérieur de ces volumes logiques ??
partitioning
hard-drive
lvm
personne
la source
la source
Réponses:
vgmerge vous permet de fusionner deux VG. Vous pouvez également utiliser pvmove pour déplacer des données dans un VG et vgsplit si vous souhaitez revenir à plusieurs VG.
la source
Il n'y a aucune raison de le copier d'abord dans un fichier .img, faites d'abord le lvcreate, puis copiez-le directement:
la source
D'accord, j'ai pu gérer la situation à ma façon. Voici les étapes que j'ai suivies:
1) Prenez un instantané du volume logique de ciblage.
lvcreate --snapshot --name <the-name-of-the-snapshot> --size <the size> /dev/volume-group/logical-volume
2) Créez une copie d'image du contenu de l'instantané à l'aide
dd
dd if=/dev/volume-group/snapshot-name of=/tmp/backup.img
3) Créez un nouveau volume logique de taille suffisante dans le groupe de volumes de ciblage (nouveau).
lvcreate --name <logical-volume-name> --size <size> the-new-volume-group-name
4) Écrivez des données sur le nouveau volume logique à partir de la sauvegarde d'image en utilisant
dd
dd if=/tmp/backup.img of=/dev/new-volume-group/new-logical-volume
5) supprimez l'instantané et la sauvegarde d'image à l'aide de
lvremove
etrm
respectivement.C'est tout le monde ... J'espère que cela aide quelqu'un :)
la source
À 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
, etvgsplit
. 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 le groupe de volumes vg1 avec le volume logique lv1 et vg2 avec lv2, et faisons une copie de lv1 dans vg2.
Créez des fichiers.
Configurez des périphériques de boucle sur des fichiers.
Créez des volumes physiques sur les périphériques de boucle (initialisez les périphériques de boucle à utiliser par LVM).
Créez les groupes de volumes vg1 et vg2 sur / dev / loop1 et / dev / loop2 respectivement.
Créez des volumes logiques lv1 et lv2 sur vg1 et vg2 respectivement.
Créez des systèmes de fichiers ext4 sur lv1 et 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.
Exécutez la commande de fusion en mode test. Cela fusionne lv1 en lv2.
Et puis pour de vrai.
Créez ensuite une paire de miroirs RAID 1 à l'
lv1
aide delvconvert
. L'argument <> ditlvconvert
de faire la copie miroirlv1_copy
sur/dev/loop2
.Ensuite, divisez le miroir. Le nouveau LV est maintenant lv1_copy.
Rendre vg2 inactif.
Ensuite (mode test)
Pour de vrai
Sortie résultante:
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:
Et sur split:
la source
Jusqu'à présent, les 4 réponses manquent toutes que la taille exacte du volume n'est souvent pas connue.
lvdisplay
affiche uniquement les valeurs arrondies à 2 décimales etman lvdisplay
pointe uniquement vers d'autres commandes pour les options disponibles. Ce qui suit sélectionne MiB, qui est suffisamment précis avec la taille de bloc LVM par défaut de 4 MiB:lvdisplay --units m
MiB est également l'unité par défaut pour
--size
oflvcreate
. En cas de doute, revérifiez la taille correcte aveclvdisplay
après avoir créé le volume cible. Continuez ensuite comme dans les autres réponses pour faire une copie. De plus, je recommande de vérifier la copie , par exemple aveccmp
.Voici pourquoi un instantané est utilisé et ce qu'il protège et ne protège pas:
L'instantané est créé de manière à ce que toutes les données soient copiées telles qu'elles étaient au moment de la création de l'instantané. Les activités sur le volume source pendant le processus de copie ne seront pas reflétées dans la copie.
L'instantané protège également le volume source des erreurs humaines dans la
dd
ligne de commande. Si vous écrivez accidentellement sur l'instantané, seules les données de l'instantané seront endommagées et vous pouvez simplement supprimer l'instantané et recommencer.Le volume cible n'est pas protégé pendant les processus de copie. Si un autre administrateur (ou un processus automatique tel que l'os-prober de
dracut
) monte le volume incomplet, le montage peut bousiller les choses. (Même un montage en lecture seule peut toujours écrire des entrées de journal sur le volume.)la source
J'offrirai le mien:
si tout va bien, supprimez la source
la source
Si vous avez besoin de copier un volume logique de VG A vers un autre VG B, j'ai trouvé une variante intéressante en utilisant
partclone
. L'instantané puis la copie avec dd est une bonne méthode mais peut être lent si vos systèmes de fichiers ne sont pas pleins. Cette solution est très rapide car elle copie uniquement les blocs utilisés.le
--size
voici à quel point écrire peut se produire avant que l'instantané est désactivénew_lv_size
doit être au moins de la taille de la source LVfs_type
peut êtreext4
,fat32
,btrfs
,xfs
, ... tout FS soutenu par partclonela source