20.19. 使用 virsh dump创建 guest 虚拟机内核的转储文件
对客户机虚拟机进行故障排除的方法之一(除了 kdump 和 pvpanic外),使用 virsh dump domain corefilepath [
--bypass-cache
] {--live | --crash | --reset
} [--verbose
] [--memory-only
] [--format
=format] 命令。这会创建一个转储文件,其中包含客户端虚拟机的核心,以便它可以分析,例如 crash 实用程序。
特别是,运行 virsh dump 命令将客户机虚拟机内核转储到您提供的核心文件路径指定的文件中。请注意,一些虚拟机监控程序可能会对这个操作有限制,可能需要用户手动确保对 corefilepath 参数指定的文件和路径的适当权限。该命令支持 SR-IOV 设备以及其他 passthrough 设备。以下参数会被支持,并具有以下效果:
--bypass-cache
- 保存的文件不会绕过主机的文件系统缓存。它对文件的内容没有影响。请注意,选择这个选项可能会减慢转储操作的速度。--live
将保存文件,因为客户机虚拟机继续运行,且不会暂停或停止客户机虚拟机。--crash
将客户机虚拟机置于崩溃状态,而不是在保存转储文件时将其保留为已暂停状态。客户机虚拟机将列出为"中断",原因为"垃圾"。--reset
- 成功保存转储文件时,将重置 guest 虚拟机。--verbose
显示转储过程的进度--memory-only
- 使用此选项运行转储文件将创建一个转储文件,该文件的内容将仅包含客户机虚拟机的内存和 CPU 通用寄存器文件。在运行完整转储时,应使用这个选项。当无法实时迁移客户机虚拟机时(由于 passthrough PCI 设备),可能会发生这种情况。您可以使用--format=格式
选项保存只内存转储。可用的格式如下:ELF
- 默认未压缩格式kdump-zlib
- kdump 压缩格式 zlib 压缩kdump-lzo
- kdump 压缩格式使用 LZO 压缩kdump-snappy
- kdump 压缩格式使用 Snappy 压缩
重要crash 工具不再支持 virsh dump 命令的默认内核转储文件格式。如果您使用 崩溃 来分析由 virsh dump 创建的内核转储文件,则必须使用 --memory-only 选项。另外,在创建内核转储文件时,还必须使用 --memory-only 选项以附加到红帽支持问题单。
请注意,可以使用 virsh domjobinfo 命令监控整个过程,并可使用 virsh domjobabort 命令取消。
例 20.47. 如何使用 virsh 创建转储文件
以下示例创建 guest1 虚拟机的转储文件,将其保存到
core/file/path.file
文件中,然后重置 guest。使用这个命令的最常见情况是,如果您的客户机虚拟机没有正确行为,则使用这个命令的最常见情况是:
# virsh dump guest1 core/file/path.file
--memory-only
--reset