Clustered Logical Volume Manager (CLVM) y GFS2

En esta entrada vamos a ver el proceso de instalación y configuración de CLVM y la forma de crear un sistema de ficheros GFS2. Se podría decir que esta entrada sería la continuación de aquella en la que expliqué el Multipath en Linux. Básicamente, la idea es utilizar CLVM para aprovecharnos de las ventajas de LVM (Logical Volume Manager) en un entorno de Cluster.

Como estamos trabajando en un cluster, voy a diferenciar cuando una tarea se realiza en un único nodo o en todos. Los paquetes de cluster LVM y GFS los instalaremos en todos los nodos del cluster:

# yum install lvm2-cluster.x86_64 gfs2-utils.x86_64

Posteriormente nos aseguramos de que arranquen automáticamente:

# chkconfig clvmd on
# chkconfig gfs2 on

Con la configuración por defecto, LVM no trabaja en modo Cluster, incluso aunque hayamos instalado los paquetes de clvmd o lo hayamos arrancado, debemos reconfigurarlo con el siguiente comando. Lo que hace es modificar el fichero de configuración lvm.conf y especificar el tipo de bloqueo necesario para trabajar en cluster (cluster-wide locking).

# /usr/sbin/lvmconf --enable-cluster

Arrancamos el servicio clvmd:

# service clvmd start

A partir de aquí, el proceso de gestión de volumenes es el mismo que con LVM. Revisad este otro artículo si tenéis alguna duda: gestión de LVM en Linux (Logical Volume Manager). Vamos no obstante a ver como crearíamos una nueva partición con parted en lugar de fdisk como en el otro artículo. En este caso es un disco en multipath, por eso la ruta del mapeo. Esto lo realizamos únicamente en uno de los nodos:

# parted /dev/mapper/mpatha mklabel msdos
# parted /dev/mapper/mpatha mkpart primary 64s 100%
# parted /dev/mapper/mpatha set 1 lvm on

En ese mismo nodo ya podemos crear el volumen físico y el grupo que contendrá el volumen lógico con la partición creada antes:

# pvcreate /dev/mapper/mpathap1
# vgcreate vgroup01 /dev/mapper/mpathap1

Antes de crear el volumen, podemos ir al resto de nodos y asegurarnos que ven la nueva partición y el volumen físico y grupo. Ejecutamos partprobe para refrescar la tabla de particiones en la unidad multipath y luego un rescaneo de los volúmenes de LVM:

# partprobe
# vgscan

Debería aparecer el volumen vgroup01 al ejecutar un vgdisplay, sino algo falla y CLVMD no está funcionando ya que no se propagan los cambios entre los nodos del cluster. Si todo ha ido bien, ya podemos crear (sólo en un nodo) el volumen lógico final y crear el sistema de ficheros GFS2:

# lvcreate -n logical01 -l 77063 vgroup01
# mkfs.gfs2 -p lock_dlm -t cluster01:fs_data -j 2 /dev/vgroup01/logical01

A la hora de crear el sistema de ficheros, especificamos el nombre del protocolo de bloqueo a usar, para un cluster es lock_dlm. Después se indica el nombre del cluster y  del filesystem separados por «:», en nuestro caso el cluster (RHCS) se llama cluster01 y el fs fs_data. Tenemos que especificar el número de journals que queremos crear, tiene que haber uno por cada nodo del cluster. En este caso 2 nodos así que ponemos 2. Lo último es la ruta al volumen lógico o partición a utilizar.

A partir de aquí ya depende si queréis añadir el filesystem para que se monte automáticamente al arrancar los nodos (/etc/fstab/) o si será el cluster el encargado de gestionarlo.