GNU/Linux >> Tutoriales Linux >  >> Linux

Mover un volumen lógico de un grupo de volúmenes a otro

Un grupo de volúmenes consta de volúmenes físicos completos. Un volumen físico consta de muchas extensiones (una extensión suele tener 4 MB); cada extensión puede pertenecer a un volumen lógico diferente. Para transferir un volumen lógico a un grupo diferente, no puede simplemente transferir extensiones, ya que eso podría dividir el volumen físico entre el VG de origen y el VG de destino.

Lo que puede hacer es transferir uno o más PV desde el VG de origen al VG de destino, con el vgsplit dominio. Puede especificar qué PV desea transferir o qué LV (pero solo uno a la vez). Si especifica un LV, este y los otros LV en el VG de origen deben estar en PV separados. El VG de destino se creará si no existe ningún VG con el nombre especificado.

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

Es posible que deba usar pvmove primero para organizar los volúmenes lógicos que desea mover para que estén en PV separados.

Si pretendía conservar los límites físicos del VG y mover los datos, no hay una herramienta integrada, pero podría crear un espejo y luego eliminar el original.


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

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

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

Cree volúmenes lógicos lv1 y lv2 en 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 pueda verificar que la copia se creó correctamente. Hacer vg1 inactivo.

vgchange -a n vg1

Ejecute el comando de combinación en modo de prueba. Esto fusiona vg1 en vg2.

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

Luego cree un par de espejos RAID 1 desde lv1 usando lvconvert . El dest-pv el argumento le dice a lvconvert para hacer la copia espejo 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/lv1 inactivo.

lvchange -a n /dev/vg2/lv1

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 fusionar, volúmenes lógicos en vg1 debe estar inactivo. Y en volúmenes divididos, lógicos en vg2 perteneciente a vg1 debe estar inactivo. En nuestro caso, este es lv1 .


Ofreceré los míos:

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 todo está bien, quita la fuente

lvremove vgsource/lv0

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

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

  3. ¿Cómo copiar configuraciones de una máquina a otra?

  4. ¿Copiar las últimas líneas N de un archivo a otro?

  5. mover una cuenta de correo electrónico de un servidor cPanel a otro

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

Gestión de volúmenes lógicos

¿Cómo mover cuentas de un servidor cPanel a otro servidor cPanel?

¿Cómo copiar confirmaciones de un repositorio de Git a otro?

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

¿Cómo reenviar un puerto de una máquina a otra?