LVM - Migrar volúmenes a nuevo almacenamiento

De Apuntes
Saltar a: navegación, buscar

LVM (Logical Volume Manager) es una implementación de un administrador de volúmenes lógicos para el kernel Linux. Permite, entre muchas cosas, abstraer el almacenamiento del sistema para poder particionarlo de una manera más dinámica y flexible.

Una de las funciones que permite LVM es la maleabilidad; con esto podemos crecer o decrecer, en caliente, el almacenamiento del sistema sin mucho esfuerzo y además podemos sustituir un sistema de almacenamiento viejo por uno nuevo, también en caliente.

Esta es una guía para poder migrar los volúmenes y sus datos a un nuevo almacenamiento (pueden ser nuevos discos duros más rápidos o más espaciosos) y remover los discos viejos, todo sin la necesidad de reiniciar el sistema operativo o tener caídas en el servicio.

El contexto

  • Se tiene un servidor con un disco duro de 1 TB de almacenamiento, el sistema operativo lo marca como /dev/mapper/mpathX
  • Se agrega un nuevo disco de estado sólido al servidor (1TB o más), el sistema operativo lo identifica como /dev/mapper/mpathY
  • Se cuenta con un VG (Volume Group) llamado vg_data que contiene el LV (Logical Volume) lv_data con los datos del servicio en producción.

Se desea cambiar /dev/mapper/mpathX por /dev/mapper/mpathY para poder servir los datos más rápidamente con el nuevo disco de estado sólido.

Paso 1: Extender el VG

 Realice siempre un respaldo de los datos antes de ejecutar estas tareas.

Primeramente se debe agregar el nuevo almacenamiento al grupo de volúmenes de manera que el sistema lo reconozca dentro del pool de recursos disponibles.

Se configura el dispositivo /dev/mapper/mpathY para que sea un PV (Physical Volume) nuevo con el comando pvcreate:

 pvcreate /dev/mapper/mpathY

Luego, se agrega el nuevo PV al VG para extender su tamaño.

 vgextend data_vg /dev/mapper/mpathY

Paso 2: mover los datos del PV

Antes de continuar, se debe verificar que el nuevo PV cuenta con suficientes extends libres (Free PE), esto se puede consultar con el comando pvdisplay.

Se procede a mover los datos del PV /dev/mapper/mpathX al nuevo PV /dev/mapper/mpathY:

 pvmove -b /dev/mapper/mpathX /dev/mapper/mpathY

El proceso tardará un rato dependiendo del tamaño y velocidad de los dispositivos. La opción -b del comando anterior lo que hace es ejecutar la tarea en segundo plano.

El porcentaje de avance se puede consultar con el comando lvs -a -o+devices. En dicho comando, la columna Cpy%Sync mostrara el valor de avance, cuando ya no registre más datos para el LV y VG en que se está trabajando significa que el proceso terminó.

Paso 3: reducir el VG

Una vez que el proceso de migración de los datos hay finalizado, se puede proceder a remover el PV viejo del VG y reducir el tamaño del pool.

 vgreduce vg_data /dev/mapper/mpathX
 pvremove /dev/mapper/mpathX