Przede wszystkim: dla tych, którzy nadal wierzą w „RAID0 nie ma gorących zapasów”. Może mieć ręczną część zapasową, wykonaną przez człowieka, który rozumie poziomy RAID i mdadm. mdadm to programowa macierz RAID, więc może robić wiele interesujących rzeczy.
Podziękowania dla Zoredache za pomysł!
Tak więc sytuacja:
- masz macierz RAID0 dwóch dysków
- chcesz wymienić jeden z nich bez przestoju tablicy
Jeśli przestój jest akceptowalny, zawsze możesz po prostu wykonać blokową kopię dysku za pomocą dd i ponownie złożyć tablicę, mdadm zrobi OK.
Rozwiązanie: użyj RAID4 jako rozwiązania pośredniego
RAID0 -> RAID4 -> RAID0
Jeśli więc nie pamiętasz RAID4, jest to proste. Ma blok parzystości, ale w przeciwieństwie do RAID5, nie jest dystrybuowany w tablicy, ale znajduje się na JEDNYM dysku. O to chodzi, jest to ważne i dlatego RAID5 nie będzie działać.
Co będzie potrzebne: dwa kolejne dyski tego samego rozmiaru, co dysk, który chcesz wymienić.
Środowisko:
- Ubuntu 14.04 Thrusty Thar
- mdadm - v3.2.5 - 18 maja 2012 r
- / dev / sdb - zacznij od niego, zastąpi go
- / dev / sdc - zacznij od tego
- / dev / sdd - będzie używany tymczasowo
- / dev / sde - będzie używany zamiast sdb
Najlepszy przewodnik RAID0 hot-spare mdadm;)
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
Stworzyliśmy tablicę raid0, wygląda słodko.
sudo md5sum /dev/md0
b422ba644a3c83cdf28adfa94cb658f3 /dev/md0
To jest nasz punkt kontrolny - jeśli choćby jeden bit będzie się różnił w wyniku /dev/md0
- ponieśliśmy porażkę.
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_]
Tak więc rozwinęliśmy naszą macierz do RAID4. Nie dodaliśmy jeszcze dysku parzystości, więc zróbmy to. Rozrost będzie natychmiastowy - nie ma nic do ponownego obliczenia ani ponownego obliczenia.
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
Dodaliśmy sdd
jako dysk parzystości. Należy o tym pamiętać - kolejność dysków w pierwszym rzędzie nie jest zsynchronizowana z obrazem w drugim rzędzie! [UU_]
sdd
jest wyświetlany jako pierwszy, ale w rzeczywistości jest ostatni i zawiera nie dane, ale parzystość.
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]
Uszkodziliśmy nasz dysk sdb, aby go usunąć w następnych krokach.
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
Szczegóły pokazują nam usunięcie pierwszego dysku i tutaj możemy zobaczyć prawdziwą kolejność dysków w tablicy. Ważne jest, aby śledzić dysk z parzystością, nie powinniśmy pozostawiać go w macierzy podczas powrotu do RAID0.
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
jest całkowicie usunięty, można go zabrać.
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
Dodaliśmy zamiennik dla naszego dysku sdb. I zaczynamy: teraz dane sdb są odzyskiwane przy użyciu parzystości. Sweeeeet.
md0 : active raid4 sde[4] sdd[3] sdc[1]
2096128 blocks super 1.2 level 4, 512k chunk, algorithm 5 [3/3] [UUU]
Gotowy. W tej chwili jesteśmy całkowicie bezpieczni - wszystkie dane z sdb są odzyskiwane, a teraz musimy usunąć sdd (pamiętaj, że ma parzystość).
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_]
Uszkodzony SDD.
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_]
Usunięto sdd z naszej tablicy. Jesteśmy gotowi ponownie stać się RAID0.
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
Aaaaaaand bang!
md0 : active raid0 sde[4] sdc[1]
2096128 blocks super 1.2 512k chunks
Gotowy. Spójrzmy na sumę kontrolną md5.
sudo md5sum /dev/md0
b422ba644a3c83cdf28adfa94cb658f3 /dev/md0
Jakieś pytania? Więc RAID0 może mieć gorący zapas. To się nazywa „użytkownik”;)