CentOS 6: gestione delle periferiche removibili mediante UDEV

Scenario Macchina CentOS 6 dotata di 2 dischi rigidi, ovvero: 1) /dev/sda dove è presente la partizione di boot (sda1) e quella di root (sda2); 2) /dev/sdb che consta di un'unica partizione dedicata al salvataggio di dati.
Problema Collegando una memoria flash di tipo USB (che funge da dongle per un applicativo in esecuzione sul server) essa viene inizialmente mappata come /dev/sdc.
Dopo un riavvio della macchina, però, il kernel name assegnato alla stessa diventa /dev/sda e di conseguenza i 2 dischi rigidi vengono mappati come /dev/sdb e /dev/sdc.
Ciò, fortunatamente, non va ad inficiare il funzionamento del server, in quanto il file /etc/fstab contiene gli UUID (univoci e soprattutto statici) assegnati a ciascuna partizione (anzichè il kernel name che, come abbiamo visto, può variare).
Nel mio caso, però, esiste un problema: poichè utilizzo uno specifico tool per monitorare lo stato delle partizioni, le quali vengono interrogate mediante il loro kernel name, dovrei modificare tale parametro di volta in volta, distinguendo il caso in cui i dischi rigidi vengono mappati in modo "standard", ovvero come /dev/sda e /dev/sdb, dal caso in cui vengono riconosciuti come /dev/sdb e /dev/sdc (con la memoria flash che fa le veci di /dev/sda).
Ergo, devo fare in modo che la memoria flash venga mappata sempre e comunque come /dev/sdd.
Soluzione Quanto sopra può essere realizzato configurando opportunamente udev.
Tale applicativo si basa su alcuni file di configurazione, dislocati su 2 directory differenti, ovvero: 1) /lib/udev/rules.d/ che contiene i file di configurazione di default (non vanno editati); 2) /etc/udev/rules.d che contiene i file di configurazione "customizzabili" dall'utente (il cui contenuto ha una maggiore priorità rispetto a quello dei file di default, "scavalcandoli" all'occorrenza).
Tutti i suddetti file vengono dati in pasto ad udev seguendo un ordine crescente dettato esclusivamente dal loro filename.
Da ciò si capisce come mai il contenuto tipico della directory /etc/udev/rules.d è simile al seguente: # ls /etc/udev/rules.d/ 60-pcmcia.rules  70-persistent-cd.rules    90-hal.rules 60-fprint-autosuspend.rules  60-raw.rules     70-persistent-net.rules  90-alsa.rules                98-kexec.rules dove le direttive presenti nel file 60-pcmcia.rules vengono lette (ed eseguite) prima di quelle relative a 70-persistent-cd.rules.
Poichè vogliamo che il file contenente le nostre direttive custom venga valutato per primo, dobbiamo nominarlo come 10-local.rules.
Creiamolo quindi [...]

Leggi tutto l'articolo