Trabajar con etiquetas o tags de LVM en Red Hat

En la entrada de hoy veremos como trabajar con etiquetas o tags de LVM en sistemas Red Hat y similares. La idea de esta entrada es un encontronazo que tuve con un clúster de RHEL y cómo lo solventé revisando y actualizando dichas etiquetas. Pero empecemos por el principio.

Si os interesa también podéis escuchar el episodio de podcast:

Etiquetas o tags en LVM

Una etiqueta LVM es una palabra que se puede utilizar para agrupar objetos de LVM2 del mismo tipo. Las etiquetas se pueden adjuntar a objetos como volúmenes físicos, grupos de volúmenes y volúmenes lógicos. Estas se pueden adjuntar a los hosts en una configuración de clúster, cómo os he comentado antes.

Las etiquetas se pueden dar desde la línea de comandos en lugar de los argumentos PV, VG o LV. Es importante remarcar que estas deben tener el prefijo @ para evitar ambigüedades. Cada etiqueta se expande reemplazándola con todos los objetos que poseen esa etiqueta y que son del tipo esperando por su posición en la línea de comandos.

Estas etiquetas LVM son cadenas que pueden tener hasta 1024 caracteres. Las etiquetas no pueden comenzar con guion. Una etiqueta válida solo puede constar de un rango limitado de caracteres. Los permitidos son [A-Za-z0-9_+.-]. A partir de la versión 6.1 de RHEL, la lista de caracteres permitidos se amplio y las etiquetas pueden contener los caracteres /, =, !, :, # y &.

Solo se pueden etiquetas los objetos de un grupo de volúmenes. Los volúmenes físicos pierden sus etiquetas si se eliminan de un grupo de volúmenes; esto se debe a que las etiquetas se almacenan como parte de los metadatos del grupo de volúmenes y se eliminan cuando se elimina el volumen físico.

Trabajar con etiquetas o tags en LVM

Fichero de configuración

Es importante consultar el fichero de configuración /etc/lvm/lvm.conf, y la sección donde se indican como están configuradas las etiquetas.

 # If volume_list is defined, each LV is only activated if there is a
    # match against the list.
    #   "vgname" and "vgname/lvname" are matched exactly.
    #   "@tag" matches any tag set in the LV or VG.
    #   "@*" matches if any tag defined on the host is also set in the LV or VG
    #
    # volume_list = [ "vg1", "vg2/lvol1", "@tag1", "@*" ]

Añadir etiquetas LVM

El comando vgchange se utiliza para añadir o eliminar etiquetas. Por ejemplo, si queremos añadir la etiqueta lvm_test_etiquetaen el grupo de volúmenes datos_vg

# vgchange --addtag lvm_test_etiqueta /dev/datos_vg 
     Volume group "datos_vg" successfully changed

Podemos verificar el cambio utilizando el comando vgs

# vgs -o vg_tags /dev/vg00 
  VG Tags
  lvm_test_etiqueta

O bien listar los tags de todos los volúmenes, así:

vgs -o +vg_tags

Modificamos el archivo de configuración /etc/lvm/lvm.conf y vamos a la sección, como se muestra a principio de la entrada y agregamos una línea volume_list similar a la siguiente:

# vi /etc/lvm/lvm.conf
...
volume_list = ["@lvm_test_etiqueta"]
...

Eliminar etiquetas LVM

Para eliminar etiquetas, debemos añadir el parámetro —deltag al comando vgchange, de la siguiente manera:

# vgchange --deltag lvm_test_etiqueta /dev/datos_vg
  Volume group "vg00" successfully changed

Y verificamos:

# vgs -o vg_tags /dev/datos_vg
    VG Tags

Si no vamos a utilizar más una etiqueta debemos eliminarla del fichero de configuración /etc/lvm/lvm.conf, esto es muy importante, si no queremos liarla parda.

Añadir y eliminar etiquetas LVM en volúmenes lógicos

Nos podemos encontrar con la necesidad de etiquetar un volumen lógico particular en lugar de un grupo de volúmenes completo. Esto se puede hacer usando los mismos comandos. Solo debemos utilizar lvchange en lugar vgchange, por ejemplo para mostrar información del volumen:

# lvs -o lv_tags
  LV Tags

Y esto es todo. Podéis consultar las fuentes consultadas para ampliar información:

Red Hat Enterprise Linux 7 – Appendix D. LVM Object Tags

CentOS / RHEL – How to add, delete and display LVM tags