我有一个 kvm 虚拟机,它似乎会随机重新启动。我在 syslog 中没有看到任何有关重新启动、关闭、错误、核心转储、恐慌等的信息。主机上的 libvirtd 日志中也没有错误,qemu 日志中也没有错误,主机上也没有任何错误。
似乎某个随机进程可能正在调用虚拟机内的重新启动系统调用?我能想到的就只有这些了...
我如何确定是什么原因造成的?操作系统是Debian。
我有一个 kvm 虚拟机,它似乎会随机重新启动。我在 syslog 中没有看到任何有关重新启动、关闭、错误、核心转储、恐慌等的信息。主机上的 libvirtd 日志中也没有错误,qemu 日志中也没有错误,主机上也没有任何错误。
似乎某个随机进程可能正在调用虚拟机内的重新启动系统调用?我能想到的就只有这些了...
我如何确定是什么原因造成的?操作系统是Debian。
如果您不介意接触 C 代码,那么您可以编写一个简单的内核模块来拦截重新启动/关闭调用并通过
printk()
.这个答案可能是一个好的开始。要了解谁在调用您修改后的处理程序,请查看这个。
测试代码
我尝试开发上面的提示,并提出了以下代码。
在我自己的家庭系统(Ubuntu 22.04-LTS)上,它确实进行了编译并安装了内核模块,并且似乎可以使用一些符号:例如
__do_sys_swapon
:但是 中似乎有几个类似重新启动的调用
/proc/kallsyms
,所以恐怕您需要几个 kprobe,或者需要相当多的试验和错误。如果我从提示符中__do_sys_reboot
调用,似乎不会被记录。reboot
生成文件:
要编译,只需运行“
make
”。log-files
好吧,我首先会在以下位置检查我所知道的所有重要信息:less /var/log/syslog
less /var/log/messages
less /var/log/kern.log
less /var/log/dmesg