A.3. Поддержка udev

Основной задачей менеджера устройств udev является обслуживание файлов устройств в каталоге /dev. Создание файлов устройств осуществляется в соответствии с правилами udev в пространстве пользователя. При добавлении, удалении и изменении устройств ядро генерирует события, которые будут обработаны правилами udev.
udev может создавать не только файлы устройств, но и символьные ссылки, предоставляя тем самым свободу действий в выборе имен устройств и организации каталогов внутри /dev.
Событие udev содержит информацию об устройстве — имя, подсистема, которой оно принадлежит, тип устройства, основной и второстепенный номер и тип события. На основе этой информации и данных из /sys можно создать фильтры для правил.
udev предоставляет централизованный механизм настройки доступа к файлам устройств. Пользователь может определить собственный набор правил доступа к устройствам.
Правила могут содержать вызовы других программ. В свою очередь, программы могут экспортировать переменные окружения. Полученные результаты могут быть переданы правилам для дальнейшей обработки.
Обработка событий может осуществляться не только службой udev, но и другими программами, использующими библиотеку udev.

A.3.1. Интеграция udev с Device Mapper

В RHEL 6 обработка событий udev синхронизируется с Device Mapper. Синхронизация необходима, так как udev применяет правила параллельно с программой, запрашивающей изменение устройства (например, dmsetup или LVM). В противном случае могло бы оказаться так, что пользователь пытается удалить устройство, которое еще используется службой udev.
RHEL 6 обеспечивает поддержку правил udev для устройств Device Mapper. Правила располагаются в /lib/udev/rules.d (см. Таблица A.1, «Правила udev»).

Таблица A.1. Правила udev

Файл Описание
10-dm.rules
Содержит общие правила Device Mapper и создает символьные ссылки в /dev/mapper для устройств /dev/dm-N, где N — динамически назначенный ядром номер устройства.
Сценарии должны использовать действительные имена устройств из /dev/mapper, а не /dev/dm-N, так как номер N назначается динамически и изменяет порядок инициализации устройств.
11-dm-lvm.rules
Содержит правила для устройств LVM и создает символьные ссылки в каталоге /dev/vgname для устройств /dev/dm-N.
Правила udev должны следовать формату 11-dm-подсистема.rules. Пользователи libdevmapper, предоставляющие правила для udev, также должны придерживаться этого формата.
13-dm-disk.rules Содержит правила для обработки устройств Device Mapper и создает символьные ссылки в каталогах /dev/disk/by-id, /dev/disk/by-uuid и /dev/disk/by-uuid.
95-dm-notify.rules Содержит правило для уведомления ожидающего процесса. Уведомление будет отправлено после завершения обработки udev, то есть после применения всех правил. После этого процесс продолжит работу.
Дополнительные правила доступа можно добавить в 12-dm-permissions.rules. Этот файл не устанавливается в /lib/udev/rules по умолчанию и изначально расположен в каталоге /usr/share/doc/device-mapper-версия. Он содержит шаблон для настройки доступа на базе примера. Отредактировав файл, переместите его в /etc/udev/rules.d.
Указанные правила определяют основные переменные, которые могут использоваться другими правилами.
Переменные в 10-dm.rules:
  • DM_NAME: имя проекции устройства;
  • DM_UUID: идентификатор проекции устройства;
  • DM_SUSPENDED: устройство приостановлено;
  • DM_UDEV_RULES_VSN: версия. Проверяется другими правилами, чтобы убедиться, что указанные выше переменные определены официальными правилами Device Mapper.
Переменные в 11-dm-lvm.rules:
  • DM_LV_NAME: логический том;
  • DM_VG_NAME: группа томов;
  • DM_LV_LAYER: уровень LVM.
Для настройки доступа к конкретному устройству Device Mapper перечисленные переменные можно добавить в файл 12-dm-permissions.rules.