Ich hatte erstellt zwei 2TB HDD Partitionen ( /dev/sdb1
und /dev/sdc1
in einem) RAID 1 - Array namens /dev/md0
mit mdadm
auf Ubuntu 12.04 LTS Precise Pangolin.
Der Befehl, der sudo mdadm --detail /dev/md0
verwendet wird, um beide Laufwerke als aktive Synchronisierung anzuzeigen .
Zum Testen habe ich /dev/sdb1
dann einen Fehler gemacht, ihn entfernt und mit dem Befehl erneut hinzugefügtsudo mdadm /dev/md0 --add /dev/sdb1
watch cat /proc/mdstat
zeigte einen Fortschrittsbalken für die Wiederherstellung des Arrays, aber ich würde nicht stundenlang damit verbringen, es zu sehen, also nahm ich an, dass die Software wusste, was es tat.
Nachdem der Fortschrittsbalken nicht mehr cat /proc/mdstat
angezeigt wurde , wird Folgendes angezeigt:
md0 : active raid1 sdb1[2](S) sdc1[1]
1953511288 blocks super 1.2 [2/1] [U_]
Und sudo mdadm --detail /dev/md0
zeigt:
/dev/md0:
Version : 1.2
Creation Time : Sun May 27 11:26:05 2012
Raid Level : raid1
Array Size : 1953511288 (1863.01 GiB 2000.40 GB)
Used Dev Size : 1953511288 (1863.01 GiB 2000.40 GB)
Raid Devices : 2
Total Devices : 2
Persistence : Superblock is persistent
Update Time : Mon May 28 11:16:49 2012
State : clean, degraded
Active Devices : 1
Working Devices : 2
Failed Devices : 0
Spare Devices : 1
Name : Deltique:0 (local to host Deltique)
UUID : 49733c26:dd5f67b5:13741fb7:c568bd04
Events : 32365
Number Major Minor RaidDevice State
1 8 33 0 active sync /dev/sdc1
1 0 0 1 removed
2 8 17 - spare /dev/sdb1
Mir wurde mitgeteilt, dass mdadm entfernte Laufwerke automatisch durch Ersatzlaufwerke ersetzt, aber /dev/sdb1
nicht in die erwartete Position RaidDevice verschoben wird 1
.
UPDATE (30. Mai 2012): Ein badblocks
zerstörerischer Lese- / Schreibtest des gesamten /dev/sdb
Systems ergab erwartungsgemäß keine Fehler. Beide Festplatten sind neu.
Seit der letzten Bearbeitung habe ich das Array mit folgendem Befehl zusammengestellt:
sudo mdadm --assemble --force --no-degraded /dev/md0 /dev/sdb1 /dev/sdc1
Die Ausgabe war:
mdadm: /dev/md0 has been started with 1 drive (out of 2) and 1 rebuilding.
Der Wiederaufbau sieht so aus, als würde er normal ablaufen:
md0 : active raid1 sdc1[1] sdb1[2]
1953511288 blocks super 1.2 [2/1] [U_]
[>....................] recovery = 0.6% (13261504/1953511288) finish=2299.7min speed=14060K/sec
unused devices: <none>
Ich warte jetzt auf diesen Umbau, aber ich erwarte /dev/sdb1
, ein Ersatzteil zu werden, genau wie die fünf oder sechs Male, die ich zuvor versucht habe, umzubauen.
UPDATE (31. Mai 2012): Ja, es ist immer noch eine Reserve. Pfui!
UPDATE (1. Juni 2012): Ich versuche Adrian Kellys vorgeschlagenen Befehl:
sudo mdadm --assemble --update=resync /dev/md0 /dev/sdb1 /dev/sdc1
Warten auf den Wiederaufbau jetzt ...
UPDATE (02. Juni 2012): Nein, noch ein ...
UPDATE (4. Juni 2012): PB hat ein Problem angesprochen, das ich übersehen habe: Möglicherweise /dev/sdc1
sind E / A-Fehler aufgetreten . Ich hatte mich nicht darum gekümmert, es zu überprüfen, /dev/sdc1
weil es anscheinend einwandfrei funktionierte und brandneu war, aber E / A-Fehler gegen Ende des Laufwerks sind eine vernünftige Möglichkeit.
Ich habe diese Festplatten zum Verkauf gekauft, daher ist es nicht verwunderlich, dass eine davon bereits ausfällt. Außerdem unterstützt keiner von ihnen SMART . Kein Wunder, dass sie so günstig sind ...
Hier ist die Datenwiederherstellungsprozedur, die ich gerade erfunden habe und die ich befolge:
sudo mdadm /dev/md0 --fail /dev/sdb1
damit ich raus kann/dev/sdb1
.sudo mdadm /dev/md0 --remove /dev/sdb1
/dev/sdb1
aus dem Array entfernen ./dev/sdc1
ist montiert bei/media/DtkBk
- Format
/dev/sdb1
als ext4. - Mount
/dev/sdb1
to/media/DtkBkTemp
. cd /media
in diesem Bereich zu arbeiten.sudo chown deltik DtkBkTemp
um mir (Benutzernamendeltik
) Rechte für die Partition zu geben.- Kopieren Sie alle Dateien und Verzeichnisse:
sudo rsync -avzHXShP DtkBk/* DtkBkTemp
UPDATE (06. Juni 2012): Ich habe einen badblocks
destruktiven Schreibmodus-Test durchgeführt /dev/sdc
, bei dem folgende Schritte ausgeführt wurden:
sudo umount /media/DtkBk
Abreißen des Arrays zu ermöglichen.sudo mdadm --stop /dev/md0
um das Array zu stoppen.sudo badblocks -w -p 1 /dev/sdc -s -v
Um die verdächtige Festplatte zu löschen und dabei nach E / A-Fehlern zu suchen. Wenn es E / A-Fehler gibt, ist das kein gutes Zeichen. Hoffentlich kann ich eine Rückerstattung bekommen ...
Ich habe jetzt bestätigt, dass es auf beiden Festplatten keine Ein- / Ausgabeprobleme gibt .
Nach all diesen Untersuchungen sind meine beiden ursprünglichen Fragen noch offen.
Meine Fragen sind:
- Warum wird das Ersatzlaufwerk nicht aktiv synchronisiert?
- Wie kann ich das Ersatzlaufwerk aktivieren?
/dev/sdc1
zu diesem Zeitpunkt, weil/dev/sdc1
sie gelesen wurden/dev/sdb1
geschrieben wurde, und fehlerhafte Sektoren in/dev/sdb1
wurden beim Schreiben transparent neu zugeordnet.watch -n 60 cat /proc/mdstat
an,60
wie viele Sekunden zwischen den Aktualisierungen liegen sollen .Ich hatte genau das gleiche Problem und in meinem Fall habe ich festgestellt, dass die aktive RAID-Festplatte während der Synchronisierung Lesefehler hatte. Daher wurde der neue Datenträger erfolgreich synchronisiert und als Ersatzlaufwerk markiert.
Möglicherweise möchten Sie Ihre / var / log / Nachrichten und andere Systemprotokolle auf Fehler überprüfen. Darüber hinaus ist es möglicherweise auch eine gute Idee, den SMART-Status Ihrer Festplatte zu überprüfen:
1) Führen Sie den Kurztest durch:
2) Zeigen Sie die Testergebnisse an:
In meinem Fall ergab dies ungefähr Folgendes:
Ich musste eine Live-Distribution booten und die Daten manuell von der defekten Festplatte auf die neue (derzeit "Ersatz-") kopieren.
quelle
Ich hatte genau das gleiche Problem und dachte immer, dass meine zweite Festplatte, die ich erneut zum Array hinzufügen wollte, Fehler hatte. Aber es war meine ursprüngliche Festplatte hatte Lesefehler.
Sie können dies mit überprüfen
smartctl -t short /dev/sdX
und die Ergebnisse einige Minuten später mit anzeigensmartctl -l selftest /dev/sdX
. Für mich sah es so aus:Ich habe versucht, sie mit diesem Handbuch zu beheben . Das hat Spaß gemacht :-). Ich weiß, dass Sie beide Datenträger auf Fehler überprüft haben, aber ich denke, Ihr Problem ist, dass der Datenträger, der sich noch im MD-Array befindet, Lesefehler aufweist, sodass das Hinzufügen eines zweiten Datenträgers fehlschlägt.
Aktualisieren
Sie sollten zusätzlich ein
smartctl -a /dev/sdX
Wenn Sie Current_Pending_Sector> 0 sehen, ist etwas falsch197 Current_Pending_Sector 0x0012 098 098 000 Old_age Always - 69
Für mich war es definitiv das Problem, dass ich eine Festplatte aus dem RAID entfernt habe, nur um sie zu testen und erneut zu synchronisieren. Die Synchronisierung wurde zur Hälfte abgebrochen. Als ich meine Festplatte überprüfte, die sich noch im RAID-Array befand, meldete smartctl Probleme.
Ich konnte sie mit dem obigen Handbuch beheben und die Anzahl der ausstehenden Sektoren reduzieren. Aber es gab zu viele und es ist eine lange und langweilige Prozedur, also habe ich mein Backup verwendet und die Daten auf einem anderen Server wiederhergestellt.
Da Sie nicht die Möglichkeit hatten, SMART zu verwenden, hat Ihr Selbsttest diese defekten Sektoren vermutlich nicht angezeigt.
Für mich ist es eine Lektion gelernt: Überprüfen Sie Ihre Festplatten, bevor Sie eine aus Ihrem Array entfernen.
quelle
Ich hatte ein ähnliches Problem und habe es behoben, indem ich die Anzahl der RAID-Arrays von 1 auf 2 erhöht habe.
quelle
UPDATE (24. Mai 2015): Nach drei Jahren untersuchte ich die wahre Ursache für die Beeinträchtigung des RAID 1-Arrays.
tl; dr: Eine der Festplatten war defekt, und ich habe das nicht bemerkt, weil ich nur einen vollständigen Oberflächentest mit der guten Festplatte durchgeführt habe.
Vor drei Jahren habe ich nicht daran gedacht, Protokolle zu E / A-Problemen zu überprüfen. Wenn ich nachgesehen hätte
/var/log/syslog
, hätte ich so etwas gesehen, als ich aufgehört hättemdadm
, das Array neu aufzubauen:Um diese Ausgabe in das Protokoll aufzunehmen, suchte ich mit dem folgenden Befehl nach dem ersten problematischen LBA (in meinem Fall 14381058):
Kein Wunder,
md
gab auf! Ein Array kann nicht von einem fehlerhaften Laufwerk wiederhergestellt werden.Dank der neuen Technologie (bessere
smartmontools
Hardwarekompatibilität?) Konnte ich SMART- Informationen aus dem Laufwerk herausholen, einschließlich der letzten fünf Fehler (von bisher 1393 Fehlern):Ahh ... das würde es tun.
Jetzt habe ich diese Frage in drei einfachen Schritten gelöst:
UPDATE (19. Juli 2015): Für alle, die neugierig sind, sind endlich keine Sektoren mehr verfügbar:
quelle
In meinem Fall war es auch eine fehlerhafte Quelldiskette. Obwohl es zu der Zeit so aussah, als ob es nicht so wäre (das / proc / mdstat stieg normalerweise über 99,9% - aber es schlug tatsächlich bei 99,97% fehl, was damit einherging, wann die reguläre Synchronisierung beendet werden würde). Sie müssen also die
dmesg(1)
Ausgabe überprüfen - es wird Ihnen mitgeteilt, ob Lesefehler vorliegen.Details zu meinem Fall können Sie dem Debian-Fehler # 767243 entnehmen . Ich habe es endlich geschafft, die Synchronisierung zu beenden, indem ich ein paar fehlerhafte Sektoren auf der Quellfestplatte erzwungen habe (die in meinem Fall zum Glück nicht verwendet wurden, da es sonst zu Datenverlusten gekommen wäre).
quelle
Du könntest es versuchen
um die Laufwerke zu aktualisieren und neu zu synchronisieren.
quelle
/dev/sdb1
wird immer noch nicht "aktiv", nachdem es als Ersatz wiederhergestellt wurde.Ich bin mir nicht sicher, ob es funktionieren wird, da Sie
--add
die Festplatte bereits bearbeitet haben--re-add
, es jedoch die Option zu sein scheint, die Sie benötigen.Oder brauchst du vielleicht auf
--grow
dem Gerät 2 aktive Festplattenmdadm --grow -n 2
? Nicht getestet, also sei vorsichtig.quelle
sudo mdadm --grow -n 2
war eines der ersten Dinge, die ich gemacht habe, dahersudo mdadm --detail /dev/md0
zeigt das zwei Slots. Entschuldigung, es funktioniert nicht.Ich würde empfehlen, sdc1 zu entfernen, den Superblock auf sdc1 auf Null zu setzen und ihn dann erneut hinzuzufügen.
quelle