GNU/Linux >> Tutoriales Linux >  >> Linux

¿Existe una forma sencilla de mover/copiar un volumen lógico de un grupo de volúmenes a otro? (LVM2)

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), puedes usar vgsplit para dividir el lv en un nuevo vg y vgmerge para fusionar la nueva vg en la vg de destino.

Aunque LVM tiene una función de duplicación, no puede usarla (con cordura) para hacer una copia entre grupos de volúmenes, porque ambas patas de la duplicación deben vivir en el mismo vg y la asociación no se puede romper.

Puede copiar un volumen LVM a otro de la forma en 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 , 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 de LVM en Debian stretch (9.0), es decir, 2.02.168-2, es posible hacer una copia de un volumen lógico en 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 simplemente mover el volumen.

Una sesión de ejemplo completa e independiente que utiliza dispositivos de bucle y lvconvert sigue.

Resumen:creamos el grupo de volúmenes vg1 con volumen lógico lv1 y vg2 con lv2 y haga una copia de lv1 en vg2 .

Crear 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 use LVM).

pvcreate /dev/loop1 /dev/loop2

Crear grupos de volumen vg1 y vg2 en /dev/loop1 y /dev/loop2 respectivamente.

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

Crear volúmenes lógicos lv1 y lv2 en vg1 y vg2 respectivamente.

lvcreate -L 10M -n lv1 vg1
lvcreate -L 10M -n lv2 vg2

Crear sistemas de archivos ext4 en lv1 y lv2 .

mkfs.ext4 -j /dev/vg1/lv1
mkfs.ext4 -j /dev/vg2/lv2

Opcionalmente, escribe algo en lv1 para que luego puedas comprobar que la copia se ha creado correctamente. Hacer vg1 inactivo.

vgchange -a n vg1

Ejecute el comando de combinación en modo de prueba. Esto fusiona lv1 en lv2 .

vgmerge -A y -l -t -v <<destination-vg>> <<source-vg>>
vgmerge -A y -l -t -v vg2 vg1

Y luego de verdad.

vgmerge -A y -l -v vg2 vg1

A continuación, cree un par de espejos RAID 1 a partir de lv1 usando lvconvert . El argumento <> le dice a lvconvert para hacer la copia espejo lv1_copy en /dev/loop2 .

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

Luego divide el espejo. El nuevo LV ahora es lv1_copy .

lvconvert --splitmirrors 1 --name <<source-lv-copy>> <<source-lv>>
lvconvert --splitmirrors 1 --name lv1_copy /dev/vg2/lv1

Haz vg2 inactivo.

vgchange -a n vg2

Entonces (modo de prueba)

vgsplit -t -v <<source-vg>> <<destination-vg>> <<moved-to-pv>>
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 combinar:

Logical volumes in `vg1` must be inactive

Y en división:

Logical volume `vg2/lv1` must be inactive.

Linux
  1. CentOS/RHEL:mover un volumen físico de un grupo de volúmenes existente a otro grupo de volúmenes

  2. CentOS/RHEL:Cómo mover un grupo de volúmenes de un sistema a otro

  3. Cómo copiar una tabla de una base de datos mysql a otra base de datos mysql

  4. ¿Cómo copiar los 10 archivos más recientes de un directorio a otro?

  5. ¿Cuál es la forma más rápida de mover un millón de imágenes de un directorio a otro en Linux?

Cómo copiar elementos de un DynamoDB a otra tabla de DynamoDB usando Python en AWS

Reptyr:mueva un proceso en ejecución de una terminal a otra sin cerrarlo

Cómo copiar o clonar permisos de un archivo a otro en Linux

¿Cómo mover todos los archivos (incluidos los ocultos) de un directorio a otro?

Linux:¿mover un volumen lógico de un grupo de volúmenes a otro?

¿Cómo copiar un archivo de otro directorio al actual?