Nie można użyć narzędzia kdump lub kexec dla maszyn wirtualnych z systemem Linux w funkcji Hyper-V
Ten artykuł zawiera rozwiązanie problemu polegającego na tym, że kdump lub kexec nie mogą być używane dla maszyn wirtualnych z systemem Linux w funkcji Hyper-V.
Dotyczy: Windows Server 2012 R2, Windows Server 2008 R2 Service Pack 1
Oryginalny numer KB: 2858695
Symptomy
Przed Windows Server 2012 R2
Rozpatrzmy następujący scenariusz:
Masz wstępnie Windows Server 2012 komputer oparty na języku R2 z zainstalowaną rolą funkcji Hyper-V.
System Linux jest instalowany na maszynie wirtualnej funkcji Hyper-V na komputerze.
Narzędzie kdump można skonfigurować na maszynie wirtualnej z systemem Linux.
Uwaga
Maszyna wirtualna z systemem Linux ma już sterowniki usług Integracja systemu Linux. Sterowniki można wstępnie lub ręcznie zainstalować.
W tym scenariuszu, jeśli maszyna wirtualna z systemem Linux ulegnie awarii, podstawowy plik zrzutu z jądra systemu Linux nie zostanie wygenerowany zgodnie z oczekiwaniami.
Windows Server 2012 R2
Rozpatrzmy następujący scenariusz:
Masz maszyny wirtualne z systemem Linux na hoście funkcji Hyper-V Windows Server 2012 R2.
Do maszyny wirtualnej z systemem Linux jest dołączonych co najmniej 15 procesorów wirtualnych.
Narzędzie kdump można skonfigurować na maszynie wirtualnej z systemem Linux.
W tym scenariuszu narzędzie kdump nie działa, a zrzut awaryjny nie jest tworzony, ponieważ proces przestaje odpowiadać (zawiesza się).
Przyczyna
Ten problem występuje, ponieważ funkcja Hyper-V nie może hostować dwóch równoczesnych połączeń z tego samego sterownika syntetycznego, który działa wewnątrz maszyny wirtualnej.
Gdy kdump jest skonfigurowany na maszynie wirtualnej z systemem Linux, która używa sterownika magazynu syntetycznego usług Integracja systemu Linux (znanego również jako storvsc), jądro kexec jest skonfigurowane do używania tego samego sterownika. Jeśli maszyna wirtualna z systemem Linux ulegnie awarii, syntetyczny sterownik magazynu hostowany w jądrze kexec próbuje otworzyć połączenie z dostawcą magazynu funkcji Hyper-V. Jednak funkcja Hyper-V nie może ustanowić nowego połączenia z powodu istniejącego wcześniej połączenia z tym samym sterownikiem magazynu na awarii maszyny wirtualnej z systemem Linux. W związku z tym jądro kexec nie może zrzucić rdzenia dla awarii maszyny wirtualnej z systemem Linux.
Rozwiązanie
Aby rozwiązać ten problem, skonfiguruj jądro kexec przy użyciu standardowego sterownika magazynu systemu Linux. Tę konfigurację należy wykonać po włączeniu funkcji kdump na maszynie wirtualnej z systemem Linux. Podstawową ideą jest wyłączenie sterownika magazynu usług Integracja systemu Linux, a następnie włączenie standardowego sterownika magazynu systemu Linux wewnątrz jądra kexec przy użyciu parametru prefer_ms_hyper_v w odpowiednim pliku konfiguracji.
Parametr prefer_ms_hyper_v może służyć do kontrolowania zachowania standardowego sterownika magazynu systemu Linux. Gdy ten parametr jest ustawiony na wartość 1, a maszyna wirtualna z systemem Linux jest uruchomiona w funkcji Hyper-V, standardowy sterownik magazynu systemu Linux wyłącza się i umożliwia sterownikowi magazynu usługi Linux Integration Services kontrolowanie urządzeń magazynujących. Ustawiając parametr prefer_ms_hyper_v na wartość 0, standardowy sterownik magazynu systemu Linux może działać. Ponieważ standardowy sterownik magazynu systemu Linux nie wymaga połączenia z funkcją Hyper-V, jądro kexec może zrzucić rdzeń.
Różne dystrybucje systemu Linux mają nieco inne mechanizmy określania wartości prefer_ms_hyper_v. W poniższej sekcji opisano sposób ustawiania parametru dla kilku popularnych dystrybucji systemu Linux.
Red Hat Enterprise Linux (RHEL)
W programie RHEL 5.9 należy przekazać parametr prefer_ms_hyper_v za pośrednictwem argumentu wiersza polecenia jądra do modułu ide_core wbudowanego w jądro RHEL 5.9. Domyślnie ten parametr jest inicjowany do wartości 1 i powoduje, że maszyna wirtualna z systemem Linux unika używania modułu ide_core, jeśli jest uruchomiona w środowisku funkcji Hyper-V. Administratorzy muszą ustawić wartość parametru prefer_ms_hyper_v na 0, aby sterownik ide_core mógł działać podczas procesu rozruchu jądra kexec.
W programie RHEL 6.4 należy przekazać parametr prefer_ms_hyper_v do modułu sterownika ata_piix .
W tym celu zmień zawartość pliku /etc/kdump.conf. Zobacz 11.10. Aby uzyskać więcej informacji, nie można załadować sterowników jądra dla narzędzia kdump .
Ubuntu 12.04(.x)
W systemie Ubuntu 12.04(. x), musisz przekazać parametr prefer_ms_hyper_v do sterownika ata_piix. Możesz to zrobić, zmieniając zawartość pliku /etc/init.d/kdump.
Aby zmienić zawartość pliku /etc/init.d/kdump, dołącz ata_piix. prefer_ms_hyper_v=0 do opcji wiersza polecenia kdump:
do_start {}
{
....
....
APPEND="$APPEND kdump_needed maxcpus=1 irqpoll reset_devices ata_piix.prefer_ms_hyperv=0"
...
}
SUSE Linux Enterprise Server (SLES) 11 SP2(x)
W dystrybucjach SLES 11 SP2(x) należy przekazać parametr prefer_ms_hyper_v do sterownika ata_piix. Można to zrobić, modyfikując zawartość pliku /etc/sysconfig/kdump w następujący sposób:
Dołącz ata_piix.prefer_ms_hyper_v=0 do KDUMP_COMMANDLINE_APPEND:
KDUMP_COMMANDLINE_APPEND="ata_piix.prefer_ms_hyperv=0"
Po wprowadzeniu wymaganych zmian plik /etc/sysconfig/kdump wygląda następująco:
KDUMP_COMMANDLINE_APPEND="ata_piix.prefer_ms_hyperv=0"
Więcej informacji
Protokół KDUMP należy skonfigurować w standardowy sposób sugerowany przez dystrybucje systemu Linux.
Zastrzeżenie dotyczące innych firm
Produkty innych firm omówione w tym artykule są wytwarzane przez producentów niezależnych od firmy Microsoft. Firma Microsoft nie udziela żadnych gwarancji, dorozumianych ani żadnego innego rodzaju, w odniesieniu do wydajności lub niezawodności tych produktów.
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