22 创建 VM Guest 的崩溃转储 #
22.1 简介 #
每当 VM 崩溃时,有用的做法是收集 VM 内存的核心转储以进行调试和分析。对于物理机,Kexec 和 Kdump 会负责收集崩溃转储。对于虚拟机,如何收集崩溃转储取决于 Guest 是全虚拟化 (FV) 还是半虚拟化 (PV) 计算机。
22.2 为全虚拟化计算机创建崩溃转储 #
要查看 FV 计算机的崩溃转储,请使用适用于物理机的相同过程 — 使用 Kexec 和 Kdump。
22.3 为半虚拟化计算机创建崩溃转储 #
与在 FV 中不同,Kexec/Kdump 在半虚拟化计算机中不起作用。PV Guest 的崩溃转储必须由主机工具堆栈执行。如果为 Xen domU 使用 xl
工具堆栈,xl dump-core
命令将生成转储。对于基于 libvirt
的 VM Guest,virsh dump
命令可提供相同的功能。
您可以使用 VM Guest 配置中的 on_crash
设置来配置核心转储自动收集。此设置将告知主机工具堆栈在 VM Guest 遇到崩溃时该如何处理。xl
和 libvirt
中的默认值都是 destroy
。用于自动收集核心转储的有用选项是 coredump-destroy
和 coredump-restart
。
22.4 附加信息 #
第 1.3 节 “虚拟化模式”中介绍了全虚拟化与半虚拟化虚拟机之间的差别。
第 18 章 “Kexec 和 Kdump”中提供了有关 Kexec/Kdump 机制的详细信息。
有关
xl
配置语法的详细信息,请参见 xl.cfg 手册页 (man 5 xl.cfg
)。有关
libvirt
XML 设置的细节,请参见 https://libvirt.org/formatdomain.html#events-configuration。