Este equipo especializado luego de varios días de investigación y recopilación de de información, han obtenido los datos necesarios, deseamos que te sea de gran utilidad en tu trabajo.
Solución:
Si puede hacer arreglos para que el volumen lógico esté en un subconjunto separado de volúmenes físicos del resto del grupo de volúmenes de origen (lvconvert sourcevg/sourcelv /dev/pv1 ...
puede ayudar), puede usar vgsplit
para dividir el lv en un nuevo vg y vgmerge
para fusionar el nuevo vg en el vg de destino.
Aunque LVM tiene una función de duplicación, no puede (con cordura) usarla para hacer una copia entre grupos de volumen, porque ambas patas del espejo deben vivir en el mismo vg y la asociación no se puede romper.
Puede copiar un volumen LVM a otro de la misma forma que copiaría cualquier volumen a otro: cree un lv de destino del tamaño apropiado, luego copie el contenido con dd if=/dev/sourcevg/sourcelv of=/dev/targetvg/targetlv bs=4M
. Si el volumen de origen está activo, puede aprovechar LVM para hacer una copia consistente: primero tome una instantánea del lv de origen con lvcreate -s
y luego copie la instantánea.
pvmove -n lvol1 /dev/sdb1 /dev/sdc1
pvmove puede mover datos entre volúmenes físicos: Guía del administrador de LVM
A partir del LVM en Debian stretch (9.0), es decir 2.02.168-2, es posible hacer una copia de un volumen lógico entre grupos de volúmenes usando una combinación de vgmerge
, lvconvert
, y vgsplit
. Dado que un movimiento es una combinación de una copia y una eliminación, esto también funcionará para un movimiento.
Alternativamente, puede usar pvmove
para mover el volumen.
Una sesión de ejemplo completa e independiente que utiliza dispositivos de bucle y
lvconvert
sigue.
Resumen: creamos grupo de volumen vg1
con volumen lógico lv1
, y vg2
con lv2
y hacer una copia de lv1
en vg2
.
Crea archivos.
truncate pv1 --size 100MB
truncate pv2 --size 100MB
Configure dispositivos de bucle en archivos.
losetup /dev/loop1 pv1
losetup /dev/loop2 pv2
Cree volúmenes físicos en dispositivos de bucle (inicialice los dispositivos de bucle para que los utilice LVM).
pvcreate /dev/loop1 /dev/loop2
Crear grupos de volumen vg1
y vg2
sobre /dev/loop1
y /dev/loop2
respectivamente.
vgcreate vg1 /dev/loop1
vgcreate vg2 /dev/loop2
Crea volúmenes lógicos lv1
y lv2
sobre vg1
y vg2
respectivamente.
lvcreate -L 10M -n lv1 vg1
lvcreate -L 10M -n lv2 vg2
Cree sistemas de archivos ext4 en lv1
y lv2
.
mkfs.ext4 -j /dev/vg1/lv1
mkfs.ext4 -j /dev/vg2/lv2
Opcionalmente, escriba algo en lv1
para que luego puedas comprobar que la copia se creó correctamente. Fabricar vg1
inactivo.
vgchange -a n vg1
Ejecute el comando fusionar en modo de prueba. Esto se fusiona lv1
en lv2
.
vgmerge -A y -l -t -v <> <>
vgmerge -A y -l -t -v vg2 vg1
Y luego de verdad.
vgmerge -A y -l -v vg2 vg1
Luego cree un par de espejos RAID 1 a partir de lv1
utilizando lvconvert
. El argumento <> dice lvconvert
para hacer la copia espejo
lv1_copy
sobre /dev/loop2
.
lvconvert --type raid1 --mirrors 1 <> <>
lvconvert --type raid1 --mirrors 1 /dev/vg2/lv1 /dev/loop2
Luego divide el espejo. El nuevo LV es ahora lv1_copy
.
lvconvert --splitmirrors 1 --name <> <>
lvconvert --splitmirrors 1 --name lv1_copy /dev/vg2/lv1
Fabricar vg2
inactivo.
vgchange -a n vg2
Entonces (modo de prueba)
vgsplit -t -v <> <> <>
vgsplit -t -v /dev/vg2 /dev/vg1 /dev/loop1
De verdad
vgsplit -v /dev/vg2 /dev/vg1 /dev/loop1
Salida resultante:
lvs
[...]
lv1 vg1 -wi-a----- 12.00m
lv1_copy vg2 -wi-a----- 12.00m
lv2 vg2 -wi-a----- 12.00m
NOTAS:
1) La mayoría de estos comandos deberán ejecutarse como root.
2) Si hay alguna duplicación de los nombres de los volúmenes lógicos en los dos grupos de volúmenes, vgmerge
se negará a continuar.
3) Al fusionar:
Logical volumes in `vg1` must be inactive
Y en split:
Logical volume `vg2/lv1` must be inactive.
Eres capaz de sostener nuestra publicación exponiendo un comentario y valorándolo te damos la bienvenida.