Zuallererst: für diejenigen, die immer noch an "RAID0 hat kein Hot Spare" glauben. Es könnte ein manuelles Ersatzteil haben, das von Menschen erstellt wurde, die RAID-Level und MDADM verstehen. mdadm ist Software-RAID, daher kann es viele interessante Dinge tun.
Dank an Zoredache für die Idee!
Also die Situation:
- Sie haben ein RAID0-Array mit zwei Festplatten
- Sie möchten eine davon ohne Ausfallzeiten des Arrays ersetzen
Wenn die Ausfallzeit akzeptabel ist, können Sie mit dd immer nur eine Blockkopie der Festplatte erstellen und das Array wieder zusammensetzen. MDADM ist in Ordnung.
Lösung: Verwenden Sie RAID4 als Zwischenlösung
RAID0 -> RAID4 -> RAID0
Wenn Sie sich also nicht an RAID4 erinnern, ist es einfach. Es hat einen Paritätsblock, ist aber im Gegensatz zu RAID5 nicht über das Array verteilt, sondern befindet sich auf EINER Festplatte. Das ist der Punkt, das ist wichtig und das ist der Grund, warum RAID5 nicht funktioniert.
Was Sie benötigen: zwei weitere Festplatten derselben Größe wie die Festplatte, die Sie ersetzen möchten.
Umgebung:
- Ubuntu 14.04 Thrusty Thar
- mdadm - v3.2.5 - 18. Mai 2012
- / dev / sdb - beginne damit, wird es ersetzen
- / dev / sdc - fang damit an
- / dev / sdd - wird vorübergehend verwendet
- / dev / sde - wird anstelle von sdb verwendet
Der ultimative RAID0 Hot-Spare-MDADM-Leitfaden;)
sudo mdadm -C /dev/md0 -l 0 -n 2 /dev/sd[bc]
md0 : active raid0 sdc[1] sdb[0]
2096128 blocks super 1.2 512k chunks
Wir haben ein raid0-Array erstellt, es sieht süß aus.
sudo md5sum /dev/md0
b422ba644a3c83cdf28adfa94cb658f3 /dev/md0
Dies ist unser Kontrollpunkt - wenn sich auch nur ein Bit im Ergebnis unterscheidet /dev/md0
- sind wir gescheitert.
sudo mdadm /dev/md0 --grow --level=4
md0 : active raid4 sdc[1] sdb[0]
2096128 blocks super 1.2 level 4, 512k chunk, algorithm 5 [3/2] [UU_]
Deshalb haben wir unser Array auf RAID4 erweitert. Wir haben die Paritätsdiskette noch nicht hinzugefügt, also machen wir es. Das Wachstum erfolgt sofort - es gibt nichts zu berechnen oder neu zu berechnen.
sudo mdadm /dev/md0 -a /dev/sdd
md0 : active raid4 sdd[3] sdc[1] sdb[0]
2096128 blocks super 1.2 level 4, 512k chunk, algorithm 5 [3/2] [UU_]
[===>.................] recovery = 19.7% (207784/1048064) finish=0.2min speed=51946K/sec
Wir haben sdd
als Paritätsdiskette hinzugefügt . Dies ist wichtig zu beachten - die Reihenfolge der Festplatten in der ersten Reihe ist nicht mit dem Bild in der zweiten Reihe synchronisiert! [UU_]
sdd
wird zuerst angezeigt, aber tatsächlich ist es das letzte und enthält nicht die Daten, sondern die Parität.
sudo mdadm /dev/md0 -f /dev/sdb
md0 : active raid4 sdd[3] sdc[1] sdb[0](F)
2096128 blocks super 1.2 level 4, 512k chunk, algorithm 5 [3/2] [_UU]
Wir haben unsere Festplatten-SDB fehlerhaft gemacht, um sie in den nächsten Schritten zu entfernen.
sudo mdadm --detail /dev/md0
State : clean, degraded
Number Major Minor RaidDevice State
0 0 0 0 removed
1 8 32 1 active sync /dev/sdc
3 8 48 2 active sync /dev/sdd
0 8 16 - faulty spare /dev/sdb
Details zeigen uns das Entfernen der ersten Festplatte und hier können wir die wahre Reihenfolge der Festplatten im Array sehen. Es ist wichtig, die Festplatte mit Parität zu verfolgen. Wir sollten sie nicht im Array belassen, wenn wir zu RAID0 zurückkehren.
sudo mdadm /dev/md0 -r /dev/sdb
md0 : active raid4 sdd[3] sdc[1]
2096128 blocks super 1.2 level 4, 512k chunk, algorithm 5 [3/2] [_UU]
sdb
ist komplett entfernt, könnte weggenommen werden.
sudo mdadm /dev/md0 -a /dev/sde
md0 : active raid4 sde[4] sdd[3] sdc[1]
2096128 blocks super 1.2 level 4, 512k chunk, algorithm 5 [3/2] [_UU]
[==>..................] recovery = 14.8% (156648/1048064) finish=0.2min speed=52216K/sec
Wir haben den Ersatz für unsere SDB-Festplatte hinzugefügt. Und los geht's: Jetzt werden die Daten von sdb mit Parität wiederhergestellt. Sweeeeet.
md0 : active raid4 sde[4] sdd[3] sdc[1]
2096128 blocks super 1.2 level 4, 512k chunk, algorithm 5 [3/3] [UUU]
Getan. Im Moment sind wir völlig sicher - alle Daten von sdb werden wiederhergestellt, und jetzt müssen wir sdd entfernen (denken Sie daran, es hält Parität).
sudo mdadm /dev/md0 -f /dev/sdd
md0 : active raid4 sde[4] sdd[3](F) sdc[1]
2096128 blocks super 1.2 level 4, 512k chunk, algorithm 5 [3/2] [UU_]
Sdd fehlerhaft gemacht.
sudo mdadm /dev/md0 -r /dev/sdd
md0 : active raid4 sde[4] sdc[1]
2096128 blocks super 1.2 level 4, 512k chunk, algorithm 5 [3/2] [UU_]
Sdd wurde aus unserem Array entfernt. Wir sind bereit, wieder RAID0 zu werden.
sudo mdadm /dev/md0 --grow --level=0 --backup-file=backup
md0 : active raid4 sde[4] sdc[1]
2096128 blocks super 1.2 level 4, 512k chunk, algorithm 5 [3/2] [UU_]
[=>...................] reshape = 7.0% (73728/1048064) finish=1.5min speed=10532K/sec
Aaaaaaund Knall!
md0 : active raid0 sde[4] sdc[1]
2096128 blocks super 1.2 512k chunks
Getan. Schauen wir uns die md5-Prüfsumme an.
sudo md5sum /dev/md0
b422ba644a3c83cdf28adfa94cb658f3 /dev/md0
Noch Fragen? RAID0 könnte also einen Ersatz haben. Es heißt "Benutzer";)