![如何调查无响应的 KVM 客户机?](https://linux22.com/image/568769/%E5%A6%82%E4%BD%95%E8%B0%83%E6%9F%A5%E6%97%A0%E5%93%8D%E5%BA%94%E7%9A%84%20KVM%20%E5%AE%A2%E6%88%B7%E6%9C%BA%EF%BC%9F.png)
我可以采取哪些步骤来调查每两周左右冻结一次的 KVM 客户机?“冻结”是指当我尝试使用“ssh”或“virsh console”连接时没有响应。主机是 Ubuntu (natty, 11.04),使用 libvirt 来管理其客户机,客户机是 Ubuntu (natty, 11.04),两个服务器版本均未安装窗口管理器。
如果我强制重置客户机,它可以正常工作一周。客户机系统日志中没有最近或相关的消息(表明内核崩溃等)。据我所知,可能是虚拟网络和 tty 中断并阻止我与客户机通信。主机运行另外三个几乎相同的客户机,这些客户机全年都很稳定。如果客户机本身崩溃了,系统日志中不应该有一些指示吗?
该磁盘是使用 virtio 配置的 lvm 逻辑卷
% cat /etc/libvirt/qemu/vm-et.xml
<domain type='kvm'>
<name>vm-et</name>
<uuid>8df572f1-e1dc-275a-4b9f-b7c322e2f5d3</uuid>
<memory>2048576</memory>
<currentMemory>2048576</currentMemory>
<vcpu>1</vcpu>
<os>
<type arch='x86_64' machine='pc-0.12'>hvm</type>
<boot dev='hd'/>
</os>
<features>
<acpi/>
</features>
<clock offset='utc'/>
<on_poweroff>destroy</on_poweroff>
<on_reboot>restart</on_reboot>
<on_crash>destroy</on_crash>
<devices>
<emulator>/usr/bin/kvm</emulator>
<!--<disk type='file' device='disk'>
<driver name='qemu' type='qcow2'/>
<source file='/usr/scratch/appliances/vm-et/ubuntu-kvm/tmpzwV0x3.qcow2'/>
<target dev='hda' bus='ide'/>
<address type='drive' controller='0' bus='0' unit='0'/>
</disk>-->
<controller type='ide' index='0'>
<address type='pci' domain='0x0000' bus='0x00' slot='0x01' function='0x1'/>
</controller>
<interface type='bridge'>
<mac address='52:54:00:5a:1f:b4'/>
<source bridge='br0'/>
<model type='virtio'/>
<address type='pci' domain='0x0000' bus='0x00' slot='0x03' function='0x0'/>
</interface>
<input type='mouse' bus='ps2'/>
<graphics type='vnc' port='-1' autoport='yes' listen='127.0.0.1'/>
<video>
<model type='cirrus' vram='9216' heads='1'/>
<address type='pci' domain='0x0000' bus='0x00' slot='0x02' function='0x0'/>
</video>
<memballoon model='virtio'>
<address type='pci' domain='0x0000' bus='0x00' slot='0x04' function='0x0'/>
</memballoon>
<disk type='file' device='disk'>
<source file='/dev/vg1/lv-et'/>
<target dev='vda' bus='virtio'/>
</disk>
<serial type="pty">
<source path="/dev/pts/3"/>
<target port="1"/>
</serial>
</devices>
</domain>
答案1
调查这类问题确实非常困难,因为您需要隔离设置的不同功能并对其进行测试 - 这对于如此复杂的设置来说非常困难,而且重现是一个长达两周的过程。
首先要尝试配置系统日志,通过网络将日志发送到远程系统日志服务(可能是在主机上运行的服务 - 您需要在系统日志服务器上启用远程转发访问),以便您捕获由于存储可用空间或同步问题而未进入客户日志的错误。
如果这没有提供任何有用的信息,您可以尝试挂接到客户机串行控制台(详情请参阅此处) 并将发生的任何事情记录到主机上的日志文件中。