我的qemu
虚拟机崩溃了好几次,因为管理程序中的 HDD 没有剩余空间。这让我想知道是否有可能为quemu
虚拟机设置日志记录/调试。我尝试使用-D /tmp/qemu-debug-log
命令启动虚拟机:
qemu-system-i386 -D /tmp/qemu-debug-log -monitor pty -device e1000,netdev=tap0 -netdev tap,id=tap0 -m 512M -display vnc=:1 -drive file=FreeBSD10.2
..但这甚至没有创建/tmp/qemu-debug-log
文件。
另外,qemu
似乎没有写入messages
或内核环形缓冲区(dmesg
)。为qemu
虚拟机启用日志记录的最佳实践是什么?
答案1
qemu
命令接受一个-D
可以创建日志文件的简单开关。例如,包含-D ./log.txt
将在您的工作目录中创建“log.txt”。
您可以通过以下方式访问更多日志记录/调试选项 QEMU监控器(例如qemu -monitor stdio
)。
答案2
如果在启动 QEMU 时使用该-d <component>
参数,它将启用该组件的调试。如果您有 QEMU 源代码并且想要查看给定组件的详细调试,这非常有用。
例如,传递-d cpu_reset
将启用 CPU_LOG_RESET 调试,这将“在 CPU 重置之前显示 CPU 状态”。看qemu/util/log.c获取日志记录选项的完整列表。
默认情况下,日志写入/tmp/qemu.log,但您可以使用参数指定不同的日志文件-D <logfile>
。
答案3
QEMU 提供的任何日志记录选项对于您的需要来说都太低级了:您的问题不是虚拟硬件行为不当,而是虚拟机内的软件需要关注。
在这方面,虚拟机与真实机器没有什么不同,并且解决方案是相同的。您的问题表明虚拟机正在运行 FreeBSD,因此您应该检查使用rsyslog
通过网络连接将日志推送到外部系统日志服务器(可能是您的主机)。
(我对 BSD 不太熟悉,所以我不能 100% 确定这rsyslog
是正确的或唯一的解决方案,但该关键字应该可以帮助您入门。)