A.3. Soporte de mapeador de dispositivo para el Gestor de dispositivos udev

El papel principal del gestor de dispositivos udev es el de proveer una forma dinámica para configurar los nodos en el directorio /dev. La creación de estos nodos está dirigida por la aplicación de las reglas udev en el espacion de usuario. Estas reglas se procesan en eventos udev enviados directamente desde el kernel como resultado de la adición, remoción o cambio de dispositivos particulares. Así se proporciona un mecanismo central y conveniente para soporte de conexión en caliente.
Además de crear nodos reales, el gestor de dispositivo udev puede crear enlaces simbólicos también con sus propios nombres, proporcionando a los usuarios la libertad de escoger su propio nombre personalizado y la estructura de directorio en el directorio /dev, en caso de necesidad.
Cada evento udev contiene información básica sobre el dispositivo que está siendo procesado, tal como su nombre, el subsistema al que pertenece, el tipo de dispositivo, su número mayor e inferior utilizado y el tipo del evento. De acuerdo con esto, y teniendo la posibilidad de acceder a toda la información hallada en el directorio /sys que también es accesible dentro de las reglas udev, los usuarios pueden utilizar filtros sencillos basados en esta información y ejecutar las reglas condicionalmente con base en esta información.
El gestor de dispositivo udev también proporciona una forma centralizada de establecer los permisos de nodos. Un usuario puede facilmente agregar un conjunto de reglas personalizado para definir los permisos para cualquier dispositivo especificado por cualquier bit de información que está disponible mientras procesa el evento.
También es posible agregar directamente ganchos de programa en reglas udev. El gestor de dispositivo udev puede llamar estos programas para proveer más procesamiento necesario para maneja el evento. También, el programa puede exportar variables de entorno como resultado de este procesamiento. Los resultados proporcionados pueden utilizarse más adelante en las reglas como fuente complementaria de información.
Cualquier software que utilice la biblioteca udev puede recibir y procesar eventos udev con toda la información que está disponible, por lo tanto el procesamiento no esá ligado al demonio udev unicamente.

A.3.1. integración udev con el Mapeador de Dispositivos

En RHEL 6, el Mapeador de Dispositivo proporciona soporte directo para integración udev. De esta manera sincroniza el Mapeador de Dispositivo con todo el procesamiento udev relacionado con dispositivos de Mapeador de Dispositivo, incluyendo dispositivos LVM. La sincronización es necesaria porque la aplicación de reglas en el demonio udev es una forma de procesamiento paralelo con el programa que es la fuente de los cambios de dispositivos (tales como dmsetup y LVM). Sin este soporte, era un problema común para el usuario intentar retirar un dispositivo que estaba aún abierto y procesado por reglas udev como resultado de un cambio de evento previo; esto era en particular común cuando había un tiempo muy corto entre cambios para ese dispositivo.
El lanzamiento de RHEL 6 proporciona oficialmente reglas udev soportadas para dispositivos de Mapeador de Dispositivo en general y para LVM. Tabla A.1, “Reglas udev para Dispositivos de Mapeador de Dispositivo” resume dichas reglas, las cuales se instalan en /lib/udev/rules.d.

Tabla A.1. Reglas udev para Dispositivos de Mapeador de Dispositivo

Nombre de archivo Descripción
10-dm.rules
Contiene reglas básicas y generales de Mapeador de Dispositivo de Dispositivo y crea los symlinks en /dev/mapper con un destino /dev/dm-N donde N es un número asignado dinámicamente por el kernel a un dispositivo (/dev/dm-N es un nodo)
NOTA: nodos /dev/dm-N nunca deben utilizarse en scripts para acceder el dispositivo puesto que el número N es asignado dinámicamente y cambia con la secuencia de cómo se activan los dispositivos. Por lo tanto, deben utilizarse los nombres verdaderos en el directorio /dev/mapper. Este diseño es para soportar requerimientos udev de cómo deben ser creados nodos y symlinks.
11-dm-lvm.rules
Contiene reglas aplicadas para dispositivos LVM y crea los symlinks para los volúmenes lógicos de grupo. Los symlinks son creados en el directorio /dev/vgname con un destino /dev/dm-N.
NOTA: Para ser consistente con las normas de nomenclatura de reglas futuras para subsistemas de Mapeador de Dispositivo, las reglas udev deben seguir el formato 11-dm-subsystem_name.rules. Cualquier usuario libdevmapper que proporcione reglas udev también debe seguir este estándar.
13-dm-disk.rules Contiene reglas para aplicar a dispositivos de Mapeador de Dispositivo en general y crea symlinks en los directorios /dev/disk/by-id, /dev/disk/by-uuid /dev/disk/by-uuid.
95-dm-notify.rules Contiene la regla para notificar el proceso de espera mediante libdevmapper (justo como LVM y dmsetup). La notificación se hace después de que se aplican todas las reglas anteriores para asegurarse de que todo el procesamiento udev esté completo. Luego, el proceso notificado se reanuda.
Puede agregar reglas de permisos personalizadas por medio del archivo 12-dm-permissions.rules. Este archivo no está instalado en el directorio /lib/udev/rules; se encuentra en el directorio /usr/share/doc/device-mapper-version.El archivo 12-dm-permissions.rules es una plantilla que contiene algunos consejos de cómo establecer los permisos, basados en algunas reglas coincidentes dadas como ejemplo; el archivo contiene ejemplos para situaciones más comunes. Puede editar este archivo y colocarlo manualmente en el directorio /etc/udev/rules.d donde sobrevivirá actualizaciones, por lo que la configuración permanecerá.
Estas reglas establecen todas las variables básicas que podrían ser utilizadas por otras reglas durante el procesamiento de eventos.
Las siguientes variables están establecidas en 10-dm.rules:
  • DM_NAME: nombre de dispositivo de Mapeador de Dispositivo
  • DM_UUID: UUID de dispositivo de Mapeador de Dispositivo
  • DM_SUSPENDED: el estado suspendido del dispositivo del Mapeador de Dispositivos
  • DM_UDEV_RULES_VSN: versión de reglas udev (principalmente para todas las otras reglas para verificar que variables mencionadas anteriormente sean establecidas por reglas Mapeador de Dispositivo oficiales)
Las siguientes variables se establecen en 11-dm-lvm.rules:
  • DM_LV_NAME: nombre de volumen lógico
  • DM_VG_NAME: nombre de grupo de volúmenes
  • DM_LV_LAYER: nombre de capa de LVM
Todas las variables pueden ser utilizadas en el archivo 12-dm-permissions.rules para definir un permiso para dispositivos de Mapeador de Dispositivos, como se documentó en el archivo 12-dm-permissions.rules file.