Kan kdump of kexec niet gebruiken voor virtuele Linux-machines op Hyper-V

Dit artikel biedt een oplossing voor een probleem waarbij kdump of kexec niet kan worden gebruikt voor virtuele Linux-machines op Hyper-V.

Van toepassing op: Windows Server 2012 R2, Windows Server 2008 R2 Service Pack 1
Origineel KB-nummer: 2858695

Symptomen

  • Pre-Windows Server 2012 R2

    Neem het volgende scenario:

    • U hebt een pre-Windows Server 2012 R2-computer waarop de Hyper-V-rol is geïnstalleerd.

    • U installeert Linux op een virtuele Hyper-V-machine op de computer.

    • U configureert kdump op de virtuele Linux-machine.

      Opmerking

      De virtuele Linux-machine heeft al de stuurprogramma's voor Linux Integration Services. De stuurprogramma's kunnen vooraf worden samengesteld of handmatig worden geïnstalleerd.

      Als in dit scenario de virtuele Linux-machine vastloopt, wordt het kerndumpbestand van de Linux-kernel niet gegenereerd zoals verwacht.

  • Windows Server 2012 R2

    Neem het volgende scenario:

    • U hebt virtuele Linux-machines op Windows Server 2012 R2 Hyper-V-host.

    • Er zijn 15 of meer vCPU's gekoppeld aan de virtuele Linux-machine.

    • U configureert kdump in de virtuele Linux-machine.

      In dit scenario werkt kdump niet en wordt de crashdump niet gemaakt, omdat het proces niet meer reageert (vastloopt).

Oorzaak

Dit probleem treedt op omdat Hyper-V niet twee gelijktijdige verbindingen van hetzelfde synthetische stuurprogramma kan hosten, dat wordt uitgevoerd in een virtuele machine.

Wanneer kdump is geconfigureerd op een virtuele Linux-machine die gebruikmaakt van het stuurprogramma voor synthetische opslag van Linux Integration Services (ook wel bekend als storvsc), wordt de kexec-kernel geconfigureerd om hetzelfde stuurprogramma te gebruiken. Als de virtuele Linux-machine vastloopt, probeert het synthetische opslagstuurprogramma dat wordt gehost in de kexec-kernel een verbinding te openen met de Hyper-V-opslagprovider. Hyper-V kan de nieuwe verbinding echter niet tot stand brengen vanwege de bestaande verbinding met hetzelfde opslagstuurprogramma op de gecrashte virtuele Linux-machine. Daarom kan de kexec-kernel de kern voor de gecrashte virtuele Linux-machine niet dumpen.

Oplossing

U kunt dit probleem oplossen door de kexec-kernel te configureren met behulp van het standaard Linux-opslagstuurprogramma. Deze configuratie moet worden uitgevoerd nadat de kdump-functionaliteit is ingeschakeld op een virtuele Linux-machine. Het basisidee is om het Linux Integration Services-opslagstuurprogramma uit te schakelen en vervolgens het standaard linux-opslagstuurprogramma in de kexec-kernel in te schakelen met behulp van de parameter prefer_ms_hyper_v in het juiste configuratiebestand.

De parameter prefer_ms_hyper_v kan worden gebruikt om het gedrag van het standaard-Linux-opslagstuurprogramma te beheren. Wanneer deze parameter is ingesteld op 1 en de virtuele Linux-machine wordt uitgevoerd op Hyper-V, schakelt het standaard Linux-opslagstuurprogramma zichzelf uit en kan het Linux Integration Services-opslagstuurprogramma de opslagapparaten beheren. Door de parameter prefer_ms_hyper_v in te stellen op 0, mag het standaard-Linux-opslagstuurprogramma functioneren. Omdat het standaard Linux-opslagstuurprogramma geen verbinding met Hyper-V vereist, kan de kexec-kernel kern dumpen.

Verschillende Linux-distributies hebben enigszins verschillende mechanismen om de waarde van prefer_ms_hyper_v op te geven. In de volgende sectie wordt beschreven hoe de parameter kan worden ingesteld voor verschillende populaire Linux-distributies.

Red Hat Enterprise Linux (RHEL)

In RHEL 5.9 moet u de parameter prefer_ms_hyper_v via een kernel opdrachtregelargument doorgeven aan de ide_core module die is ingebouwd in de RHEL 5.9-kernel. Deze parameter wordt standaard geïnitialiseerd op 1 en zorgt ervoor dat de virtuele Linux-machine het gebruik van de ide_core-module vermijdt als deze wordt uitgevoerd in een Hyper-V-omgeving. Beheerders moeten de parameterwaarde prefer_ms_hyper_v instellen op 0, zodat het ide_core stuurprogramma operationeel wordt tijdens het opstartproces van de kexec-kernel.

In RHEL 6.4 moet u de parameter prefer_ms_hyper_v doorgeven aan de ata_piix stuurprogrammamodule.

Wijzig hiervoor de inhoud van /etc/kdump.conf. Zie 11.10. Voorkomen dat kernelstuurprogramma's worden geladen voor kdump voor meer informatie.

Ubuntu 12.04(.x)

In Ubuntu 12.04(. x) moet u de parameter prefer_ms_hyper_v doorgeven aan het ata_piix stuurprogramma. U kunt dit doen door de inhoud van het bestand /etc/init.d/kdump te wijzigen.

Als u de inhoud van het bestand /etc/init.d/kdump wilt wijzigen, voegt u ata_piix toe. prefer_ms_hyper_v=0 naar de kdump-opdrachtregelopties:

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)

In SLES 11 SP2(x)-distributies moet u de parameter prefer_ms_hyper_v doorgeven aan het ata_piix-stuurprogramma. U kunt dit doen door de inhoud van het bestand /etc/sysconfig/kdump als volgt te wijzigen:

Voeg ata_piix.prefer_ms_hyper_v=0 toe aan KDUMP_COMMANDLINE_APPEND:

KDUMP_COMMANDLINE_APPEND="ata_piix.prefer_ms_hyperv=0"

Na de vereiste bewerkingen ziet het bestand /etc/sysconfig/kdump er als volgt uit:

KDUMP_COMMANDLINE_APPEND="ata_piix.prefer_ms_hyperv=0"

Meer informatie

KDUMP moet worden geconfigureerd op de standaardmethode die wordt voorgesteld door Linux-distributies.

Disclaimerinformatie van derden

De producten van derden die in dit artikel worden vermeld, worden vervaardigd door bedrijven die onafhankelijk zijn van Microsoft. Microsoft verleent dan ook geen enkele garantie, impliciet noch anderszins, omtrent de prestaties of de betrouwbaarheid van deze producten.