Cómo mover un volumen físico en LVM


LVM move

Si se requiere mover datos de un disco a otro podríamos pensar en copiar los datos con cp, rsync, o cualquier otro utilitario para posteriormente desmontar la partición, editar el /etc/fstab para que apunte a la nueva ruta, y todo lo que conlleva desincoporar un disco o partición por otra. Pero si se tomó la previsión de hacer el particionado de disco con LVM, existe una manera más limpia de hacer el cambio de disco en caliente, es decir, sin necesidad de desmontar las particiones, e incluso dejando las mismas referencias en el /etc/fstab ya que se seguirá usando la misma partición LVM. Veamos un ejemplo. Si se tiene un disco de 50 GB como un volumen físico en /dev/sdb, asociado a un volumen de grupo data, y se quiere mover los datos a otro disco /dev/sdc  esto es lo que de debe hacer. A continucación se muestra la representación de la distribución inicial:

LVM concepts

podemos consultar el estado actual del los volúmenes físicos con la orden pvs:

# pvs
PV VG Fmt Attr PSize PFree
 /dev/sda2 system lvm2 a- 19.77g 0 
 /dev/sdb data lvm2 a- 50.00g 0

Luego se crea el volumen físico donde se moverá la información:

# pvcreate /dev/sdc
 Physical volume "/dev/sdc" successfully created

Consultamos nuevamente los volúmenes físicos:

# pvs
PV VG Fmt Attr PSize PFree 
 /dev/sda2 system lvm2 a- 19.77g 0 
 /dev/sdb data lvm2 a- 50.00g 0 
 /dev/sdc lvm2 a- 50.00g 50.00g

Vamos ahora a consultar los volúmenes de grupo:

# vgs
VG #PV #LV #SN Attr VSize VFree
 data 1 1 0 wz--n- 50.00g 0 
 system 1 6 0 wz--n- 19.77g 0

Como puede verse el volumen de grupo llamado data ocupa 50 GB. Como este es el volumen de grupo que contiene el volumen físico que queremos mover (/dev/sdb), debemos agregar el volumen físico a este grupo:

# vgextend data /dev/sdc
 Volume group "data" successfully extended

Si consultamos nuevamente veremos que el volumen de grupo ahora tiene 100 GB correspondientes a /dev/sdb (0 GB libres) y /dev/sdc ( 50 GB libres):

# pvs
PV VG Fmt Attr PSize PFree 
 /dev/sda2 system lvm2 a- 19.77g 0 
 /dev/sdb data lvm2 a- 50.00g 0 
 /dev/sdc data lvm2 a- 50.00g 50.00g
# vgs
 VG #PV #LV #SN Attr VSize VFree 
 data 2 1 0 wz--n- 99.99g 50.00g
 system 1 6 0 wz--n- 19.77g 0

Ahora procederemos a mover los datos del  volumen físico /dev/sdb al /dev/sdc:

LVM move

# pvmove /dev/sdb
/dev/sdb: Moved: 0.0%
/dev/sdb: Moved: 11.8%
/dev/sdb: Moved: 30.5%
/dev/sdb: Moved: 75.7%
/dev/sdb: Moved: 95.0%
/dev/sdb: Moved: 99.3%
/dev/sdb: Moved: 100.0%

Aquí no hace falta indicar el otro volumen porque los datos se distribuirán entre los volúmenes físicos restantes del volumen de grupo, y en este caso es solo /dev/sdcAhora verificamos  la distribución de los volúmenes físicos a ver cómo quedó:

# pvs
PV VG Fmt Attr PSize PFree 
 /dev/sda2 system lvm2 a- 19.77g 0 
 /dev/sdb data lvm2 a- 50.00g 50.00g
 /dev/sdc data lvm2 a- 50.00g 0

Como puede verse el disco /dev/sdb no tiene datos (50 GB libres) mientras que /dev/sdc tiene los datos (0 GB libres). Luego faltaría quitar el volumen físico a desincorporar del volumen de grupo:

# vgreduce data /dev/sdb
 Removed "/dev/sdb" from volume group "data"

Ahora  consultamos los volúmenes físicos y los volúmenes de grupo:

# pvs
PV VG Fmt Attr PSize PFree 
 /dev/sda2 system lvm2 a- 19.77g 0 
 /dev/sdb lvm2 a- 50.00g 50.00g
 /dev/sdc data lvm2 a- 50.00g 0
# vgs
VG #PV #LV #SN Attr VSize VFree
 data 1 1 0 wz--n- 50.00g 0 
 system 1 6 0 wz--n- 19.77g 0

Y por último procedemos desechar el volumen físico:

# pvremove /dev/sdb
 Labels on physical volume "/dev/sdb" successfully wiped
# pvs
PV VG Fmt Attr PSize PFree
 /dev/sda2 system lvm2 a- 19.77g 0
 /dev/sdc data lvm2 a- 50.00g 0

Esto permite que se puedan mover los datos de un disco a otro, sin necesidad de copiar los datos a nivel del sistema operativo, sin interrumpir servicios o reiniciar el equipo. Al final tendremos el disco /dev/sdc como el volumen físico del volumen data como se muestra a continuación:

LVM final

Referencia: http://www.tldp.org/HOWTO/LVM-HOWTO/removeadisk.html


,

  1. #1 by Luis Gallardo on 03/09/2016 - 2:21

    Hola Nicolás. LVM no tiene redundancia. Para ello necesitas RAID, y sobre RAID montas tu LVM. Saludos!

  2. #2 by Nicolas on 17/08/2016 - 2:30

    Hola Luis, muy buena y clara explicación, estoy tratando de averiguar como se comporta LVM en caso de que algún PV falle o se rompa. Es decir, sin necesidad de espejar u otro tipo de RAID es posible mantener la información distribuida de modo tal que ante una falla pueda sustituirse el PV y se regenere? Supongo que estara ligado a espacio ocupado y demas, pero serias tan amable de comentarme tu expericencia al respecto? Muchas gracias, saludos !

Los Comentarios están cerrados