Wie kann ich mdadm dazu bringen, RAID nach jedem Start automatisch zusammenzustellen?


43

Ich habe mithilfe von erfolgreich ein RAID (Spiegelung) erstellt mdadm. Ich muss jedoch nach jedem Start die folgenden Befehle ausführen:

mdadm --stop --scan // to stop /dev/md127 - I don't know where the number 127 even comes from
mdadm --assemble --scan // to start /dev/md0

Was mache ich falsch / warum muss ich diese Befehle beim Booten ausführen? Was ist der richtige Weg, um RAID bei jedem (Neustart) automatisch zu starten?

Antworten:


36

NB: Sie müssen entweder als root angemeldet sein oder sudo verwenden , um all dies zu tun ...

  • Verwenden Sie Ihren bevorzugten Editor, um die Datei /etc/mdadm/mdadm.conf wie folgt zu erstellen oder zu bearbeiten :

Wenn die Datei noch nicht vorhanden ist, fügen Sie Folgendes in die neue, leere Datei ein:

# mdadm.conf
#
# Please refer to mdadm.conf(5) for information about this file.
#

DEVICE partitions

# auto-create devices with Debian standard permissions
CREATE owner=root group=disk mode=0660 auto=yes

# automatically tag new arrays as belonging to the local system
HOMEHOST <system>

# instruct the monitoring daemon where to send mail alerts
MAILADDR root

# definitions of existing MD arrays
  • Speicher die Datei

  • Führen Sie den folgenden Befehl aus, um am Ende der Datei einen Verweis auf Ihre Array-Konfiguration hinzuzufügen:

    mdadm --detail --scan >> /etc/mdadm/mdadm.conf

Dies sollte eine Zeile wie die folgende am Ende von mdadm.conf hinzufügen:

ARRAY / dev / md0 level = raid5 num-devices = 3 Metadaten = 00.90 UUID = a44a52e4: 0211e47f: f15bce44: 817d167c

Wenn der Befehl mdadm über der Zeile ARRAY weitere Elemente hinzugefügt hat, entfernen Sie diese. Auf einem meiner Computer gibt der Befehl beispielsweise "mdadm: Metadatenformat 00.90 unbekannt, ignoriert" zurück. vor der ARRAY-Linie.

Ihr Array sollte jetzt beim Booten automatisch erstellt werden und Sie können daher einen Eintrag zu / etc / fstab hinzufügen, um es zu mounten (falls es noch nicht vorhanden ist).


6
Ich würde vielleicht hinzufügen: Sie sollten auch Ihre initramfs mitupdate-initramfs -u
Pablo Montepagano

1
mdadm --detail --scan druckt nichts auf meinem System, obwohl ich sicher bin, dass ich zwei Partitionen habe, die Teil eines raid0 (mirror) sind. Generelle Hinweise hierzu sind willkommen.
Lennart Rolland

1
@LennartRolland - versuchen Sie es mdadm -Esstattdessen.
Slm

das hat bei mir nicht grub-install /dev/sda
geklappt

Alternativ können Sie auch einfach die Kernel-Option verwenden: md.auto=1... Ich habe dies nicht gründlich getestet, aber angeblich werden sie erkannt und zusammengesetzt (oder zumindest versucht). Aber dann ist kernel.org/doc/html/v4.15/admin-guide/md.html etwas mehrdeutig: Wenn md in den Kernel kompiliert wird (nicht als Modul), werden Partitionen vom Typ 0xfd gescannt und automatisch zusammengesetzt in RAID-Arrays. [...] Ab Kernel 2.6.9 können nur Laufwerke mit einem Superblock vom Typ 0 automatisch erkannt und beim Booten ausgeführt werden. Und es bezieht sich nicht auf md.auto (oder was auch immer es war), also bin ich mir jetzt nicht sicher.
Pryftan

7

Mir ist klar, dass dies eine ältere Frage ist, aber ich hatte eine frustrierende Zeit damit auf der 32-Bit-Version von Ubuntu Server 12.04.

Running hat mdadm --detail --scan >> /etc/mdadm/mdadm.confdie Zeile angehängt

ARRAY / dev / md0 Metadaten = 1.2 Name = Ubuntu: 0 UUID = a8a570c6: 96f61865: 05abe131: 5c2e2f7e

Nach einem Neustart konnte ich / dev / md0 nie sehen. Das mdadm --detail --scannochmal ausführen (ohne das Ergebnis in einer Datei abzulegen) würde ich sehen

ARRAY / dev / md / ubuntu: 0 Metadaten = 1.2 Name = ubuntu: 0 UUID = a8a570c6: 96f61865: 05abe131: 5c2e2f7e

und manuell montieren /dev/md/ubuntu:0würde funktionieren. Letztendlich habe ich das auch in die fstab-Datei geschrieben.

Ich bin nicht sicher, was ich falsch gemacht habe, ob dies in Ubuntu 12.04 funktioniert oder ob dies eine schlechte Praxis ist. Ich wollte nur mitteilen, was für mich funktioniert hat.


Selbes Problem hier. Ich bin mir nicht sicher, ob es ein Problem ist.
Christophe De Troyer

3

Bei Debian Wheezy ist ein weiterer Schritt erforderlich: In /etc/default/mdadmSet Autostart von false auf true

#AUTO-START:
# sollte mdadm die in /etc/mdadm/mdadm.conf aufgelisteten Arrays automatisch starten
# beim Booten?
AUTOSTART = wahr

Auch musste ich mdadm -Es >>/etc/mdadm/mdadm.confstattdessen die --scanOption nutzen, da das bei mir nicht funktionierte.


3
sudo mdadm -Es >> /etc/mdadm/mdadm.conf

Bearbeiten Sie nun die zu /etc/mdadm/mdadm.conf hinzugefügten Zeilen wie folgt. Löschen Sie alles, außer den grundlegenden Teilen. Es sollte so aussehen

ARRAY /dev/md5 UUID=031cea92:50a7a28c:6b077fe7:8817092a
ARRAY /dev/md6 UUID=53454954:4044eb66:9169d1ed:40905643

Hinweis: Sie können X in mdX nach Belieben auswählen.

Jetzt neu starten

sudo update-initramfs -u
sudo reboot

EDIT: Befehl korrigiert.


Ich habe das geschrieben, weil die Antwort von Linker3000 bei mir nicht funktioniert hat.
Morgen,

3

Ich hatte dieses Problem auf meinem Raspberry Pi 2 mit Raspbian GNU / Linux 8 (Jessie). Ich hatte einen RAID - Array auf /dev/sda1und /dev/sdb1die gescheiterten beim Booten montieren. Ich hatte /etc/mdadm/mdadm.confden Eintrag in meiner Akte

ARRAY /dev/md/0  metadata=1.2 UUID=53454954:4044eb66:9169d1ed:40905643 name=raspberrypi:0 

(Ihre Zahlen werden unterschiedlich sein; sehen Sie sich andere Antworten an, wie Sie dies erreichen können.)

Ich hatte /etc/fstabden Eintrag in meiner Akte

/dev/md0        /data           ext4    defaults          0       0

(und gab es natürlich /dataauch)

Wie das OP konnte ich das RAID-Array nach dem Start von Hand zusammenbauen und einbinden, aber es konnte nicht automatisch während des Startvorgangs ausgeführt werden, obwohl es anscheinend richtig eingerichtet war.

Ich konnte das Problem wie folgt lösen. Ich habe das Skript unter untersucht /etc/init.d/mdadm-raidund eine Zeile Debug-Code eingefügt

ls /dev > /home/pi/devices.txt

Neustart und Überprüfung dieser Datei Ich habe erfahren, dass Geräte /dev/sdaund /dev/sdbzum Zeitpunkt der mdadm-raidInitialisierung existierten, aber die Partitionen /dev/sda1und /dev/sdb1fehlten. Ich habe die /etc/init.d/mdadm-raidDatei bearbeitet und die Zeile eingefügt

partprobe

Nach dem Header (dh nach dem, ### END INIT INFOaber bevor das Skript beginnt). Dadurch wurden die Partitionen erkannt, und das mdadm-raidSkript konnte das RAID-Array zusammenstellen, wodurch das Problem behoben wurde. Hoffe das hilft jemandem!


0

Ich habe damit auf Raspbian mit ein paar externen USB-Festplatten auf einem Raspberry Pi gekämpft. Ich musste mit der Startreihenfolge der Dienste herumspielen, um sicherzustellen, dass mdadm-raid gestartet wurde, nachdem die USB-Laufwerke von udev erkannt wurden, jedoch vor checkfs.sh (das die Dateisysteme beim Booten überprüft). Wenn mdadm-raid zu früh gestartet wurde, waren die Laufwerke nicht verfügbar und daher wurde das Array nicht zusammengestellt. Dies bedeutete, dass fsck anschließend fehlschlug und der Startvorgang zu einer Wartungsaufforderung führte (da das RAID-Array für andere Dienste erforderlich ist).

Das Ändern der Boot-Abhängigkeiten zum Starten von mdadm-raid nach checkroot.sh, aber vor checkfs.sh und dem Ausführen update-rc.d mdadm-raid defaults, gefolgt von update-initramfs -uv -k `uname -r`(Backticks beachten uname), wurde (endlich) behoben. Für mich jedenfalls YMMV.


Beachten Sie, dass uname -r in den obigen Abschnitten in Back-Ticks stehen soll, aber ich kann nicht herausfinden, wie ich ihnen entkommen kann, damit sie hier gedruckt werden ...
Rodney

Welche Version von Raspbian war das? Ich hatte es gut auf Wheezy, aber Jessie hat das Assemble beim Booten gebrochen.
Nwaltham

0

Ich habe es mit versucht

mdadm --create /dev/md/abcdef ...

Ich sehe, dass der Softlink /dev/md/abcdefnach einem Neustart bestehen bleibt und wenn nötig über einen Softlink auf das Gerät zugegriffen werden muss.

Ist es eine akzeptable Lösung?


0

Mit dem Raspberry Pi 3, der rootdelay=5das /boot/cmdline.txtProblem für mich gelöst hat.

Der Kredit geht hier .

Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.