Al crear un mirror LVM se crear copias idénticas de los datos del volumen lógico en los distintos dispositivos que lo componen. La idea inicial es tener protección ante fallos de dispositivos aunque podemos dar otros usos interesantes a esta funcionalidad. Los vemos a continuación.
Creación del mirror LVM
En estos ejemplos vamos a trabajar con:
Volúmenes físicos/particiones (pv):
- /dev/sdb1
- /dev/sdc1
Grupo de volúmenes (vggroup):
- vg_test
Volumen lógico (lv):
- lv_test
Inicialmente vemos que el volumen lógico lv_test es un LV lineal (sin mirror) que se encuentra en el grupo vg_test el cual está formado únicamente por el dispositivo /dev/sdb1:
# lvs -a -o +devices | grep test LV VG Attr LSize Devices lv_test vg_test -wi-a----- 500,00m /dev/sdb1(0)
Vamos a crear un nuevo volumen físico con el disco que queremos añadir en mirror:
# pvcreate /dev/sdc1 Physical volume "/dev/sdc1" successfully created
Lo añadimos al grupo de volúmenes en el que está el LV a configurar en mirror:
# vgextend vg_test /dev/sdc1 Volume group "vg_test" successfully extended # pvs | grep sd[bc] /dev/sdb1 vg_test lvm2 a-- 1020,00m 520,00m /dev/sdc1 vg_test lvm2 a-- 1020,00m 1020,00m
Finalmente creamos el mirror (single mirror) para lv_test:
# lvconvert -m1 vg_test/lv_test vg_test/lv_test: Converted: 1,6% vg_test/lv_test: Converted: 79,2% vg_test/lv_test: Converted: 100,0%
Una vez sincronizado podemos observar que efectivamente el volumen lógico lv_test está formado por 2 volumenes físicos (además del log que mantiene la sincronización) en lugar de uno como vimos antes de las pruebas:
# lvs -a -o +devices | grep test LV VG Attr LSize Devices lv_test vg_test mwi-a-m--- 500,00m lv_test_mlog 100,00 lv_test_mimage_0(0),lv_test_mimage_1(0) [lv_test_mimage_0] vg_test iwi-aom--- 500,00m /dev/sdb1(0) [lv_test_mimage_1] vg_test iwi-aom--- 500,00m /dev/sdc1(0) [lv_test_mlog] vg_test lwi-aom--- 4,00m /dev/sdc1(125)
Usar LVM mirror para sustituir discos
Otra funcionalidad interesante que nos permiten los mirror de LVM es sustituir discos en caliente. Como las tareas se hacen a nivel de LVM no es necesario desmontar el filesystem que está sobre el disco a sustituir. El procedimiento sería el siguiente, teniendo en cuenta que ya hemos añadido el disco nuevo al mirror (ver ejemplo anterior) y se encuentra sincronizado. Para sacar la pata del mirror que contiene el disco a sustituir, tan sencillo como:
# lvconvert -m0 vg_test/lv_test /dev/sdb1 Logical volume lv_test converted.
En este caso hemos sacado la pata /dev/sdb1 del mirror. Una vez realizado, verificamos que efectivamente el volumen lógico ya no es un mirror sino un LV lineal:
# lvs -a -o +devices | grep test LV VG Attr LSize Devices lv_test vg_test -wi-a----- 500,00m /dev/sdc1(0)