Ich habe meine / boot-Partition in einem RAID 1-Array mit mdadm. Dieses Array hat sich in der Vergangenheit einige Male verschlechtert. Jedes Mal, wenn ich das physische Laufwerk entferne, ein neues hinzufüge und das Array auf den Normalzustand zurücksetze, wird ein neuer Laufwerksbuchstabe verwendet. Lassen Sie den alten noch im Array und ist fehlgeschlagen. Ich kann nicht alle Komponenten entfernen, die nicht mehr existieren.
[root@xxx ~]# cat /proc/mdstat
Personalities : [raid1]
md0 : active raid1 sdg1[10] sde1[8](F) sdb1[7](F) sdd1[6](F) sda1[4] sdc1[5]
358336 blocks super 1.0 [4/3] [UUU_]
Hier ist, was ich versucht habe, um die nicht vorhandenen Laufwerke und Partitionen zu entfernen. Zum Beispiel /dev/sdb1
.
[root@xxx ~]# mdadm /dev/md0 -r /dev/sdb1
mdadm: Cannot find /dev/sdb1: No such file or directory
[root@xxx ~]# mdadm /dev/md0 -r faulty
mdadm: Cannot find 8:49: No such file or directory
[root@xxx ~]# mdadm /dev/md0 -r detached
mdadm: Cannot find 8:49: No such file or directory
Das 8:49
bezieht sich meiner Meinung nach auf die Haupt- und Nebenzahl --detail
, aber ich bin mir nicht ganz sicher, wohin ich von hier aus gehen soll. Ich versuche einen Neustart zu vermeiden oder mdadm neu zu starten.
[root@xxx ~]# mdadm --detail /dev/md0
/dev/md0:
Version : 1.0
Creation Time : Thu Aug 8 18:07:35 2013
Raid Level : raid1
Array Size : 358336 (350.00 MiB 366.94 MB)
Used Dev Size : 358336 (350.00 MiB 366.94 MB)
Raid Devices : 4
Total Devices : 6
Persistence : Superblock is persistent
Update Time : Sat Apr 18 16:44:20 2015
State : clean, degraded
Active Devices : 3
Working Devices : 3
Failed Devices : 3
Spare Devices : 0
Name : xxx.xxxxx.xxx:0 (local to host xxx.xxxxx.xxx)
UUID : 991eecd2:5662b800:34ba96a4:2039d40a
Events : 694
Number Major Minor RaidDevice State
4 8 1 0 active sync /dev/sda1
10 8 97 1 active sync /dev/sdg1
5 8 33 2 active sync /dev/sdc1
6 0 0 6 removed
6 8 49 - faulty
7 8 17 - faulty
8 8 65 - faulty
Hinweis: Das Array ist momentan zu Recht beschädigt, und ich stelle ein neues Laufwerk ein, während wir sprechen. Wie Sie oben sehen können, sollte dies jedoch keine Rolle spielen. Ich sollte immer noch in der Lage sein, /dev/sdb1
aus diesem Array zu entfernen .
Antworten:
Dies liegt daran, dass die Geräteknoten auf Ihrem System nicht mehr vorhanden sind (wahrscheinlich hat udev sie entfernt, als das Laufwerk starb). Sie sollten in der Lage sein, sie mithilfe des Schlüsselworts
failed
oderdetached
stattdessen zu entfernen :Wenn Ihre Version von mdadm zu alt ist, um dies zu tun, können Sie es möglicherweise zum Laufen bringen, indem
mknod
Sie das Gerät so einrichten, dass es wieder vorhanden ist. Oder, ehrlich gesagt, ignorieren Sie es einfach - es ist kein wirkliches Problem und sollte beim nächsten Neustart verschwinden.quelle
mknod
. Ja, es ist wahrscheinlich kein Problem, aber ich bin OCD, lol.mknod
Am Ende habe ich @derobert verwendet, um die gesuchten Geräte zu erstellenmdadm
. Ich habe versucht, die Major / Minor-Nummern zu finden, die mdadm mir mitteilte, und zwar mit den verschiedenen Laufwerksbuchstaben, die ich entfernen wollte, bis sie funktionierten.Dann musste ich die
--force
Option nutzen, um die Komponente entfernen zu lassen.Dann entfernte ich das erstellte Blockgerät.
quelle
mdadm
sagte weiter: "Gerät oder Ressource belegt", aber das brachte mich dazu, ihn nicht mit einem gefälschten Blockgerät zu versorgen, sondern mit einem "echten" Blockgerät wie einem Loopback-Image. Zu diesem Zeitpunkt stellte ich fest, dass ich einen veralteten Datenträger hatte/dev/loop
, der noch eine Datei auf dem beeinträchtigten Array verwendete. Ich löste es undmdadm
ließ mich endlich das Array stoppen. Horay! Für jeden, der dies liest, gibt es immer eine logische Erklärungmdadm
, warum er so ein Idiot ist. Suchen Sie nach einem veralteten Prozess / file / mountpoint / nfs-Handler / open bash / loopback device / etc. immer noch mit dem degradierten Array. :)Sie können das Problem auch einfach beheben, indem Sie die Anzahl der Festplatten im Array verringern:
In meinem Fall habe ich RAID-1-Array
/dev/md0
mit/dev/sda1
und "entfernt". Ich habe es einfach so verkleinert, dass nur ein Laufwerk verwendet wird:Danach wurde wirklich entfernt (keine entfernten Zeilen mehr in
mdadm --detail
)quelle