Il problema
Messaggi come i seguenti vengono riportati durante l'esecuzione di comandi come partprobe su un sistema CentOS/RHEL utilizzando LVM (Logical Volume Manager) e multipathing, ad es. device-mapper-multipath o EMC PowerPath, ecc.:
Error: Error informing the kernel about modifications to partition /dev/sda1 -- Device or resource busy. This means Linux won't know about any changes you made to /dev/sda1 until you reboot -- so you shouldn't mount it or use it in any way before rebooting. ...
Messaggi come i seguenti vengono segnalati durante l'esecuzione del comando pvs per ottenere informazioni relative al volume fisico (PV):
Found duplicate PV G9tZklKg1nrXN7wGADvwHQOQtgd4w58M: using /dev/sdb1 not /dev/sda1 Found duplicate PV G9tZklKg1nrXN7wGADvwHQOQtgd4w58M: using /dev/sda1 not /dev/emcpowera1 ...
La causa principale
Il messaggio "Trovato PV duplicato" si verifica quando LVM non è configurato per filtrare i dispositivi singlepath sottostanti, ad es. /dev/sd*. Il software multipath, ad esempio device-mapper-multipath, EMC PowerPath, ecc. crea uno pseudo dispositivo multipath per ogni dispositivo gestito. Se i dispositivi a percorso singolo sottostanti non vengono filtrati, LVM rileva, quindi segnala i percorsi dei dispositivi duplicati che fanno tutti riferimento allo stesso dispositivo LVM.
Esempio di mappatura dei dispositivi per la configurazione a due percorsi device-mapper-multipath:
/dev/sda, /dev/sdb --> /dev/dm-0 --> /dev/mapper/mpath1
Esempio di mappatura del dispositivo per la configurazione EMC PowerPath a due percorsi:
/dev/sda, /dev/sdb --> /dev/emcpowera
La soluzione
Per una nuova configurazione di LVM su EMC PowerPath, fare riferimento a "Configurazione del supporto LVM2" nella documentazione di EMC PowerPath, che dovrebbe contenere i dettagli sulla modifica del file "/etc/lvm/lvm.conf" per filtrare i percorsi sottostanti
Per una nuova configurazione LVM su device-mapper-multipath:
– Disattiva la scansione LVM sui dispositivi SCSI sottostanti. Può essere fatto modificando il parametro del filtro in “/etc/lvm/lvm.conf”.
filter = [ "a/dev/mapper/.*/", "r/dev/sd.*/" ]Nota :questa impostazione accetta tutti i dispositivi /dev/mapper/* e rifiuta tutti i dispositivi /dev/sd* durante la scansione dei dischi LVM. Fare riferimento alla guida dell'utente LVM2 per ulteriori dettagli. Se il dispositivo root è anche un dispositivo LVM con percorsi multipli, apportare le modifiche a /etc/lvm/lvm.conf prima di creare una nuova immagine initrd. Laddove è richiesto "multipath on root", è necessario lvm.conf nell'immagine initrd, che richiede che initrd venga rifatto.
Per una configurazione LVM esistente su dischi EMC PowerPath o dm-multipath, assicurati l'integrità dei dati sui volumi LVM:
1. Modificare "/etc/lvm/lvm.conf" come descritto sopra
2. In generale si dovrebbe configurare LVM per filtrare tutti i dispositivi sd* e vedere solo i dispositivi /dev/emcpower* o /dev/mapper/*. Se sono presenti altri volumi LVM di dispositivi SCSI non mutipati, ad esempio:/dev/cciss/*, impostare il filtro di conseguenza, ad esempio:
filter = [ "r/sd.*/" "a/dev/cciss/*/" "a/dev/emcpower.*/" "a/dev/mapper/*/" ]
Con questa impostazione, i comandi "lvmdiskscan" e "pvscan" dovrebbero trovare solo i dispositivi /dev/ccisss/*, /dev/emcpower* e /dev/mapper/*.
3. Arrestare tutte le applicazioni/servizi che accedono a dispositivi/filesystem gestiti da LVM.
4. Smonta tutti i filesystem basati su LVM.
5. Disattiva tutti i gruppi di volumi.
# vgchange -an
6. Nuova scansione dei gruppi di volumi.
# vgscan
7. Riattiva i gruppi di volumi.
# vgchange -ay
8. Monta qualsiasi filesystem basato su LVM.
9. Avvia qualsiasi applicazione/servizio che richieda l'accesso a dispositivi/filesystem gestiti da LVM.
Nota :Se è necessario fare riferimento ai dischi LVM durante l'avvio, ad esempio:durante la fase di avvio del kernel di kdump capture o quando è configurato come multipath-on-root, l'immagine initrd dovrà essere ricostruita.