2010-03-09 09:55:18 +0000 2010-03-09 09:55:18 +0000
31
31

Wie kann man ein inaktives RAID-Gerät wieder zum Laufen bringen?

Nach dem Booten geht mein RAID1-Gerät (/dev/md_d0 *) manchmal in einen komischen Zustand und ich kann es nicht mounten.

* Ursprünglich habe ich /dev/md0 erstellt, aber es hat sich irgendwie in /dev/md_d0 geändert.

# mount /opt
mount: wrong fs type, bad option, bad superblock on /dev/md_d0,
       missing codepage or helper program, or other error
       (could this be the IDE device where you in fact use
       ide-scsi so that sr0 or sda or so is needed?)
       In some cases useful info is found in syslog - try
       dmesg | tail or so

Das RAID-Gerät scheint irgendwie inaktiv zu sein:

# cat /proc/mdstat
Personalities : [linear] [multipath] [raid0] [raid1] [raid6] [raid5] 
                [raid4] [raid10] 
md_d0 : inactive sda4[0](S)
      241095104 blocks

# mdadm --detail /dev/md_d0
mdadm: md device /dev/md_d0 does not appear to be active.

Die Frage ist, wie man das Gerät wieder aktiv macht (mit mdmadm, nehme ich an)?

(Andere Male ist es nach dem Booten in Ordnung (aktiv), und ich kann es ohne Probleme manuell mounten. Aber es wird immer noch nicht automatisch gemountet, obwohl ich es in /etc/fstab habe:

/dev/md_d0 /opt ext4 defaults 0 0

Also eine Bonusfrage: Was muss ich tun, damit das RAID-Gerät beim Booten automatisch in /opt eingehängt wird? )

Dies ist eine Ubuntu 9.10 Workstation. Hintergrundinformationen zu meiner RAID-Einrichtung in dieser Frage .

Edit : Mein /etc/mdadm/mdadm.conf sieht so aus. Ich habe diese Datei nie angefasst, zumindest nicht von Hand.

# by default, scan all partitions (/proc/partitions) for MD superblocks.
# alternatively, specify devices to scan, using wildcards if desired.
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 <my mail address>

# definitions of existing MD arrays

# This file was auto-generated on Wed, 27 Jan 2010 17:14:36 +0200

In /proc/partitions ist der letzte Eintrag md_d0, zumindest jetzt, nach dem Neustart, wenn das Gerät zufällig wieder aktiv ist. (Ich bin nicht sicher, ob es dasselbe wäre, wenn es inaktiv ist.)

Lösung : wie Jimmy Hedman vorschlug , nahm ich die Ausgabe von mdadm --examine --scan:

ARRAY /dev/md0 level=raid1 num-devices=2 UUID=de8fbd92[...]

und fügte sie in /etc/mdadm/mdadm.conf ein, was das Hauptproblem behoben zu haben scheint. Nachdem ich /etc/fstab wieder in /dev/md0 geändert habe (statt /dev/md_d0), wird das RAID-Gerät auch automatisch gemountet!

Antworten (9)

25
25
25
2010-03-10 12:34:08 +0000

Für Ihre Bonusfrage:

mdadm --examine --scan >> /etc/mdadm/mdadm.conf
11
11
11
2011-08-01 02:41:23 +0000

Ich habe festgestellt, dass ich das Array manuell in /etc/mdadm/mdadm.conf hinzufügen muss, damit Linux es beim Neustart einbindet. Ansonsten erhalte ich genau das, was Sie hier haben - md_d1-Geräte, die inaktiv sind usw.

Die conf-Datei sollte wie unten aussehen - d.h. eine ARRAY-Zeile für jedes md-Gerät. In meinem Fall fehlten die neuen Arrays in dieser Datei, aber wenn Sie sie aufgelistet haben, ist das wahrscheinlich keine Lösung für Ihr Problem.

# definitions of existing MD arrays
ARRAY /dev/md0 level=raid5 num-devices=3 UUID=f10f5f96:106599e0:a2f56e56:f5d3ad6d
ARRAY /dev/md1 level=raid1 num-devices=2 UUID=aa591bbe:bbbec94d:a2f56e56:f5d3ad6d

Fügen Sie ein Array pro md-Gerät hinzu, und fügen Sie sie nach dem oben angegebenen Kommentar ein, oder wenn kein solcher Kommentar vorhanden ist, am Ende der Datei. Sie erhalten die UUIDs, indem Sie sudo mdadm -E --scan ausführen:

$ sudo mdadm -E --scan
ARRAY /dev/md0 level=raid5 num-devices=3 UUID=f10f5f96:106599e0:a2f56e56:f5d3ad6d
ARRAY /dev/md1 level=raid1 num-devices=2 UUID=aa591bbe:bbbec94d:a2f56e56:f5d3ad6d

Wie Sie sehen können, können Sie so ziemlich einfach die Ausgabe des Scan-Ergebnisses in die Datei kopieren.

Ich verwende Ubuntu Desktop 10.04 LTS, und soweit ich mich erinnere, unterscheidet sich dieses Verhalten von der Serverversion von Ubuntu, allerdings ist es schon so lange her, dass ich meine md-Geräte auf dem Server erstellt habe, dass ich vielleicht falsch liege. Es kann auch sein, dass ich einfach eine Option übersehen habe.

Wie auch immer, das Hinzufügen des Arrays in der conf-Datei scheint den Trick zu machen. Ich habe das obige Raid 1 und Raid 5 seit Jahren ohne Probleme laufen lassen.

7
7
7
2012-03-21 22:21:47 +0000

Warnung: Zuerst möchte ich sagen, dass mir das Folgende (aufgrund der Verwendung von “–force”) riskant erscheint, und wenn Sie unwiederbringliche Daten haben, würde ich empfehlen, Kopien der betroffenen Partitionen zu erstellen, bevor Sie etwas von dem Folgenden ausprobieren. Bei mir hat dies jedoch funktioniert.

Ich hatte das gleiche Problem, dass ein Array als inaktiv angezeigt wurde, und nichts, was ich tat, einschließlich “mdadm –examine –scan >/etc/mdadm.conf”, wie von anderen hier vorgeschlagen, half.

In meinem Fall, als er versuchte, das RAID-5-Array nach einem Laufwerkstausch zu starten, sagte er, dass es schmutzig sei (über dmesg):

md/raid:md2: not clean -- starting background reconstruction
md/raid:md2: device sda4 operational as raid disk 0
md/raid:md2: device sdd4 operational as raid disk 3
md/raid:md2: device sdc4 operational as raid disk 2
md/raid:md2: device sde4 operational as raid disk 4
md/raid:md2: allocated 5334kB
md/raid:md2: cannot start dirty degraded array.

, was dazu führte, dass es als inaktiv in /proc/mdstat angezeigt wurde:

md2 : inactive sda4[0] sdd4[3] sdc4[2] sde4[5]
      3888504544 blocks super 1.2

Ich stellte fest, dass alle Geräte die gleichen Ereignisse aufwiesen, außer dem Laufwerk, das ich ersetzt hatte (/dev/sdb4):

[root@nfs1 sr]# mdadm -E /dev/sd*4 | grep Event
mdadm: No md superblock detected on /dev/sdb4.
         Events : 8448
         Events : 8448
         Events : 8448
         Events : 8448

Die Array-Details zeigten jedoch, dass 4 von 5 Geräten verfügbar waren:

[root@nfs1 sr]# mdadm --detail /dev/md2
/dev/md2:
[...]
   Raid Devices : 5
  Total Devices : 4
[...]
 Active Devices : 4
Working Devices : 4
[...]
    Number Major Minor RaidDevice State
       0 8 4 0 inactive dirty /dev/sda4
       2 8 36 2 inactive dirty /dev/sdc4
       3 8 52 3 inactive dirty /dev/sdd4
       5 8 68 4 inactive dirty /dev/sde4

(Das obige ist aus dem Gedächtnis in der Spalte “Status”, ich kann es nicht in meinem Scroll-Back-Puffer finden).

Ich konnte das Problem lösen, indem ich das Array gestoppt und dann neu zusammengesetzt habe:

mdadm --stop /dev/md2
mdadm -A --force /dev/md2 /dev/sd[acde]4

Zu diesem Zeitpunkt war das Array in Betrieb, mit 4 der 5 Geräte, und ich konnte das Ersatzgerät hinzufügen, und es wird neu aufgebaut. Ich kann ohne Probleme auf das Dateisystem zugreifen.

5
5
5
2012-04-24 01:29:43 +0000

Ich hatte Probleme mit Ubuntu 10.04, wo ein Fehler in der FStab den Server am Booten hinderte.

Ich führte diesen Befehl wie in den obigen Lösungen erwähnt aus:

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

Damit werden die Ergebnisse von “mdadm –examine –scan” an “/etc/mdadm/mdadm.conf” angehängt

In meinem Fall war das:

ARRAY /dev/md/0 metadata=1.2 UUID=2660925e:6d2c43a7:4b95519e:b6d110e7 name=localhost:0

Das ist ein Fakeraid 0. Mein Befehl in /etc/fstab zum automatischen Mounten lautet:

/dev/md0 /home/shared/BigDrive ext3 defaults,nobootwait,nofail 0 0

Wichtig ist hier, dass Sie “nobootwait” und “nofail” haben. Nobootwait überspringt alle Systemmeldungen, die Sie am Booten hindern. In meinem Fall war dies auf einem entfernten Server, also war es essentiell.

Ich hoffe, dass dies einigen Leuten helfen wird.

2
2
2
2010-03-09 10:46:27 +0000

Sie können Ihr md-Gerät mit

mdadm -A /dev/md_d0

aktivieren. Ich vermute, dass irgendein Startskript zu früh startet, bevor eines der RAID-Mitglieder entdeckt wurde oder ein ähnliches Problem. Als schnelle und schmutzige Abhilfe sollten Sie in der Lage sein, diese Zeile in /etc/rc.local einzufügen :

mdadm -A /dev/md_d0 && mount /dev/md_d0

Bearbeiten : Offenbar enthält Ihre /etc/mdadm/mdadm.conf noch den alten Konfigurationsnamen. Bearbeiten Sie diese Datei und ersetzen Sie Vorkommen von md0 durch md_d0.

2
2
2
2011-08-15 01:56:27 +0000

Ich hatte ein ähnliches Problem… mein Server wollte md2 nicht mounten, nachdem ich die zugehörigen Gerätepartitionen erweitert hatte. Beim Lesen dieses Threads fand ich heraus, dass das md2-RAID-Gerät eine neue UUID hatte und der Rechner versuchte, die alte zu verwenden.

Wie vorgeschlagen… unter Verwendung der ‘md2’-Ausgabe von

mdadm --examine --scan

Ich bearbeitete /etc/mdadm/mdadm.conf und ersetzte die alte UUID-Zeile durch die Ausgabe des obigen Befehls und mein Problem war weg.

2
2
2
2010-03-10 13:14:14 +0000

md_d0 : inactive sda4[0](S) sieht für ein RAID1-Array falsch aus. Es scheint darauf hinzudeuten, dass das Array keine aktiven Geräte und ein Ersatzgerät hat (angezeigt durch das (S), Sie würden dort (F) für ein ausgefallenes Gerät sehen und nichts für ein OK/aktives Gerät) - für ein RAID1-Array, das nicht degradiert läuft, sollte es mindestens zwei OK/aktive Geräte geben (und für ein degradiertes Array mindestens ein OK/aktives Gerät) und Sie können ein RAID1-Array ohne nicht ausgefallene Nicht-Ersatzgeräte nicht aktivieren (da Ersatzgeräte keine Kopie der Daten enthalten, bis sie aktiv gemacht werden, wenn ein anderes Laufwerk ausfällt). Wenn ich die /proc/mdstat-Ausgabe richtig lese, können Sie das Array in seinem aktuellen Zustand nicht aktivieren.

Haben Sie physische Laufwerke in der Maschine, bei denen das Hochfahren fehlgeschlagen ist? Listet ls /dev/sd* alle Laufwerke und Partitionen auf, die Sie normalerweise auf dieser Maschine erwarten würden?

2
2
2
2012-11-26 21:43:18 +0000

Wenn Sie vorgeben, etwas mit /dev/md[012346789} zu tun, geht es zu /dev/md{126,127...}./dev/md0 wird weiterhin an /dev/md126 oder /dev/md127 gemountet, was Sie tun müssen:

umount /dev/md127oder umount /dev/md126.

Dies ist vorübergehend, damit Sie Befehle und einige Anwendungen ausführen können, ohne Ihr System anzuhalten.

2
2
2
2017-02-14 23:24:17 +0000

Ein einfacher Weg, das Array zum Laufen zu bringen, vorausgesetzt, es gibt kein Hardwareproblem und Sie haben genügend Laufwerke/Partitionen, um das Array zu starten, ist der folgende:

md20 : inactive sdf1[2](S)
      732442488 blocks super 1.2

 sudo mdadm --manage /dev/md20 --run

Es könnte sein, dass das Array aus irgendeinem Grund in Ordnung ist, aber irgendetwas hat verhindert, dass es startet oder aufgebaut wird. In meinem Fall lag das daran, dass mdadm nicht wusste, dass der ursprüngliche Array-Name md127 war und alle Laufwerke für dieses Array ausgesteckt waren. Beim erneuten Anschließen musste ich manuell zusammenbauen (wahrscheinlich ein Fehler, bei dem mdadm dachte, das Array sei bereits aktiv, weil der alte Array-Name offline war).