Uruchom system Linux z zdegradowanej macierzy RAID1 z zainstalowanym / boot zainstalowanym na md0

0

Przede wszystkim chciałbym powiedzieć, że jestem nowy w zarządzaniu macierzami RAID w Linuksie, więc moje pytania są prawdopodobnie bardzo proste, ale nie mogę znaleźć mojego dokładnego scenariusza w Internecie.

Mam system RAID1 z 2 dyskami twardymi i wszystkie partycje są instalowane na macierzy RAID, w tym na partycji / boot. Dzisiaj mdadm ostrzegł mnie, że tablica została zdegradowana (prawdopodobnie jeden z dysków twardych się nie powiódł), a tablica została automatycznie przekształcona w stan awaryjny, gdy sprawdziłem, co następuje:

# cat /proc/mdstat
Personalities : [raid1]
md0 : active raid1 sdb1[0]
      204736 blocks super 1.0 [2/1] [U_]

md2 : active raid1 sdb2[0]
      151858048 blocks super 1.1 [2/1] [U_]
      bitmap: 2/2 pages [8KB], 65536KB chunk

md1 : active raid1 sdb3[0]
      4092864 blocks super 1.1 [2/1] [U_]

Następnie przystąpiłem do wyłączenia serwera, wymiany uszkodzonego napędu i próby uruchomienia z pozostałego dysku, ale teraz witam następujący komunikat po tym, jak GRUB próbuje uruchomić jądro:

Error 17: Cannot mount selected partition.

Czy ktoś wie, dokąd się udam, aby uruchomić system z dysku roboczego? Zasadniczo nie mam wiedzy o GRUB-u i kilka razy próbowałem czytać dokumentację, ale jest to dla mnie zbyt skomplikowane i bardzo się spieszę, ponieważ mam w rękach wyłączony serwer. Każda pomoc będzie doceniona.

Railander
źródło

Odpowiedzi:

0

Jeśli dobrze rozumiem, twój pierwszy dysk ( /dev/sda ) to ten, który zastąpiłeś. Możliwe też, że podczas instalowania GRUBa nie zainstalowałeś go na obu dyskach, tak jak jest to potrzebne w konfiguracji RAID1.

Problem polega na tym, że GRUB szuka pierwszego dysku twardego, który nie ma zainstalowanego Gruba. Szybkie wyszukiwanie w Internecie problemu powoduje: https://www.novell.com/support/kb/doc.php?id=7010670 . Zobacz kroki tam i na pokrewnych stronach i napraw go w razie potrzeby. Dla /dev/sdb będziesz musiał użyć hd1 w żarcie.

SACHIN GARG
źródło
Przepraszam za spóźniony komentarz. Przeczytałem go wtedy, ale tak naprawdę nie pomogło mi to. Wydaje się odnosić do dziedzictwa GRUB. Przeczytaj moją odpowiedź powyżej, opisującą sposób jej rozwiązania.
Railander
0

Odpowiedzi na moje własne pytanie dwa lata później ...

Skończyło się na tym, że wyeksportowałem wszystko z tego serwera i sformatowałem, ale ostatnio znowu stanąłem przed problemem i postanowiłem zająć się tym problemem.

Wszystko, co tu wymieniam, jest zrobione z:

  • CentOS 7 z ml jądro z ELRepo.
  • Oba urządzenia zostały dodane do raid1 podczas instalacji systemu operacyjnego ( tak jak ) i wszystko partycje zostały zamontowane na szczycie nalotu1 ( /boot, / i swap ). LVM lub nie wydaje się mieć wpływ na ten temat.
  • Podobnie jak w przypadku domyślnych instalacji CentOS 7, jest wyposażony w GRUB2 zamiast dziedzictwa GRUB, duże rozróżnienie, ponieważ większość dokumentacji online znajduje się w wersji 1.
  • Moja konfiguracja NIE zawierają EFI przegroda. Z tego, co odkryłem, EFI nie działa na macie RAID, tak duża uwaga tutaj, ponieważ poniższa procedura nie zadziała poprawnie, jeśli masz EFI.

Stało się dla mnie jasne, że problem polegał na tym, że CentOS instalował tylko bootloader (GRUB2) w pierwszym fizycznym urządzeniu. Podobno używa malutkiego MSDOS partycja (czy partycja to poprawna terminologia? Może "flaga"?), która nie może działać na macie RAID. Z tego powodu nawet po prostu wymiana dysków powoduje, że system nie może się uruchomić, mimo że dysk dodatkowy ma pełną kopię systemu, nie ma on bootloadera.

Teraz, aby odkryć rozwiązanie, które, mam nadzieję, jest wystarczająco proste: skopiuj program ładujący z dysku głównego na dysk dodatkowy.

Nie wiedziałem, jak postępować, ponieważ nie wiedziałem dokładnie, jak bootloader wywołuje urządzenia. Może po prostu dublowanie bootloadera od pierwszego spowoduje konflikty, więc było możliwe, że musiałem odwrócić te wpisy, żeby wiedziało, które urządzenie faktycznie jest.

Odkrywając to, znalazłem rozwiązanie, którego można użyć dd skopiować bootloader na drugi dysk. Znalazłem wpis od użytkownika mówiącego, że zawsze to robił i zawsze działał, ale dla mnie z jakiegokolwiek powodu nie.

Próbując lepiej zrozumieć, jak działa GRUB2, odkryłem, że zawiera on narzędzie "install", które z łatwością dodaje bootloader do pożądanego urządzenia, i voila to było dokładnie to, czego potrzebowałem! Wszystko, co musiałem zrobić, to:

grub2-install /dev/sdb

Następnie po wymianie dysków system nadal uruchamiał się zgodnie z oczekiwaniami! Połowa misji ukończona.

Następnie po potwierdzeniu, że oba urządzenia mogą się uruchomić, po prostu musiałem usunąć uszkodzony dysk (teraz 'sdb') z tablicy (dokumentacja tego można znaleźć w Internecie, oznacza to oznaczenie urządzenia jako nieudane, a następnie usunięcie go z tablicy) i zamieniając go na nowy dysk, a na końcu dodając go z powrotem do tablicy mdadm i mam nadzieję, że powinien on rozpocząć automatyczną synchronizację (możesz śledzić postępy z watch cat /proc/mdstat ).

Nie zapomnij też biegać grub2-install ponownie na nowym urządzeniu po zakończeniu.

Mam nadzieję, że może to pomóc komuś innemu w obliczu tego samego problemu.

Jeśli masz partycję EFI, prawdopodobnie będziesz musiał znaleźć sposób na skopiowanie jej na początek urządzenia dodatkowego ( dd powinien wykonać to zadanie, chociaż nie mam pojęcia, jakie parametry musiałbyś mu podać).

Railander
źródło