不能使用 kdump 或 kexec 的 Linux Hyper-V 虚拟机

文章翻译 文章翻译
文章编号: 2858695 - 查看本文应用于的产品
展开全部 | 关闭全部

症状

请考虑以下情形:
  • 您必须已安装 Hyper-V 角色的基于 Windows 的计算机。
  • 您的计算机上的 Hyper-V 虚拟机上安装 Linux。
  • Linux 虚拟机上配置了 kdump。Linux 虚拟机已有的 Linux 集成服务驱动程序,预生成或手动安装。
如果在这种情况下,Linux 虚拟机崩溃,则不会生成从 Linux 内核的核心转储文件,像预期的那样。

原因

由于 Hyper-V 不能承载相同的合成驱动程序在虚拟机中运行两个并发连接,则会出现此问题。

当使用 Linux 集成服务综合存储驱动程序 (也称为 storvsc) 的 Linux 虚拟机上配置 kdump 时,kexec 内核配置为使用相同的驱动程序。如果 Linux 虚拟机崩溃,kexec 内核中承载的综合存储驱动程序会尝试打开与 Hyper-V 存储提供程序的连接。但是,Hyper-V 将无法建立新连接,因为预先存在的连接到相同的存储驱动程序崩溃的 Linux 虚拟机上。因此,kexec 内核不能崩溃的 Linux 虚拟机的核心转储。

解决方案

若要解决此问题,请使用标准的 Linux 存储驱动程序配置 kexec 内核。Linux 在虚拟机上启用的 kdump 功能后,必须执行此配置。基本思路是要关闭的 Linux 集成服务存储驱动程序,然后通过关键位置使用prefer_ms_hyper_v参数中启用内核内部的 kexec 标准 Linux 存储驱动程序。

Prefer_ms_hyper_v参数可以用于控制标准的 Linux 存储驱动程序的行为。如果此参数设置为1 ,Linux 虚拟机正在运行 Hyper-V 的标准的 Linux 存储驱动程序将禁用自身,并允许 Linux 集成服务存储驱动程序控制的存储设备。通过将prefer_ms_hyper_v参数设置为0,标准的 Linux 存储驱动程序可以正常工作。因为标准的 Linux 存储驱动程序不需要连接到 Hyper-V,kexec 内核可以和核心转储。

不同的 Linux 发行版本有prefer_ms_hyper_v的值指定的机制略有不同。下一节介绍如何设置几个常见的 Linux 版本参数。

红色帽子企业 Linux (RHEL) 5.9

在 RHEL 5.9,您必须将prefer_ms_hyper_v参数通过内核的命令行参数传递给 RHEL 5.9 内核中内置的ide_core模块。默认情况下,此参数被初始化为1,,Linux 虚拟机,以避免使用ide_core模块 (如果它正在运行 Hyper-V 环境中,这会导致。管理员必须将prefer_ms_hyper_v参数值设置为0 ,这样的ide_core驱动程序 kexec 内核启动过程中将成为运营。您可以通过更改 /etc/kdump.conf 中的内容来执行此操作。

若要更改 /etc/kdump.conf 中的内容,请按照下列步骤操作:
  1. 运行下面的命令来配置 kdump 写到一个本地目录:

    路径/var/故障
  2. 添加到黑名单中 /etc/kdump.conf 的 Linux 集成服务驱动程序。这样可以防止驱动程序在加载到 kexec 内核。若要执行此操作,请运行下面的命令:

    添加到黑名单 hv_vmbus hv_storvsc hv_utils hv_netvsc hid_hyperv
  3. 通过运行以下命令来配置磁盘超时值:

    100 disk_timeout
  4. 后所需的编辑 /etc/kdump.conf 文件如下所示:
    路径/var/故障
    core_collector makedumpfile-c — 邮件级别 1 d 31
    添加到黑名单 hv_vmbus hv_storvsc hv_utils hv_netvsc hid_hyperv
    100 disk_timeout
  5. 修改 /etc/sysconfig/kdump 文件的内容,如下所示:
    • 添加或修改以下行以包括 prefer_ms_hyperv = 0 的参数:

      KDUMP_COMMANDLINE_APPEND ="irqpoll maxcpus = 1 reset_devices ide_core.prefer_ms_hyperv=0"
    • 后所需的编辑 /etc/sysconfig/kdump 文件如下所示:
      KDUMP_COMMANDLINE =""

      # 此变量可让我们追加到当前的 kdump 命令行参数
      # 如采取从上述两个 KDUMP_COMMANDLINE 或/进程/命令行

      KDUMP_COMMANDLINE_APPEND ="irqpoll maxcpus = 1 reset_devices ide_core.prefer_ms_hyperv=0"

红色帽子企业 Linux (RHEL) 6.4

在 RHEL 6.4 版,您必须将prefer_ms_hyper_v参数传递给ata_piix的驱动程序模块。您可以通过更改 /etc/kdump.conf 文件的内容来执行此操作。

若要更改内容的 /etc/kdump.conf,请执行以下步骤
  1. 配置 kdump 写到一个本地目录:

    路径/var/故障
  2. 添加其他的模块 ata_piix、 sr_mod、 sd_mod:

    extra_modules ata_piix sr_mod sd_mod
  3. 添加到黑名单中 etc/kdump.conf 的 Linux 集成服务驱动程序。这可防止加载到 kexec 内核驱动程序:

    添加到黑名单 hv_vmbus hv_storvsc hv_utils hv_netvsc hid_hyperv
  4. 添加选项参数,将参数传递给 ata_piix 模块:

    选项 ata_piix prefer_ms_hyperv = 0
  5. 配置磁盘超时值,以便它不会停止响应 (挂起):

    100 disk_timeout
  6. 后所需的编辑 /etc/kdump.conf 文件如下所示:
    路径/var/故障
    core_collector makedumpfile-c — 邮件级别 1 d 31
    extra_modules ata_piix sr_mod sd_mod
    添加到黑名单 hv_vmbus hv_storvsc hv_utils hv_netvsc hid_hyperv
    选项 ata_piix prefer_ms_hyperv = 0
    100 disk_timeout

Ubuntu 12.04(.x)

在 Ubuntu 12.04 (。x),您必须将prefer_ms_hyper_v参数传递给ata_piix驱动程序。您可以通过更改 /etc/init.d/kdump 文件的内容来执行此操作。

若要更改 /etc/init.d/kdump 文件的内容,加上 ata_piix。prefer_ms_hyper_v = 0 到 kdump 命令行选项:
do_start {} {
….
….
附加 ="$APPEND kdump_needed maxcpus = 1 irqpoll reset_devices ata_piix.prefer_ms_hyperv=0"

}

在 SUSE Linux 企业服务器 (SLES) 11 SP2(x)

在 SLES 11 SP2(x) 版本,您必须将prefer_ms_hyper_v参数传递给ata_piix驱动程序。您可以通过修改 /etc/sysconfig/kdump 文件的内容,如下所示执行此操作:

追加 KDUMP_COMMANDLINE_APPEND ata_piix.prefer_ms_hyper_v=0:

KDUMP_COMMANDLINE_APPEND="ata_piix.prefer_ms_hyperv=0"

后所需的编辑 /etc/sysconfig/kdump 文件如下所示:

KDUMP_COMMANDLINE_APPEND="ata_piix.prefer_ms_hyperv=0"

更多信息

KDUMP 应以标准的方式,建议的 Linux 发行版本的配置。

本文讨论的第三方产品是由与 Microsoft 无关的公司生产的。Microsoft 不担保也不暗示或对这些产品的性能或可靠性做任何表态。

属性

文章编号: 2858695 - 最后修改: 2013年6月26日 - 修订: 2.0
这篇文章中的信息适用于:
  • Microsoft Hyper-V Server 2008 R2
  • Microsoft Hyper-V Server 2008 R2 Service Pack 1
  • Windows Server 2008 R2 Standard
  • Windows Server 2008 R2 Enterprise
  • Windows Server 2008 R2 Datacenter
  • Windows Server 2008 R2 for Itanium-Based Systems
  • Windows Server 2008 R2 Service Pack 1
  • Windows Storage Server 2008 R2
  • Windows Storage Server 2008 R2 Essentials
  • Microsoft Hyper-V Server 2012
  • Windows Server 2012 Foundation
  • Windows Server 2012 Release Candidate
  • Windows Server 2012 Standard
  • Windows Storage Server 2012 Standard
  • Windows Storage Server 2012 Workgroup
关键字:?
kbmt KB2858695 KbMtzh
机器翻译
重要说明:本文是由 Microsoft 机器翻译软件进行的翻译并可能由 Microsoft 社区通过社区翻译机构(CTF)技术进行后期编辑,或可能是由人工进行的翻译。Microsoft 同时向您提供机器翻译、人工翻译及社区后期编辑的文章,以便对我们知识库中的所有文章以多种语言提供访问。翻译的文章可能存在词汇、句法和/或语法方面的错误。Microsoft 对由于内容的误译或客户对内容的使用所导致的任何不准确、错误或损失不承担责任。
点击这里察看该文章的英文版: 2858695
Microsoft和/或其各供应商对于为任何目的而在本服务器上发布的文件及有关图形所含信息的适用性,不作任何声明。 所有该等文件及有关图形均"依样"提供,而不带任何性质的保证。Microsoft和/或其各供应商特此声明,对所有与该等信息有关的保证和条件不负任何责任,该等保证和条件包括关于适销性、符合特定用途、所有权和非侵权的所有默示保证和条件。在任何情况下,在由于使用或运行本服务器上的信息所引起的或与该等使用或运行有关的诉讼中,Microsoft和/或其各供应商就因丧失使用、数据或利润所导致的任何特别的、间接的、衍生性的损害或任何因使用而丧失所导致的之损害、数据或利润不负任何责任。

提供反馈

 

Contact us for more help

Contact us for more help
Connect with Answer Desk for expert help.
Get more support from smallbusiness.support.microsoft.com