Básicamente, quiero mover / copiar varios volúmenes lógicos (lv) en un nuevo grupo de volúmenes (vg). El nuevo grupo de volúmenes reside en un nuevo conjunto de volúmenes físicos. ¿Alguien sabe cómo hacerlo de manera segura sin dañar los datos dentro de esos volúmenes lógicos?
partitioning
hard-drive
lvm
nadie
fuente
fuente
Respuestas:
vgmerge te permite fusionar dos VG. También puede usar pvmove para mover datos dentro de un VG, y vgsplit si desea volver a varios VG.
fuente
No hay ninguna razón para copiarlo primero en un archivo .img, solo haga el lvcreate primero, luego cópielo directamente:
fuente
Bien, pude manejar la situación a mi manera. Aquí están los pasos que tomé:
1) Tome una instantánea del volumen lógico de orientación.
lvcreate --snapshot --name <the-name-of-the-snapshot> --size <the size> /dev/volume-group/logical-volume
2) Cree una copia de imagen del contenido de la instantánea utilizando
dd
dd if=/dev/volume-group/snapshot-name of=/tmp/backup.img
3) Cree un nuevo volumen lógico de tamaño suficiente en el grupo de volúmenes de orientación (nuevo).
lvcreate --name <logical-volume-name> --size <size> the-new-volume-group-name
4) Escriba datos en el nuevo volumen lógico desde la copia de seguridad de la imagen utilizando
dd
dd if=/tmp/backup.img of=/dev/new-volume-group/new-logical-volume
5) elimine la instantánea y la copia de seguridad de la imagen usando
lvremove
yrm
respectivamente.Eso es todo amigos ... Espero que esto ayude a alguien :)
fuente
A partir del LVM en Debian tramo (9.0), a saber 2.02.168-2, es posible hacer una copia de un volumen lógico a través de grupos de volúmenes utilizando una combinación de
vgmerge
,lvconvert
, yvgsplit
. 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 el grupo de volúmenes vg1 con el volumen lógico lv1 y vg2 con lv2, y hacemos una copia de lv1 en vg2.
Crea archivos.
Configurar dispositivos de bucle en los archivos.
Cree volúmenes físicos en dispositivos de bucle (inicialice dispositivos de bucle para que los use LVM).
Cree grupos de volúmenes vg1 y vg2 en / dev / loop1 y / dev / loop2 respectivamente.
Cree volúmenes lógicos lv1 y lv2 en vg1 y vg2 respectivamente.
Cree sistemas de archivos ext4 en lv1 y lv2.
Opcionalmente, escriba algo en lv1 para que luego pueda verificar que la copia se creó correctamente. Haga que vg1 esté inactivo.
Ejecute el comando de combinación en modo de prueba. Esto fusiona lv1 en lv2.
Y luego de verdad.
Luego cree un par de espejos RAID 1 desde el
lv1
usolvconvert
. El argumento <> le dicelvconvert
que haga la copia espejolv1_copy
en/dev/loop2
.Luego divide el espejo. El nuevo LV ahora es lv1_copy.
Haga que vg2 esté inactivo.
Entonces (modo de prueba)
De verdad
Resultado resultante:
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) En combinación:
Y en split:
fuente
Las 4 respuestas hasta ahora todas pasan por alto que a menudo no se conoce el tamaño exacto del volumen.
lvdisplay
solo muestra valores redondeados a 2 decimales yman lvdisplay
solo apunta a otros comandos para las opciones disponibles. A continuación se selecciona MiB, que es lo suficientemente preciso con el tamaño de bloque LVM predeterminado de 4 MiB:lvdisplay --units m
MiB también es la unidad predeterminada
--size
delvcreate
. En caso de duda, verifique dos veces el tamaño correctolvdisplay
después de crear el volumen objetivo. Luego continúe como en las otras respuestas para hacer una copia. Además, recomendaría verificar la copia , por ejemplo concmp
.Aquí se explica por qué se usa una instantánea y qué protege y qué no protege:
La instantánea se realiza para que todos los datos se copien tal como estaban en el momento en que se creó la instantánea. Las actividades en el volumen de origen durante el proceso de copia no se reflejarán en la copia.
La instantánea también protege el volumen de origen de los errores humanos en la
dd
línea de comando. Si escribe accidentalmente en la instantánea, solo se dañarán los datos de la instantánea y simplemente puede eliminar la instantánea y comenzar de nuevo.El volumen de destino no está protegido durante los procesos de copia. Si otro administrador (o un proceso automático como el os-prober of
dracut
) monta el volumen incompleto, el montaje puede arruinar las cosas. (Incluso un montaje de solo lectura aún puede escribir entradas de diario en el volumen).fuente
Ofreceré mi propio:
si todo está bien, elimine la fuente
fuente
Si necesita copiar un volumen lógico de VG A a otro VG B, encontré una variante interesante usando
partclone
. La instantánea y luego copiar con dd es un buen método, pero podría ser lento si sus sistemas de archivos no están llenos. Esta solución es muy rápida porque copia solo los bloques usados.el
--size
aquí es cómo puede ocurrir mucho antes de escribir la instantánea será desactivadanew_lv_size
debe ser al menos del tamaño de la fuente LVfs_type
puede serext4
,fat32
,btrfs
,xfs
, ... cualquier FS apoyo de partclonefuente