Det går inte att använda kdump eller kexec för virtuella Linux-datorer på Hyper-V
Den här artikeln innehåller en lösning på ett problem där kdump eller kexec inte kan användas för virtuella Linux-datorer på Hyper-V.
Gäller för: Windows Server 2012 R2, Windows Server 2008 R2 Service Pack 1
Ursprungligt KB-nummer: 2858695
Symptom
Före Windows Server 2012 R2
Tänk dig följande situation:
Du har en Windows Server 2012 R2-baserad dator som har Hyper-V-rollen installerad.
Du installerar Linux på en virtuell Hyper-V-dator på datorn.
Du konfigurerar kdump på den virtuella Linux-datorn.
Obs!
Den virtuella Linux-datorn har redan Linux Integration Services-drivrutiner. Drivrutinerna kan antingen vara fördefinierade eller manuellt installerade.
I det här scenariot genereras inte kärndumpfilen från Linux-kärnan som förväntat om den virtuella Linux-datorn kraschar.
Windows Server 2012 R2
Tänk dig följande situation:
Du har virtuella Linux-datorer på Windows Server 2012 R2 Hyper-V-värd.
15 eller fler virtuella processorer är anslutna till den virtuella Linux-datorn.
Du konfigurerar kdump på den virtuella Linux-datorn.
I det här scenariot fungerar inte kdump och kraschdumpen skapas inte eftersom processen slutar svara (låser sig).
Orsak
Det här problemet beror på att Hyper-V inte kan vara värd för två samtidiga anslutningar från samma syntetiska drivrutin, som körs på en virtuell dator.
När kdump har konfigurerats på en virtuell Linux-dator som använder den syntetiska lagringsdrivrutinen för Linux Integration Services (även kallat storvsc) konfigureras kexec-kerneln för att använda samma drivrutin. Om den virtuella Linux-datorn kraschar försöker den syntetiska lagringsdrivrutinen som finns i kexec-kerneln att öppna en anslutning till Hyper-V-lagringsprovidern. Hyper-V kan dock inte upprätta den nya anslutningen på grund av den befintliga anslutningen till samma lagringsdrivrutin på den kraschade virtuella Linux-datorn. Därför kan kexec-kärnan inte dumpa kärnan för den kraschade virtuella Linux-datorn.
Åtgärd
Lös problemet genom att konfigurera kexec-kerneln med hjälp av linux-standardlagringsdrivrutinen. Den här konfigurationen måste utföras när kdump-funktionen har aktiverats på en virtuell Linux-dator. Den grundläggande idén är att stänga av Linux Integration Services-lagringsdrivrutinen och sedan aktivera linux-standardlagringsdrivrutinen i kexec-kerneln med hjälp av parametern prefer_ms_hyper_v i lämplig konfigurationsfil.
Parametern prefer_ms_hyper_v kan användas för att styra beteendet för linux-standardlagringsdrivrutinen. När den här parametern är inställd på 1 och den virtuella Linux-datorn körs på Hyper-V inaktiverar linux-standardlagringsdrivrutinen sig själv och låter Linux Integration Services-lagringsdrivrutinen styra lagringsenheterna. Genom att ange prefer_ms_hyper_v parametern till 0 tillåts linux-standardlagringsdrivrutinen att fungera. Eftersom standarddrivrutinen för Linux-lagring inte kräver någon anslutning till Hyper-V kan kexec-kerneln dumpa kärnor.
Olika Linux-distributioner har lite olika mekanismer för att ange värdet för prefer_ms_hyper_v. I följande avsnitt beskrivs hur parametern kan anges för flera populära Linux-distributioner.
Red Hat Enterprise Linux (RHEL)
I RHEL 5.9 måste du skicka parametern prefer_ms_hyper_v via ett kernel-kommandoradsargument till den ide_core modul som är inbyggd i RHEL 5.9-kerneln. Som standard initieras den här parametern till 1 och gör att den virtuella Linux-datorn undviker att använda modulen ide_core om den körs i en Hyper-V-miljö. Administratörer måste ange parametervärdet prefer_ms_hyper_v till 0 så att drivrutinen för ide_core används under startprocessen för kexec-kerneln.
I RHEL 6.4 måste du skicka parametern prefer_ms_hyper_v till modulen ata_piix driver.
Det gör du genom att ändra innehållet i /etc/kdump.conf. Se 11.10. Förhindra att kerneldrivrutiner läses in för kdump för mer information.
Ubuntu 12.04(.x)
I Ubuntu 12.04(. x) måste du skicka parametern prefer_ms_hyper_v till ata_piix drivrutinen. Du kan göra det genom att ändra innehållet i filen /etc/init.d/kdump.
Om du vill ändra innehållet i filen /etc/init.d/kdump lägger du till ata_piix. prefer_ms_hyper_v=0 till kommandoradsalternativen för 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)
I SLES 11 SP2(x)-distributioner måste du skicka parametern prefer_ms_hyper_v till ata_piix drivrutinen. Du kan göra det genom att ändra innehållet i filen /etc/sysconfig/kdump på följande sätt:
Lägg till ata_piix.prefer_ms_hyper_v=0 i KDUMP_COMMANDLINE_APPEND:
KDUMP_COMMANDLINE_APPEND="ata_piix.prefer_ms_hyperv=0"
Efter de nödvändiga redigeringarna ser filen /etc/sysconfig/kdump ut så här:
KDUMP_COMMANDLINE_APPEND="ata_piix.prefer_ms_hyperv=0"
Mer information
KDUMP bör konfigureras på det standardmässiga sätt som föreslås av Linux-distributioner.
Ansvarsfriskrivning för information från tredje part
De produkter från andra tillverkare som diskuteras i denna artikel tillverkas oberoende av Microsoft. Produkternas funktion eller tillförlitlighet kan därför inte garanteras.
Feedback
https://aka.ms/ContentUserFeedback.
Kommer snart: Under hela 2024 kommer vi att fasa ut GitHub-problem som feedbackmekanism för innehåll och ersätta det med ett nytt feedbacksystem. Mer information finns i:Skicka och visa feedback för