Red Hat Training

A Red Hat training course is available for Red Hat Enterprise Linux

A.3. Suporte do Mapeador de Dispositivo para o Gerenciador de Dispostivo udev

A função primária do gerenciador de dispositivo udev é fornecer uma maneira dinâmica de configurar nós no diretório /dev. A criação destes nós é direcionada pela aplicação de regras udev no espaço do usuário. Estas regras são processadas em eventos udev enviados do kernel diretamente como um resultado de adicionar, remover ou alterar particulares dispositivos. Isto fornece um mecanismo conveniente e central para suporte hotplugging.
Além de criar os nós, o gerenciador de dispositivos udev é também capaz de criar qualquer link simbólico com seus próprios nomes, fornecendo aos usuários a liberdade de escolher seu um nome personalizado e estrutura de diretório no diretório /dev, se necessário.
Cada evento udev contém informações básicas sobre o dispositivo sendo processado, tais como seu nome, o sub sistema que pertence, o tipo de dispositivo, seus números maiores e menores usados e o tipo de evento. Dado isso e tendo a possibilidade de acessar toda a informação encontrada no diretório /sys que é também acessível dentro das regras udev, os usuários são capazes de utilizar filtros simples baseados nestas informações e rodar as regras condicionalmente baseadas nas mesmas.
O gerenciador de dispositivo udev também fornece uma maneira centralizada de configurar permissões nos nodos. Um usuário pode fácilmente adicionar um conjunto de regras personalizadas para definir as permissões para qualquer dispositivo especificado com qualquer parte de informação disponível enquanto o evento está em processamento.
Também é possível adicionar ganchos de programas diretamente nas regras udev. O gerenciador de dispositivos udev pode chamar estes programas para fornecer maior processamento que seja necessário para manusear o evento. Além disso, o programa pode exportar variáveis ​​de ambiente, como resultado deste processamento. Qualquer resultado dado pode ser usado em outras regras como uma fonte suplementária de informação.
Qualquer software usando a bilbioteca udev é capaz de receber e processar eventos udev com todas as informações disponíveis, então o processamento não é vinculado somente ao daemon udev.

A.3.1. Integração do udev com o Mapeador de Dispositivo

No RHEL 6, o Mapeador de Dispositivo fornece suporte direto para integração udev. Isto sincroniza do Mapeador de Dispositivos com todos processamentos udev relacionados aos mapeadores de dispositivos, incluindo dispositivos LVM. A sincronização é necessária uma vez que a aplicação de regra no udev daemon é uma forma de processamento paralela com o programa que é a fonte das mudanças dos dispositivos (como dmsetup e LVM). Sem este suporte, era um problema para um usuário tentar remover um dispositivo que estava ainda aberto e processado pelas regras udev como um resultado de mudanças de eventos anteriores; isso era particularmente comum quando havia um curto tempo entre mudanças deste dispositivo.
A versão RHEL 6 fornece suporte oficial para regras udev em Dispositivos de Mapeamento em geral e também para LVM. A Tabela A.1, “Regras do udev para os Dispositivos de Mapeador de Dispositivo” resume estas regras, que estão instaladas em /lib/udev/rules.d.

Tabela A.1. Regras do udev para os Dispositivos de Mapeador de Dispositivo

Nome de Arquivo Descrição
10-dm.rules
Contém regras gerais / básicas do Mapeador de Dispositivos e cria sumlinks em /dev/mapper com um alvo /dev/dm-N onde N é um número atribuído dinamicamente ao dispositivo pelo kernel (/dev/dm-N é um nó)
NOTA: nódos /dev/dm-N nunca devem ser usados em scripts para acessar o dispositivo já que o número N é atribuído dinamicamente e muda com a sequência de como dispositivos são ativados. Portanto, nomes verdadeiros no diretório /dev/mapper devem ser usados. Este layout é para suportar requerimentos udev de como nódos/symlinks devem ser criados.
11-dm-lvm.rules
Contém regras aplicadas para dispositivos LVM e cria symlinks para os volumes lógicos do grupo de volume. Os sumlinks são criados no diretório /dev/vgname com o alvo /dev/dm-N.
NOTA: Para ser consistente com o padrão para nomear todas as futuras regras para sub sistemas de Mapeadores de Dispositivos, regras udev devem seguir o formato 11-dm-subsystem_name.rules. Qualquer usuário libdevmapper que proporciona regras udev também devem seguir este padrão.
13-dm-disk.rules Contém regras para serem aplicadas para todos Mapeadores de Dispositivos em geral e cria symlinks no /dev/disk/by-id, /dev/disk/by-uuid e diretórios /dev/disk/by-uuid.
95-dm-notify.rules Contém a regra para notificar o processo de espera usando libdevmapper (assim como o LVM e dmsetup). A notificação é feita após que todas as regras anteriores são aplicadas, para assegurar que qualquer processamento udev seja completo. Processo notificado é então retomado.
Você pode adicionar regras de permissões personalizadas por meio do arquivo 12-dm-permissions.rules. Este arquivo não é instalado no diretório /lib/udev/rules. Ele é encontrado no diretório /usr/share/doc/device-mapper-version. O arquivo 12-dm-permissions.rules é um molde contendo dicas de como configurar as permissões, baseadas por exemplo em algumas regras correspondentes; o arquivo contém exemplos de algumas situações comuns. Você pode editar este arquivo e colocar manualmente no diretório /etc/udev/rules.d onde ele vai sobreviver à atualizações, então as configurações permanecerão.
Estas regras definem todas as variantes que poderiam ser usadas por outras regras enquanto processava os eventos.
As seguintes variáveis são definidas em 10-dm.rules:
  • DM_NAME: Nome do dispositivo do Mapeador de Dispositivo
  • DM_UUID: UUID do dispositivo do Mapeador de Dispositivo
  • DM_SUSPENDED: o estado suspenso do dispostivo do Mapeador de Dispositivo
  • DM_UDEV_RULES_VSN: Versão de regras udev (este é principalmente para todas as outras regras para verificar que as variáveis ​​citadas anteriormente são definidas diretamente pelas regras oficiais do Mapeador de Dispositivo)
As seguintes variáveis estão definidas em 11-dm-lvm.rules:
  • DM_LV_NAME: nome do volume lógico
  • DM_VG_NAME: nome do grupo de volume
  • DM_LV_LAYER: nome da camada LVM
Todas essas variáveis podem ser usadas no arquivo 12-dm-permissions.rules para definir a permissão de específicos dispositivos de Mapeadores de Dispositivos, conforme documentado no arquivo 12-dm-permissions.rules.