Proaktywne zapewnienie dostępu do narzędzia GRUB i narzędzia sysrq może zaoszczędzić dużo czasu przestoju
Dostęp do konsoli szeregowej i narzędzia GRUB w większości przypadków skróci czas odzyskiwania maszyny wirtualnej IaaS z systemem Linux. Grub oferuje opcje odzyskiwania, które w przeciwnym razie zajęłoby więcej czasu, aby odzyskać maszynę wirtualną.
Przyczyn odzyskiwania maszyny wirtualnej jest wiele i można je przypisać scenariuszom takim jak:
- Uszkodzone systemy plików/jądro/MBR (główny rekord rozruchowy)
- Nieudane uaktualnienia jądra
- Nieprawidłowe parametry jądra GRUB
- Nieprawidłowe konfiguracje fstab
- Konfiguracje zapory
- Utracone hasło
- Zniekształcone pliki konfiguracji sshd
- Konfiguracje sieci
Wiele innych scenariuszy opisanych tutaj
Sprawdź, czy możesz uzyskać dostęp do programu GRUB i konsoli szeregowej na maszynach wirtualnych wdrożonych na platformie Azure.
Jeśli dopiero dopiero korzystasz z konsoli szeregowej, skorzystaj z tego linku.
Porada
Przed wprowadzeniem zmian upewnij się, że wykonujesz kopie zapasowe plików
Obejrzyj poniższe wideo, aby zobaczyć, jak szybko odzyskać maszynę wirtualną z systemem Linux po uzyskaniu dostępu do narzędzia GRUB
Odzyskiwanie wideo maszyny wirtualnej z systemem Linux
Istnieje wiele metod ułatwiających odzyskiwanie maszyn wirtualnych z systemem Linux. W środowisku chmury ten proces był trudny. Nieustannie postępuje się w zakresie narzędzi i funkcji, aby zapewnić szybkie odzyskiwanie usług.
Konsola szeregowa platformy Azure umożliwia interakcję z maszyną wirtualną z systemem Linux tak, jakby znajdowała się w konsoli systemu.
Można manipulować wieloma plikami konfiguracji, w tym sposobem rozruchu jądra.
Bardziej doświadczeni administratorzy systemu Linux/Unix docenią tryby pojedynczego użytkownika i tryby awaryjne , które są dostępne za pośrednictwem konsoli szeregowej platformy Azure, dzięki czemu wymiana dysków i usuwanie maszyn wirtualnych w wielu scenariuszach odzyskiwania są nadmiarowe.
Metoda odzyskiwania zależy od napotkanego problemu, na przykład utracone lub niesłuszne hasło można zresetować za pośrednictwem opcji Azure Portal ->Resetuj hasło. Funkcja Resetuj hasło jest znana jako rozszerzenie i komunikuje się z agentem gościa systemu Linux.
Inne rozszerzenia, takie jak Skrypt niestandardowy są dostępne, jednak te opcje wymagają, aby waagent systemu Linux był w dobrej kondycji, co nie zawsze ma miejsce.
Zapewnienie dostępu do konsoli szeregowej platformy Azure i narzędzia GRUB oznacza, że zmiana hasła lub nieprawidłowa konfiguracja może zostać naprawiona w ciągu kilku minut, a nie godzin. Możesz nawet wymusić rozruch maszyny wirtualnej z alternatywnego jądra, jeśli masz wiele jąder na dysku w scenariuszu, w którym podstawowe jądro ulega uszkodzeniu.
Sugerowana kolejność metod odzyskiwania
Konsola szeregowa platformy Azure
Zamiana dysku — można zautomatyzować przy użyciu jednego z następujących elementów:
Starsza metoda
Wideo zamiany dysku
Jeśli nie masz dostępu do narzędzia GRUB watch tym filmie wideo i zobaczysz, jak można łatwo zautomatyzować procedurę zamiany dysku w celu odzyskania maszyny wirtualnej
Wyzwania
Nie wszystkie maszyny wirtualne platformy Azure z systemem Linux są domyślnie skonfigurowane do uzyskiwania dostępu do programu GRUB i nie wszystkie są skonfigurowane tak, aby były przerywane za pomocą poleceń sysrq. Niektóre starsze dystrybucje, takie jak SLES 11, nie są skonfigurowane do wyświetlania monitu logowania w konsoli szeregowej platformy Azure
W tym artykule przejrzymy różne dystrybucje systemu Linux i konfiguracje dokumentów dotyczące sposobu udostępniania narzędzia GRUB.
Jak skonfigurować maszynę wirtualną z systemem Linux do akceptowania kluczy SysRq
Klucz sysrq jest domyślnie włączony w niektórych nowszych dystrybucjach systemu Linux, chociaż w innych może być skonfigurowany do akceptowania wartości tylko dla niektórych funkcji SysRq. W starszych dystrybucjach może być całkowicie wyłączona.
Funkcja SysRq jest przydatna do ponownego uruchamiania maszyny wirtualnej, która uległa awarii lub nie odpowiada bezpośrednio z konsoli szeregowej platformy Azure, również przydatna w uzyskaniu dostępu do menu GRUB, alternatywnie ponowne uruchomienie maszyny wirtualnej z innego okna portalu lub sesji SSH może spowodować usunięcie bieżącego połączenia konsoli, co spowoduje wygaśnięcie limitów czasu grub, do których są używane do wyświetlania menu GRUB. Maszyna wirtualna musi być skonfigurowana tak, aby akceptowała wartość 1 dla parametru jądra, co umożliwia wszystkie funkcje programu sysrq lub 128, co umożliwia ponowne uruchomienie/wyłączenie
Aby skonfigurować maszynę wirtualną do akceptowania ponownego uruchomienia za pomocą poleceń SysRq na Azure Portal, należy ustawić wartość 1 dla parametru jądra kernel.sysrq
Aby ta konfiguracja utrwaliła ponowny rozruch, dodaj wpis do pliku sysctl.conf
echo kernel.sysrq = 1 >> /etc/sysctl.conf
Aby dynamicznie skonfigurować parametr jądra
sysctl -w kernel.sysrq=1
Jeśli nie masz dostępu do katalogu głównego lub sudo zostanie przerwane, nie będzie możliwe skonfigurowanie narzędzia sysrq z poziomu wiersza polecenia powłoki.
W tym scenariuszu możesz włączyć funkcję sysrq przy użyciu Azure Portal. Ta metoda może być korzystna, jeśli plik sudoers.d/waagent został uszkodzony lub został usunięty.
Korzystanie z funkcji Azure Portal Operations —> Run Command —> RunShellScript wymaga, aby proces waagent był w dobrej kondycji, a następnie wstrzyknąć to polecenie, aby włączyć narzędzie sysrq
sysctl -w kernel.sysrq=1 ; echo kernel.sysrq = 1 >> /etc/sysctl.conf
Jak pokazano tutaj:
Po zakończeniu możesz spróbować uzyskać dostęp do narzędzia sysrq i zobaczyć, że jest możliwe ponowne uruchomienie.
Wybierz pozycję Uruchom ponownie i wyślij polecenie SysRq
System powinien rejestrować komunikat resetowania, taki jak ten
Konfiguracja narzędzia GRUB systemu Ubuntu
Domyślnie podczas rozruchu maszyny wirtualnej powinno być możliwe uzyskiwanie dostępu do narzędzia GRUB, przytrzymując klawisz Esc , jeśli menu GRUB nie zostanie wyświetlone, możesz wymusić i utrzymać menu GRUB na ekranie w konsoli szeregowej platformy Azure przy użyciu jednej z tych opcji.
Opcja 1 — wymusza wyświetlenie grub na ekranie
Zaktualizuj plik /etc/default/grub.d/50-cloudimg-settings.cfg, aby zachować menu GRUB na ekranie dla określonego limitu czasu. Nie jest wymagane trafienie klawisza Esc , ponieważ grub zostanie wyświetlony natychmiast.
GRUB_TIMEOUT=5
GRUB_TIMEOUT_STYLE=menu
Opcja 2 — umożliwia naciśnięcie klawisza Esc przed uruchomieniem
Podobne zachowanie można napotkać, wprowadzając zmiany w pliku /etc/default/grub i obserwuj 3-sekundowy limit czasu, aby trafić esc
Dodaj komentarz do tych dwóch wierszy:
#GRUB_HIDDEN_TIMEOUT=0
#GRUB_HIDDEN_TIMEOUT_QUIET=true
i dodaj ten wiersz:
GRUB_TIMEOUT_STYLE=countdown
Ubuntu 12.04
System Ubuntu 12.04 umożliwia dostęp do konsoli szeregowej, ale nie oferuje możliwości interakcji. Logowanie: monit nie jest widoczny
Aby uzyskać identyfikator logowania w wersji 12.04: monit:
Utwórz plik o nazwie /etc/init/ttyS0.conf zawierający następujący tekst:
# ttyS0 - getty # # This service maintains a getty on ttyS0 from the point the system is # started until it is shut down again. start on stopped rc RUNLEVEL=[12345] stop on runlevel [!12345] respawn exec /sbin/getty -L 115200 ttyS0 vt102
Zapytaj upstart, aby rozpocząć getty
sudo start ttyS0
Ustawienia wymagane do skonfigurowania konsoli szeregowej dla wersji systemu Ubuntu można znaleźć tutaj
Tryb odzyskiwania systemu Ubuntu
Dodatkowe opcje odzyskiwania i oczyszczania są dostępne dla systemu Ubuntu za pośrednictwem narzędzia GRUB, jednak te ustawienia są dostępne tylko wtedy, gdy odpowiednio skonfigurujesz parametry jądra. Nieskonfigurowanie tego parametru rozruchu jądra wymusi wysłanie menu Odzyskiwania do Diagnostyka Azure, a nie do konsoli szeregowej platformy Azure. Dostęp do menu odzyskiwania systemu Ubuntu można uzyskać, wykonując następujące kroki:
Przerywanie procesu ROZRUCHU i uzyskiwanie dostępu do menu GRUB
Wybierz pozycję Opcje zaawansowane dla systemu Ubuntu i naciśnij klawisz Enter
Wybierz wiersz wyświetlający (tryb odzyskiwania) nie naciskaj klawisza Enter, ale naciśnij klawisz "e"
Znajdź wiersz, który załaduje jądro i zastąp element nomodeset ostatniego parametru elementem docelowym jako console=ttyS0
linux /boot/vmlinuz-4.15.0-1023-azure root=UUID=21b294f1-25bd-4265-9c4e-d6e4aeb57e97 ro recovery nomodeset
change to
linux /boot/vmlinuz-4.15.0-1023-azure root=UUID=21b294f1-25bd-4265-9c4e-d6e4aeb57e97 ro recovery console=ttyS0
Naciśnij klawisze Ctrl-x , aby uruchomić i załadować jądro. Jeśli wszystko pójdzie dobrze, zobaczysz te dodatkowe opcje, które mogą pomóc w wykonaniu innych opcji odzyskiwania
Konfiguracja narzędzia Red Hat GRUB
Konfiguracja narzędzia Red Hat 7.4+ GRUB
Domyślna konfiguracja /etc/default/grub w tych wersjach jest odpowiednio skonfigurowana
GRUB_TIMEOUT=5
GRUB_DISTRIBUTOR="$(sed 's, release .*$,,g' /etc/system-release)"
GRUB_DEFAULT=saved
GRUB_DISABLE_SUBMENU=true
GRUB_TERMINAL="serial console"
GRUB_SERIAL_COMMAND="serial"
GRUB_CMDLINE_LINUX="console=tty1 console=ttyS0 earlyprintk=ttyS0"
GRUB_DISABLE_RECOVERY="true"
Włączanie klucza SysRq
sysctl -w kernel.sysrq=1;echo kernel.sysrq = 1 >> /etc/sysctl.conf;sysctl -a | grep -i sysrq
Konfiguracja programu Red Hat 7.2 i 7.3 GRUB
Plik do zmodyfikowania to /etc/default/grub — domyślna konfiguracja wygląda jak w tym przykładzie:
GRUB_TIMEOUT=1
GRUB_DISTRIBUTOR="$(sed 's, release .*$,,g' /etc/system-release)"
GRUB_DEFAULT=saved
GRUB_DISABLE_SUBMENU=true
GRUB_TERMINAL_OUTPUT="console"
GRUB_CMDLINE_LINUX="console=tty1 console=ttyS0 earlyprintk=ttyS0"
GRUB_DISABLE_RECOVERY="true"
Zmień następujące wiersze w /etc/default/grub
GRUB_TIMEOUT=1
to
GRUB_TIMEOUT=5
GRUB_TERMINAL_OUTPUT="console"
to
GRUB_TERMINAL="serial console"
Dodaj również ten wiersz:
GRUB_SERIAL_COMMAND="serial –speed=115200 –unit=0 –word=8 –parity=no –stop=1″
/etc/default/grub powinien teraz wyglądać podobnie do tego przykładu:
GRUB_TIMEOUT=5
GRUB_DISTRIBUTOR="$(sed 's, release .*$,,g' /etc/system-release)"
GRUB_DEFAULT=saved
GRUB_DISABLE_SUBMENU=true
GRUB_TERMINAL="serial console"
GRUB_CMDLINE_LINUX="console=tty1 console=ttyS0 earlyprintk=ttyS0"
GRUB_DISABLE_RECOVERY="true"
Ukończ i zaktualizuj konfigurację narzędzia grub przy użyciu polecenia
grub2-mkconfig -o /boot/grub2/grub.cfg
Ustaw parametr jądra SysRq:
sysctl -w kernel.sysrq = 1;echo kernel.sysrq = 1 >> /etc/sysctl.conf;sysctl -a | grep -i sysrq
Alternatywnie można skonfigurować narzędzia GRUB i SysRq przy użyciu jednego wiersza w powłoce lub za pomocą polecenia Uruchom. Przed uruchomieniem tego polecenia utwórz kopię zapasową plików:
cp /etc/default/grub /etc/default/grub.bak; sed -i 's/GRUB_TIMEOUT=1/GRUB_TIMEOUT=5/g' /etc/default/grub; sed -i 's/GRUB_TERMINAL_OUTPUT="console"/GRUB_TERMINAL="serial console"/g' /etc/default/grub; echo "GRUB_SERIAL_COMMAND=\"serial --speed=115200 --unit=0 --word=8 --parity=no --stop=1\"" >> /etc/default/grub;grub2-mkconfig -o /boot/grub2/grub.cfg;sysctl -w kernel.sysrq=1;echo kernel.sysrq = 1 /etc/sysctl.conf;sysctl -a | grep -i sysrq
Konfiguracja narzędzia Red Hat 6.x GRUB
Plik do zmodyfikowania to /boot/grub/grub.conf. Wartość timeout
określa, jak długo grub jest wyświetlany dla.
#boot=/dev/vda
default=0
timeout=15
splashimage=(hd0,0)/grub/splash.xpm.gz
#hiddenmenu
serial --unit=0 --speed=9600
terminal serial
terminal --timeout=5 serial console
W terminalu ostatniego wiersza –-timeout=5 konsoli szeregowej jeszcze bardziej zwiększy limit czasu GRUB przez dodanie monitu 5 sekund wyświetlania Naciśnij dowolny klucz, aby kontynuować.
Menu GRUB powinno być wyświetlane na ekranie dla skonfigurowanego limitu czasu=15 bez konieczności naciskania klawisza Esc. Pamiętaj, aby kliknąć pozycję Konsola w przeglądarce, aby uaktywnić menu i wybrać wymagane jądro.
Suse
SLES 12 sp1
Użyj bootloadera YaST zgodnie z oficjalną dokumentacją
Możesz też dodać/zmienić na /etc/default/grub następujące parametry:
GRUB_TERMINAL=serial
GRUB_TIMEOUT=5
GRUB_SERIAL_COMMAND="serial --unit=0 --speed=9600 --parity=no"
```console
Verify that ttys0 is used in the GRUB_CMDLINE_LINUX or GRUB_CMDLINE_LINUX_DEFAULT
```console
GRUB_CMDLINE_LINUX_DEFAULT="console=ttyS0,9600n"
Odtwórz plik grub.cfg
grub2-mkconfig -o /boot/grub2/grub.cfg
SLES 11 SP4
Konsola szeregowa jest wyświetlana i wyświetla komunikaty rozruchowe, ale nie wyświetla monitu logowania:
Otwórz sesję ssh na maszynie wirtualnej i zaktualizuj plik /etc/inittab , cofając komentowanie tego wiersza:
#S0:12345:respawn:/sbin/agetty -L 9600 ttyS0 vt102
Następnie uruchom polecenie
telinit q
Aby włączyć narzędzie GRUB, należy wprowadzić następujące zmiany w pliku /boot/grub/menu.lst
timeout 5
serial --unit=0 --speed=9600 --parity=no
terminal --timeout=5 serial console
root (hd0,0)
kernel /boot/vmlinuz-3.0.101-108.74-default root=/dev/disk/by-uuid/ab6b62bb--
1a8c-45eb-96b1-1fbc535b9265 disk=/dev/sda USE_BY_UUID_DEVICE_NAMES=1 earlyprinttk=ttyS0 console=ttyS0 showopts vga=0x314
Ta konfiguracja umożliwi wyświetlenie komunikatu Naciśnij dowolny klucz w konsoli przez 5 sekund
Następnie zostanie wyświetlone menu GRUB przez dodatkowe 5 sekund — naciśnięcie strzałki w dół spowoduje przerwanie licznika i wybranie jądra, które ma zostać uruchomione, dołącza jednokrotne słowo kluczowe w trybie pojedynczego użytkownika, który wymaga ustawienia hasła głównego.
Dołączenie polecenia init=/bin/bash spowoduje załadowanie jądra, ale gwarantuje, że program init zostanie zastąpiony powłoką bash.
Uzyskasz dostęp do powłoki bez konieczności wprowadzania hasła. Następnie możesz kontynuować aktualizowanie hasła dla kont systemu Linux lub wprowadzać inne zmiany konfiguracji.
Wymuszanie na jądrze monitu powłoki bash
Dostęp do programu GRUB umożliwia przerwanie procesu inicjowania, który jest przydatny w przypadku wielu procedur odzyskiwania. Jeśli nie masz hasła głównego, a pojedynczy użytkownik wymaga hasła głównego, możesz uruchomić jądro zastępujące program init monitem powłoki bash — to przerwanie można osiągnąć, dołączając polecenie init=/bin/bash do wiersza rozruchu jądra
Ponowne instalowanie /(główny) system plików RW przy użyciu polecenia
mount -o remount,rw /
Teraz możesz przeprowadzić zmianę hasła głównego lub wiele innych zmian konfiguracji systemu Linux
Uruchom ponownie maszynę wirtualną za pomocą polecenia
/sbin/reboot -f
Tryb pojedynczego użytkownika
Alternatywnie może być konieczne uzyskanie dostępu do maszyny wirtualnej w trybie pojedynczego użytkownika lub w trybie awaryjnym. Wybierz jądro, które chcesz uruchomić lub przerwać przy użyciu klawiszy strzałek. Wprowadź żądany tryb, dołączając słowo kluczowe pojedyncze lub 1 do wiersza rozruchu jądra. W systemach RHEL można również dołączyć plik rd.break.
Aby uzyskać więcej informacji na temat uzyskiwania dostępu do trybu pojedynczego użytkownika, zobacz ten dokumentacja
Następne kroki
Dowiedz się więcej o konsoli szeregowej platformy Azure
Skontaktuj się z nami, aby uzyskać pomoc
Jeśli masz pytania lub potrzebujesz pomocy, utwórz wniosek o pomoc techniczną lub zadaj pytanie w społeczności wsparcia dla platformy Azure. Możesz również przesłać opinię o produkcie do społeczności opinii platformy Azure.
Opinia
https://aka.ms/ContentUserFeedback.
Dostępne już wkrótce: W 2024 r. będziemy stopniowo wycofywać zgłoszenia z serwisu GitHub jako mechanizm przesyłania opinii na temat zawartości i zastępować go nowym systemem opinii. Aby uzyskać więcej informacji, sprawdź:Prześlij i wyświetl opinię dla