虚拟机无响应,virsh console 卡住进不去。一个思路是重启后快速进入 console,看内核启动日志,往往能直接暴露根因。

现象

虚拟机无响应,virsh console 卡在下面这个地方:

virsh console vm-example
Connected to domain vm-example
Escape character is ^]

排查思路

virsh console 卡在这地方,分两步:

  1. 多等一会看看,能否进去,可能是启动慢;
  2. 等几分钟还不行,那就是有问题了。

一个思路是重新启动,然后快速的进入 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 指令集"是同一个根因,只是排查入口不同。