GNU/Linux >> Linux Esercitazione >  >> Cent OS

Come utilizzare mdadm per creare un mirror software su dispositivi multipath

Il problema

Lo strumento mdadm è stato utilizzato per creare un mirror RAID software utilizzando due dispositivi device-mapper-multipath:

# /sbin/mdadm /dev/md0 --create --verbose --level=1 --raid-devices=2 /dev/mapper/ocrp1 /dev/mapper/ocrmirrorp1

La configurazione è stata quindi confermata:

# /sbin/mdadm --detail /dev/md0
...
  Number   Major   Minor   RaidDevice State
    0     253        2        0      active sync   /dev/dm-2
    1     253        3        1      active sync   /dev/dm-3

Poiché vengono mostrati gli effettivi nomi dei dispositivi multipath (/dev/dm-N), vengono verificate anche le mappature dei nomi più descrittivi (/dev/mapped/ocrp1):

# /bin/ls -l /dev/mpath/
lrwxrwxrwx 1 root root 7 Apr 23 11:15 ocrp1 -> ../dm-2
lrwxrwxrwx 1 root root 7 Apr 23 11:15 ocrmirrorp1 -> ../dm-3
# /bin/ls -l /dev/mapper/
brw-rw---- 1 root disk 253,   2 Apr 23 11:15 ocrp1
brw-rw---- 1 root disk 253,   3 Apr 23 11:15 ocrmirrorp1

Poiché questi nomi convenienti vengono mappati sugli stessi dispositivi multipath, l'impostazione si è dimostrata corretta. Dopo un riavvio, mdadm mostra quanto segue:

# /sbin/mdadm --detail /dev/md0
...
Number   Major   Minor   RaidDevice State
  0       8       97        0      active sync   /dev/sdg1
  1       8      113        1      active sync   /dev/sdh1

Il RAID è attivo ma non utilizza i dispositivi multipath come previsto.

La soluzione

Questo è in realtà un problema di tempismo. Durante l'avvio del sistema, /etc/rcN.d gli script stanno avviando mdadm prima che i dispositivi multipath siano stati rilevati e pronti. Questa è essenzialmente una condizione di competizione perché un numero maggiore di dispositivi multipath impiega più tempo per essere riconosciuto e mdadm potrebbe essere eseguito prima che l'elaborazione multipath sia completata.

La soluzione consiste nell'aggiungere i necessari gestori e dispositivi del file system in /initrd file in modo che questi siano disponibili per il kernel al momento dell'avvio. Ciò consentirà al kernel di iniziare a elaborare i dispositivi multipath prima.

Nota :Il file /vmlinuz del kernel Linux è costruito con il supporto solo per alcuni dispositivi fondamentali. I gestori di file system e i driver di dispositivo comuni vengono compilati separatamente e inseriti nel file /initrd (ramdisk iniziale). Il bootloader GRUB o LILO deve prima mettere in memoria il contenuto del file /initrd e poi caricare il kernel. Il kernel utilizza quindi il ramdisk iniziale per ottenere i driver di dispositivo necessari per accedere al file system di root. Quindi il kernel passa all'utilizzo del filesystem root effettivo e libera la memoria utilizzata dall'immagine di memoria /initrd.

Questo approccio intelligente consente a un'immagine del kernel di essere fornita con un set di driver di dispositivo su misura per ciascun sistema, senza sprecare memoria di sistema per contenere il codice del driver del dispositivo e del gestore del file system che non viene mai utilizzato.

Per creare un file /initrd personalizzato che includa il supporto multipath, usa la tecnica seguente:

1. Crea un nuovo file initrd che includa il driver multipath, device-mapper-multipath e HBA:

# /sbin/mkinitrd -v /root/initrd-mp.img 2.6.18-prep --with=multipath --with=dm-multipath --with=lpfc --omit-raid-modules

Per fare lo stesso su CentOS/RHEL 6 e 7, dai un'occhiata al post qui sotto.

Come ricostruire "initramfs" con Multipath in CentOS/RHEL 6 e 7

2. Verifica il file /etc/mdadm.conf è configurato per il dispositivo RAID:

# /bin/cat /etc/mdadm.conf
DEVICE /dev/mapper/*
ARRAY /dev/md0 uuid=ccfe8a98:ea584ff2:2fad9d51:305ea2da
devices=/dev/mapper/ocrp1,/dev/mapper/ocrmirrorp1 level=raid1

3. Copia la nuova immagine ramdisk nella posizione di avvio prevista dal bootloader:

# /bin/cp /root/initrd-mp.img /boot/

4. Aggiungi una nuova voce al file di configurazione del bootloader /boot/grub/grub.conf per utilizzare la nuova immagine ramdisk:

title MDADM-MP
root (hd0,0)
kernel /vmlinuz-2.6.18-8.el5 ro root=/dev/VolGroup00/LogVol00 rhgb quiet
initrd /initrd-mp.img
Nota :Modificare la stanza GRUB di esempio come appropriato. La versione del tuo kernel e il dispositivo root saranno sicuramente diversi da questo esempio.

Quando si utilizza CentOS/RHEL 7 e grub2, vedere il post di seguito per i passaggi esatti.

CentOS / RHEL 7:come modificare gli argomenti di GRUB2 con grubby

5. Riavvia il sistema e seleziona la voce MDADM-MP dal menu di GRUB.

Suggerimento :Se ancora non vedi i dispositivi multipath in uso, dovrai aggiungere uno script di avvio per eseguire mdadm come ultimo passaggio di avvio. Un modo per farlo è aggiungere il comando necessario a /etc/rc.local se non vuoi scrivere uno script di servizio /etc/init.d/ completo.


Cent OS
  1. Come creare uno scambio in Linux

  2. Come creare un file di scambio in Linux

  3. Come utilizzare auditd per monitorare l'eliminazione di un file in Linux

  4. Come creare partizioni e file system su dispositivi DM-Multipath

  5. Come configurare il gruppo di volumi Lvm esistente per utilizzare DM-Multipath

Come usare il comando TOP

Come creare un file del sito web

Come creare un file Tar gz

Come usare gzip in Linux?

Come creare un filesystem XFS

Come usare Fantastico de Luxe