虚拟机无响应,virsh console 卡住进不去。一个思路是重启后快速进入 console,看内核启动日志,往往能直接暴露根因。
现象
虚拟机无响应,virsh console 卡在下面这个地方:
virsh console vm-example
Connected to domain vm-example
Escape character is ^]
排查思路
virsh console 卡在这地方,分两步:
- 多等一会看看,能否进去,可能是启动慢;
- 等几分钟还不行,那就是有问题了。
一个思路是重新启动,然后快速的进入 virsh console,可能能看到 kernel 启动日志,可能有线索:
virsh destroy vm-example; virsh create vm-example.xml
virsh console vm-example
比如这里就打印了日志:
[ 2.313329][ T1] Run /init as init process
Fatal glibc error: CPU does not support x86-64-v2 # 这里就是关键点,cpu 不支持 x86-64-v2
[ 2.315336][ T1] Kernel panic - not syncing: Attempted to kill init! exitcode=0x00007f00
[ 2.316635][ T1] CPU: 0 PID: 1 Comm: init Not tainted 6.6.0-28.0.0.34.oe2403.x86_64 #1
[ 2.317855][ T1] Hardware name: QingCloud E3, BIOS rel-1.12.1-0-ga5cab58e9a3f-prebuilt.qemu.org 04/01/2014
[ 2.319339][ T1] Call Trace:
根因
日志里 Fatal glibc error: CPU does not support x86-64-v2 就是关键线索——CPU 不支持 x86-64-v2 指令集,导致 init 进程直接 panic。
小结
virsh console卡住,先等一会,可能是启动慢;- 等几分钟还不行,重启后快速进入 console,看内核启动日志;
- 启动日志往往能直接暴露根因(比如这里就是 CPU 指令集不支持);
- 这个案例和"现代 OS 不支持默认 qemu 指令集"是同一个根因,只是排查入口不同。