23.2. 转储虚拟机内核
要分析虚拟机(VM)崩溃或出现故障的原因,您可以将虚拟机内核转储到磁盘上的文件,以便稍后分析和诊断。
本节提供了简要的 内核转储介绍 ,并解释了如何将 虚拟机内核转储 到一个特定的文件。
23.2.1. 虚拟机内核转储的工作原理
虚拟机(VM)需要许多运行的进程来准确且高效地工作。在某些情况下,运行的虚拟机在使用时可能会意外终止或出现故障。重新启动虚拟机可能会导致数据被重置或丢失,从而难以诊断导致虚拟机崩溃的确切问题。
在这种情况下,您可以在重启虚拟机前使用 virsh dump
工具将虚拟机内核保存(或 转储)到一个文件中。内核转储文件包含虚拟机的原始物理内存镜像,其中包含有关虚拟机的详细信息。此信息可用于手动诊断,或使用 crash
等工具来诊断虚拟机问题。
其它资源
-
您系统上的
crash
手册页 -
crash
Github 存储库
23.2.2. 创建虚拟机内核转储文件
虚拟机(VM)内核转储包含在任何给定的时间有关虚拟机状态的详细信息。此信息与虚拟机的快照类似,可以帮助您在虚拟机出现故障或突然关闭时检测问题。
先决条件
- 请确定您有足够的磁盘空间保存该文件。请注意,虚拟机消耗的空间取决于分配给虚拟机的 RAM 量。
流程
使用
virsh dump
工具。例如,以下命令将
lander1
虚拟机的内核、内存和 CPU 通用寄存器文件转储到/core/file
目录中的gargantua.file
:# virsh dump lander1 /core/file/gargantua.file --memory-only Domain 'lander1' dumped to /core/file/gargantua.file
crash
工具不再支持 virsh dump 命令的默认文件格式。要使用 crash
分析内核转储文件,您必须使用 --memory-only
选项创建文件。
另外,在创建内核转储文件时,必须使用 --memory-only
选项将其附加到红帽支持问题单中。
故障排除
如果 virsh dump
命令失败并显示 System is deadlocked on memory
错误,请确保为内核转储文件分配了足够的内存。要做到这一点,请使用以下 crashkernel
选项值。或者,请勿使用 crashkernel
,它会自动分配内核转储内存。
crashkernel=1G-4G:192M,4G-64G:256M,64G-:512M
其它资源
-
virsh dump --help
命令 -
您系统上的
virsh
手册页 - 开一个支持问题单