mdadm - Usuń dysk z RAID0

11

Chciałbym wiedzieć, że mdadm umożliwia wykonanie następujących czynności:

  1. Zaczynam od konfiguracji RAID0 na 2 dyskach: sdai sdb.
  2. Chciałbym dodać jeszcze jeden dysk do macierzy sdci przenieść sdbdo niego wszystkie dane .
  3. Disconnect sdb.

W tej chwili widzę tylko jedną opcję - zatrzymuję tablicę, kopiuję sdbdo za sdcpomocą dddowolnego innego narzędzia do kopiowania bloków i ponownie uruchamiam tablicę.

Czy coś mi umknęło? Czy można to zrobić za pomocą mdadm?

maniaque
źródło
Możesz zrobić SDD do tymczasowego lustra, a następnie zsynchronizować SDC z nim w tle - to zmniejszyło potrzebny przestój, chociaż nie zrobiłem tego jako początkujący na twoim miejscu.
peterh - Przywróć Monikę
Na pewno nie jestem początkującym :) Czy możesz mi powiedzieć coś więcej o tymczasowym lustrze? Czy to funkcja mdadm?
maniaque
Nie, jest to prosta funkcja rajdowa. Pomyślałem o tymczasowej tablicy raid1, która mogłaby uzyskać miejsce sdb w twojej tablicy raid1. Podczas synchronizowania sdb z sdc możesz również użyć go jako części tablicy raid0.
peterh - Przywróć Monikę
Więc rozumiem cię, prawda? 1. Zatrzymaj tablicę. 2. Utwórz jeszcze jedną macierz RAID1 za pomocą sbd i sdc. 3. I jak mogę zapytać mdadm, żeby uruchomić RAID0 z md1 zamiast sdb?
maniaque
Nie badałem zbyt wiele, ale z pewnością wydaje się, że powinieneś być w stanie wyrosnąć z RAID0 -> RAID5. Następnie zmniejsz się z powrotem do RAID0.
Zoredache,

Odpowiedzi:

17

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 sddjako 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”;)

maniaque
źródło
1

O ile wiem, po skonfigurowaniu RAID0 nie można zmienić jednego z dysków. Możesz wykonać kopię zapasową, przełączyć dyski i przywrócić kopię zapasową. Chciałbym tylko RAID5 te 3 dyski, które masz. W ten sposób w przyszłości możesz upuścić dysk i nadal go odbudowywać.

joeg1ff
źródło
Cóż, wiem, jak zrobić to, o czym mówię z RAID5 - mogę dodać nowy dysk do macierzy (jako zapasowy), a następnie oznaczyć dysk, który chcę wyprowadzić jako wadliwy i usunąć go z macierzy, a następnie wyczyścić superblok. Ale jestem zainteresowany tą samą operacją z RAID0 :)
maniaque
@maniaque To się nazywa RAID 0, ponieważ zero to ile macie RAID. Absolutnie nic ważnego nie powinno być nigdy przypisywane do RAID 0.
Michael Hampton
@MichaelHampton Myślę, że masz na myśli redundancję nie RAID, ale twoje stwierdzenie jest w 100% poprawne.
joeg1ff,
@MichaelHampton Proszę zobaczyć moją odpowiedź poniżej :)
maniaque
0

RAID 0 nie zapewnia redundancji.

Dlatego nie obsługuje wymiany dysku twardego.

użytkownik2743554
źródło
1
Proszę spojrzeć poniżej. Nie ma nic niemożliwego, jeśli rozumiesz poziomy RAID;)
maniaque