LVM - Migrar volúmenes a nuevo almacenamiento
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.
Contenido
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