Red Hat Training

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

A.3. Supporto Device Mapper per il Device Manager udev

Il ruolo primario del device manager udev è quello di fornire un metodo dinamico per l'impostazione dei nodi nella directory /dev. La creazione di questi nodi viene eseguita tramite l'implementazione delle regole udev nello spazio utente. Le suddette regole sono processate sugli eventi udev inviati dal kernel come risultato di una aggiunta, rimozione o modifica di dispositivi particolari. Ciò fornisce un meccanismo centrale conveniente per un supporto di tipo hotplug.
Oltre a creare i nodi il device manager udev è in grado di creare qualsiasi link simbolico con i rispettivi nomi, fornendo agli utenti la possibilità di scegliere i nomi e la struttura della directory personalizzati nella directory /dev.
Ogni evento udev contiene le informazioni di base sul dispositivo processato, ad esempio il nome, il sottosistema a cui appartiene ed il tipo di dispositivo, i numeri maggiore e minore usati ed il tipo di evento. Con questi dati e con la possibilità di accedere a tutte le informazioni disponibili nella directory /sys accessibile anche all'interno delle regole udev, gli utenti saranno in grado di utilizzare filtri semplici ed eseguire le regole in base alle suddette informazioni.
Il device manager udev fornisce anche un metodo centralizzato per l'impostazione dei permessi dei nodi. Un utente sarà in grado di aggiungere un set di regole personalizzate per definire i permessi per qualsiasi dispositivo specificato da qualsiasi informazione disponibile durante la processazione dell'evento.
È possibile aggiungere direttamente gli hook di programma nelle regole udev. Il device manager udev è in grado di chiamare i suddetti programmi in modo da fornire una ulteriore processazione per la gestione degli eventi. Inoltre il programma è in grado di esportare le variabili dell'ambiente come risultato di questo processo. Ogni risultato dato può essere usato nelle regole come risorsa supplementare.
Qualsiasi software che utilizza la libreria udev è in grado di ricevere e processare gli eventi udev con tutte le informazioni disponibili, in questo modo la processazione non dipende solo dal demone udev.

A.3.1. Integrazione udev con il Device Mapper

Con RHEL 6 il Device Mapper fornisce un supporto diretto all'integrazione udev. Tale operazione sincronizza il Device Mapper con tutta la processazione di udev relativa ai dispositivi del Device Mapper, incluso i dispositivi LVM. La sincronizzazione è necessaria poichè l'applicazione delle regole nel demone di udev è una forma di processazione parallela al programma d'origine delle modifiche del dispositivo (come ad esempio dmsetup e LVM). Senza questo supporto il tentativo di rimozione di un dispositivo ancora aperto e processato dalle regole udev a causa di alcune modifiche di eventi precedenti risultava essere un problema comune; questa tendenza era molto comune se il tempo intercorso tra le modifiche era breve.
La release RHEL 6 fornisce le regole udev ufficialmente supportate per i dispositivi del Device Mapper in generale e LVM. Tabella A.1, «Regole udev per dispositivi Device-Mapper» riassume le suddette regole presenti in /lib/udev/rules.d.

Tabella A.1. Regole udev per dispositivi Device-Mapper

Nome file Descrizione
10-dm.rules
Contiene le regole del Device Mapper di base/generali e crea i link simbolici in /dev/mapper con un target /dev/dm-N dove N è /dev/dm-Nun numero assegnato dinamicamente ad un dispositivo dal kernel (/dev/dm-N è un nodo)
NOTA BENE: I nodi /dev/dm-N non devono mai essere usati negli script per accedere al dispositivo poichè il numero N è assegnato dinamicamente e modificato con la sequenza usata per attivare i dispositivi. Per questo motivo usare i nomi veri presenti nella directory /dev/mapper. Questo layout è usato per supportare i requisiti di udev su come creare i nodi/link simbolici.
11-dm-lvm.rules
Contiene le regole applicate ai dispositivi LVM e crea i link simbolici per i volumi logici del gruppo di volumi. I link simbolici vengono creati nella directory /dev/vgname con un target /dev/dm-N.
NOTA BENE: Per essere conformi con gli standard sui nomi delle regole future per i sistemi secondari del Device Mapper, le regole udev dovranno seguire il formato 11-dm-subsystem_name.rules. Qualsiasi utente libdevmapper che fornisce le regole udev dovrà seguire il suddetto standard.
13-dm-disk.rules Contiene le regole da applicare per tutti i dispositivi del Device Mapper in generale e crea i link simbolici nelle directory /dev/disk/by-id, /dev/disk/by-uuid e /dev/disk/by-uuid
95-dm-notify.rules Contiene le regole per la notifica dei processi in attesa che utilizzano libdevmapper (proprio come LVM e dmsetup). La notifica viene eseguita dopo aver applicato le precedenti regole in modo da assicurare il completamento di qualsiasi processazione da parte di udev. Il processo notificato verrà successivamente riattivato.
È possibile aggiungere regole aggiuntive sui permessi per mezzo del file 12-dm-permissions.rules. Questo file non è installato nella directory /lib/udev/rules ma nella directory /usr/share/doc/device-mapper-version. Il file 12-dm-permissions.rules è un modello il quale contiene suggerimenti su come impostare i permessi, in base ad alcune regole d'esempio; il file contiene gli esempi per alcune situazioni tipo. Sarà possibile modificare questo file e posizionarlo manualmente nella directory /etc/udev/rules.d dove potrà preservare le impostazioni.
Queste regole impostano tutte le variabili di base che possono essere usate da qualsiasi altra regola durante la processazione degli eventi.
Le seguenti variabili sono impostate all'interno di 10-dm.rules:
  • DM_NAME:Nome dispositivo del Device Mapper
  • DM_UUID: UUID del dispositivo del Device Mapper
  • DM_SUSPENDED: lo stato sospeso del dispositivo del Device Mapper
  • DM_UDEV_RULES_VSN: versione regole udev (principalmente per tutte le altre regole per controllare che le variabili precedentemente indicate siano state impostate direttamente da regole ufficiali del Device Mapper)
Le seguenti variabili sono impostate in 11-dm-lvm.rules:
  • DM_LV_NAME: nome volume logico
  • DM_VG_NAME: nome gruppo di volumi
  • DM_LV_LAYER: nome livello LVM
Tutte queste variabili possono essere usate nel file 12-dm-permissions.rules per definire un permesso di dispositivi Device Mapper specifici come documentato nel file 12-dm-permissions.rules.