每当虚拟机崩溃时,收集虚拟机的内存核心转储以便于调试和分析都很有用。对于物理机器,Kexec 和 Kdump 会负责收集崩溃转储。对于虚拟机,这取决于 Guest 是完全虚拟化 (FV) 还是准虚拟化 (PV)。
与完全虚拟化不同,Kexec/Kdump 在半虚拟化机器中不起作用。半虚拟化客户机的崩溃转储必须由主机工具堆栈执行。如果使用 xl 工具堆栈用于 Xen domU,则 xl dump-core 命令会生成转储。对于基于 libvirt 的虚拟机客户机,virsh dump 命令提供相同的功能。
可以使用 VM 客户机配置中的 on_crash 设置来配置自动收集核心转储。此设置告诉主机工具堆栈如果 VM 客户机遇到崩溃该怎么做。在 xl 和 libvirt 中的默认值都是 destroy。自动收集核心转储的有用选项是 coredump-destroy 和 coredump-restart。
完全虚拟化和半虚拟化虚拟机器之间的区别在 第 1.3 节,“虚拟化模式” 中有描述。
有关 Kexec/Kdump 机制的详细信息包含在 “系统分析和调优指南”一书的第 17 章“Kexec 和 Kdump” 中。
有关 xl 配置语法的更多信息,请参阅 xl.cfg 手册页 (man 5 xl.cfg)。
有关 libvirt XML 设置的详细信息,请参阅 https://libvirt.org/formatdomain.html#events-configuration。