Raid1 z aktywną i zapasową partycją

8

Mam następujący problem z partycją RAID1 z oprogramowaniem RAID1 w moim systemie Ubuntu (10.04 LTS, 2.6.32-24-serwer, jeśli ma to znaczenie).

Jeden z moich dysków (sdb5) zgłosił błędy we / wy i dlatego został oznaczony jako uszkodzony w tablicy. Tablica została następnie zdegradowana za pomocą jednego aktywnego urządzenia. Dlatego wymieniłem twardy dysk, sklonowałem tabelę partycji i dodałem wszystkie nowe partycje do moich tablic rajdowych. Po zsynchronizowaniu wszystkie partycje skończyły się dobrze, mając 2 aktywne urządzenia - z wyjątkiem jednego z nich. Partycja, która wcześniej zgłosiła wadliwy dysk, nie zawierała jednak nowej partycji jako aktywnego urządzenia, ale jako dysk zapasowy:

md3 : active raid1 sdb5[2] sda5[1]
  4881344 blocks [2/1] [_U]

Szczegółowy wygląd ujawnia:

root@server:~# mdadm --detail /dev/md3
[...]
Number   Major   Minor   RaidDevice State
   2       8       21        0      spare rebuilding   /dev/sdb5
   1       8        5        1      active sync   /dev/sda5

Oto pytanie: jak powiedzieć mojemu nalotowi, aby zmienił zapasowy dysk w aktywny? I dlaczego został dodany jako urządzenie zapasowe? Odtworzenie lub ponowne złożenie tablicy nie jest opcją, ponieważ jest to moja partycja root. I nie mogę znaleźć żadnych wskazówek na ten temat w Software Raid HOWTO.

Każda pomoc będzie mile widziana.

Aktualne rozwiązanie

Znalazłem rozwiązanie mojego problemu, ale nie jestem pewien, czy tak właśnie jest. Po bliższym przyjrzeniu się mojemu nalotowi odkryłem, że sdb5 zawsze był wymieniony jako urządzenie zapasowe:

mdadm --examine /dev/sdb5
[...]
Number   Major   Minor   RaidDevice State
this     2       8       21        2      spare   /dev/sdb5

   0     0       0        0        0      removed
   1     1       8        5        1      active sync   /dev/sda5
   2     2       8       21        2      spare   /dev/sdb5

więc odczytywanie urządzenia sdb5 do tablicy md3 zawsze kończyło się dodaniem urządzenia jako zapasowego.

W końcu właśnie odtworzyłem tablicę

mdadm --create /dev/md3 --level=1 -n2 -x0 /dev/sda5 /dev/sdb5

który zadziałał.

Pytanie pozostaje jednak otwarte: czy istnieje lepszy sposób na manipulowanie podsumowaniami w superbloku i nakazanie tablicy zamiany sdb5 z dysku zapasowego na dysk aktywny? Nadal jestem ciekawa odpowiedzi.

Daniel Baron
źródło
Co pokazuje „cat / proc / mdstat”? Czy to nie tylko odbudowa, a „zapasowy” zniknie po zakończeniu odbudowy? Co pokazuje „mdadm --version”? Wystąpił stary błąd ... patrz mail-archive.com/[email protected]/msg09818.html .
rem
Nie, to jest problem. Pierwszy fragment w pytaniu pokazuje dane wyjściowe / proc / mdstat dla tablicy. Urządzenie zostało już zsynchronizowane, ale jak widać po udanym procesie synchronizacji, urządzenie pozostaje zapasowe i nie jest przekształcane w aktywne.
Daniel Baron
mdadm - v2.6.7.1
Daniel Baron

Odpowiedzi:

1

Daniel: Na początku dwukrotnie sprawdź, czy część zapasowa jest zintegrowana z tablicą, wykonując:

cat / proc / mdstat

który powinien zgłosić, czy trwa proces kompilacji i jak długo oczekiwać.

Jeśli nie ma budynku, spróbuj wykonać następujące czynności

mdadm / dev / md3 --remove / dev / sdb5

mdadm / dev / md3 --add / dev / sdb5

I zgłoś, jak to działa dla Ciebie. Więcej informacji można znaleźć na stronie http://linux.die.net/man/8/mdadm .

Rolnik
źródło
Dziękuję za pomoc, Rolnik. Jak widać z mojego pierwszego fragmentu / proc / mdstat pokazuje oba urządzenia w tablicy. Urządzenie zostało już wcześniej zsynchronizowane (nie pokazano tutaj) bez problemów. Ale po zakończeniu procesu resynchronizacji urządzenia nie stały się urządzeniem aktywnym. Ponowne usunięcie i dodanie nie zmieniło tego zachowania.
Daniel Baron
1

Całkiem późno, ale zrobienie tego po prostu uruchomiłoby zapasowy dysk:

mdadm --grow /dev/md3 -n 2

Jak mówi strona podręcznika:

Do tworzenia, budowania lub rozwijania: -n, --raid-devices = Podaj liczbę aktywnych urządzeń w tablicy. To plus liczba urządzeń zapasowych (patrz poniżej) musi być równa liczbie urządzeń składowych (w tym urządzeń „brakujących”), które są wymienione w wierszu poleceń dla --create. Ustawienie wartości 1 jest prawdopodobnie błędem i dlatego wymaga, aby najpierw określić --force. Wartość 1 będzie wówczas dozwolona dla liniowej, wielościeżkowej, RAID0 i RAID1. Nigdy nie jest dozwolone w przypadku RAID4, RAID5 lub RAID6. Liczbę tę można zmienić tylko przy użyciu --grow dla macierzy RAID1, RAID4, RAID5 i RAID6 i tylko w jądrach zapewniających niezbędne wsparcie.

Pablo Montepagano
źródło
0

Z tego, co pamiętam, kiedy miałem ten problem (z innego powodu) musiałem użyć opcji --grow, aby ponownie dodać dysk zapasowy „poprawnie” (również usuwając błąd).

Coś takiego (sprawdź w dokumentacji!):

mdadm --grow --level = wadliwy --layout = flush / dev / sdb5

Następnie możesz dodać urządzenie i powinno zostać rozpoznane.

Problem polega na tym, że sterownik md zapisuje status każdej partycji w danych rozruchowych dysków. Więc nawet po ponownym uruchomieniu zna status i unika partycji oznaczonych jako wadliwe.

Alexis Wilke
źródło