CentOS | RHEL : Migrar storage LVM con pvmove

Realizar la migración de un Volume Group de un disco A → a un disco B.
Para este caso, tenemos la siguiente configuración dentro de nuestro servidor:
Physical Volume:
[root@test-lab1 ~]# pvs
PV VG Fmt Attr PSize PFree
/dev/vda2 centosvg lvm2 a-- 9,51g 0
/dev/vdb testvg lvm2 a-- 10,00g 0
Volume Group:
[root@test-lab1 ~]# vgs | grep -i testvg
testvg 1 5 0 wz--n- 10,00g 0
Logical Volume:
[root@test-lab1 ~]# lvs | grep -i testvg
pv1 testvg -wi-a----- 2,00g
pv2 testvg -wi-a----- 2,00g
pv3 testvg -wi-a----- 2,00g
pv4 testvg -wi-a----- 2,00g
pv5 testvg -wi-a----- 2,00g
Tenemos dos discos presentados en el servidor, en el cual en uno de ellos se encuentra creado un Volume Group llamado “testvg”. Vamos a migrar el Volume Group del disco “/dev/vdb” al disco “/dev/vdc”.
Nota: Para mas seguridad, crear un backup antes de realizar la migración.
Pasos
1- Preparar el nuevo disco para la migración. Creamos el disco con el comando pvcreate.
[root@test-lab1 ~]# pvcreate /dev/vdc
Physical volume "/dev/vdc" successfully created
2- Extendemos el Volume Group al nuevo disco creado.
[root@test-lab1 ~]# vgextend testvg /dev/vdc
Volume group "testvg" successfully extended[root@test-lab1 ~]# pvs | grep -i testvg
/dev/vdb testvg lvm2 a-- 10,00g 0
/dev/vdc testvg lvm2 a-- 10,00g 10,00g
3- Verificamos en que disco se encuentran alojados actualmente nuestros Logical Volume.
[root@test-lab1 ~]# lvs -a -o+devices | grep -i testvg
pv1 testvg -wi-a----- 2,00g /dev/vdb(0)
pv2 testvg -wi-a----- 2,00g /dev/vdb(512)
pv3 testvg -wi-a----- 2,00g /dev/vdb(1024)
pv4 testvg -wi-a----- 2,00g /dev/vdb(1536)
pv5 testvg -wi-a----- 2,00g /dev/vdb(2048)
4- Iniciamos la migración con el comando pvmove. Donde “/dev/vdb” es el origen y “/dev/vdc” es el destino. Esta acción se puede realizar en caliente, sin necesidad de desmontar los filesystem o detener algún servicio o aplicación corriendo dentro de los Logical Volume.
Nota: Asegurarse que el nuevo disco posee la misma o mayor capacidad que el disco actual.
[root@test-lab1 ~]# pvmove /dev/vdb /dev/vdc
/dev/vdb: Moved: 0,2%
/dev/vdb: Moved: 15,0%
/dev/vdb: Moved: 20,0%
/dev/vdb: Moved: 35,0%
/dev/vdb: Moved: 40,0%
/dev/vdb: Moved: 55,0%
/dev/vdb: Moved: 60,0%
/dev/vdb: Moved: 75,0%
/dev/vdb: Moved: 80,0%
/dev/vdb: Moved: 95,0%
/dev/vdb: Moved: 100,0%
Podemos utilizar las siguientes opciones de acuerdo a lo necesitado.
- -b : Realiza la migración en segundo plano.
- -i n : Muestra el reporte en un intervalo de tiempo, donde “n” es un intervalo de segundo. Ejemplo: # pvmove -i5 /dev/vdc /dev/vdb
Una vez finalizado, podemos volver a verificar el lugar en donde se encuentran los Logical Volume.
[root@test-lab1 ~]# lvs -a -o+devices | grep -i testvg
pv1 testvg -wi-a----- 2,00g /dev/vdc(0)
pv2 testvg -wi-a----- 2,00g /dev/vdc(512)
pv3 testvg -wi-a----- 2,00g /dev/vdc(1024)
pv4 testvg -wi-a----- 2,00g /dev/vdc(1536)
pv5 testvg -wi-a----- 2,00g /dev/vdc(2048)
Y como observamos, los mismos se encuentra alojados en el nuevo disco presentado. En este momento podemos retirar el disco ya no utilizado.
5- Para retirar el disco, debemos reducir el volume con el siguiente comando.
[root@test-lab1 ~]# vgreduce testvg /dev/vdb
Removed "/dev/vdb" from volume group "testvg"[root@test-lab1 ~]# pvs | grep -i testvg
/dev/vdc testvg lvm2 a-- 10,00g
Opcional: Ahora podemos eliminar el disco con el comando pvremove.
[root@test-lab1 ~]# pvremove /dev/vdb
Labels on physical volume "/dev/vdb" successfully wiped[root@test-lab1 ~]# pvs
PV VG Fmt Attr PSize PFree
/dev/vda2 centosvg lvm2 a-- 9,51g 0
/dev/vdc testvg lvm2 a-- 10,00g 0