GNU/Linux >> LINUX-Kenntnisse >  >> Cent OS

So verwenden Sie mdadm, um einen Software-Spiegel auf Multipath-Geräten zu erstellen

Das Problem

Das Tool mdadm wurde verwendet, um einen Software-RAID-Spiegel mit zwei Device-Mapper-Multipath-Geräten zu erstellen:

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

Anschließend wurde die Einrichtung bestätigt:

# /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

Da die tatsächlichen Multipath-Gerätenamen (/dev/dm-N) angezeigt werden, werden auch die Zuordnungen der freundlicheren Namen (/dev/mapped/ocrp1) überprüft:

# /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

Da diese praktischen Namen denselben Multipath-Geräten zugeordnet sind, hat sich die Einrichtung als richtig erwiesen. Nach einem Neustart zeigt mdadm Folgendes:

# /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

Das RAID ist aktiv, verwendet die Multipath-Geräte jedoch nicht wie erwartet.

Die Lösung

Das ist eigentlich ein Timing-Problem. Während des Systemstarts wird die /etc/rcN.d Skripte starten mdadm, bevor die Multipath-Geräte erkannt und bereit sind. Dies ist im Wesentlichen eine Wettlaufbedingung, da eine größere Anzahl von Multipath-Geräten länger braucht, um erkannt zu werden, und mdadm ausgeführt werden kann, bevor die Multipath-Verarbeitung abgeschlossen ist.

Die Lösung besteht darin, die erforderlichen Dateisystem-Handler und Geräte in /initrd hinzuzufügen Datei, damit diese dem Kernel beim Booten zur Verfügung stehen. Dadurch kann der Kernel früher mit der Verarbeitung der Multipath-Geräte beginnen.

Hinweis :Die /vmlinuz-Datei des Linux-Kernels wurde mit Unterstützung nur für einige sehr grundlegende Geräte erstellt. Dateisystem-Handler und allgemeine Gerätetreiber werden separat kompiliert und in die /initrd-Datei (anfängliche Ramdisk) gepackt. Der GRUB- oder LILO-Bootloader muss zuerst den Inhalt der /initrd-Datei in den Speicher stellen und dann den Kernel laden. Der Kernel verwendet dann die anfängliche Ramdisk, um die erforderlichen Gerätetreiber für den Zugriff auf das Root-Dateisystem zu erhalten. Dann wechselt der Kernel zur Verwendung des eigentlichen Root-Dateisystems und gibt den Speicher frei, der vom /initrd-Speicherabbild verwendet wird.

Dieser clevere Ansatz ermöglicht es, ein Kernel-Image mit einem auf jedes System zugeschnittenen Gerätetreibersatz bereitzustellen, ohne Systemspeicher zu verschwenden, um Gerätetreiber- und Dateisystem-Handler-Code zu speichern, der nie verwendet wird.

Verwenden Sie die folgende Technik, um eine benutzerdefinierte /initrd-Datei mit Multipath-Unterstützung zu erstellen:

1. Erstellen Sie eine neue initrd-Datei einschließlich Multipath, Device-Mapper-Multipath und HBA-Treiber:

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

Um dasselbe unter CentOS/RHEL 6 und 7 zu tun, werfen Sie bitte einen Blick auf den folgenden Beitrag.

So erstellen Sie das „initramfs“ mit Multipath in CentOS/RHEL 6 und 7 neu

2. Überprüfen Sie die Datei /etc/mdadm.conf ist für das RAID-Gerät konfiguriert:

# /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. Kopieren Sie das neue Ramdisk-Image in den vom Bootloader erwarteten Boot-Speicherort:

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

4. Fügen Sie der Bootloader-Konfigurationsdatei /boot/grub/grub.conf einen neuen Eintrag hinzu, um das neue Ramdisk-Image zu verwenden:

title MDADM-MP
root (hd0,0)
kernel /vmlinuz-2.6.18-8.el5 ro root=/dev/VolGroup00/LogVol00 rhgb quiet
initrd /initrd-mp.img
Hinweis :Ändern Sie die Beispiel-GRUB-Stanza entsprechend. Ihre Kernel-Version und Ihr Root-Gerät werden sich sicherlich von diesem Beispiel unterscheiden.

Wenn Sie CentOS/RHEL 7 und grub2 verwenden, finden Sie die genauen Schritte im folgenden Beitrag.

CentOS / RHEL 7:So ändern Sie GRUB2-Argumente mit grubby

5. Starten Sie Ihr System neu und wählen Sie im GRUB-Menü den Eintrag MDADM-MP.

Hinweis :Wenn Sie die verwendeten Multipath-Geräte immer noch nicht sehen, müssen Sie ein Startskript hinzufügen, um mdadm als letzten Boot-Schritt auszuführen. Eine Möglichkeit besteht darin, den erforderlichen Befehl zu /etc/rc.local hinzuzufügen, wenn Sie kein vollständiges /etc/init.d/-Dienstskript schreiben möchten.


Cent OS
  1. So erstellen Sie einen Swap unter Linux

  2. So erstellen Sie eine Auslagerungsdatei unter Linux

  3. So verwenden Sie auditd, um eine Dateilöschung in Linux zu überwachen

  4. So erstellen Sie Partitionen und Dateisysteme auf DM-Multipath-Geräten

  5. So erstellen Sie eine benutzerdefinierte Protokolldateirotation von logrotate in Linux

So verwenden Sie den TOP-Befehl

So erstellen Sie eine Website-Datei

So erstellen Sie eine Tar gz-Datei

Wie verwende ich gzip unter Linux?

So erstellen Sie ein XFS-Dateisystem

So verwenden Sie Fantastico de Luxe