如何调查无响应的 KVM 来宾?

ech*_*o85 6 linux ubuntu kvm-virtualization

我可以采取哪些步骤来调查大约每两周冻结一次的 KVM 来宾?“冻结”是指当我尝试连接“ssh”或“virsh 控制台”时没有响应。主机是 Ubuntu(natty,11.04),使用 libvirt 来管理它的来宾,来宾是 Ubuntu(natty,11.04),两个服务器版本都没有安装窗口管理器。

如果我强制客人重置,它可以再正常工作一周。来宾系统日志中没有最近或相关的消息(表示内核崩溃等)。据我所知,可能是虚拟网络和 tty 中断并阻止我与客人交谈。主人还经营着另外三个几乎一模一样的客人,这些客人一整年都很稳定。如果来宾本身崩溃了,系统日志中不应该有一些指示吗?

磁盘是一个lvm逻辑卷,配置了virtio

% 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>
Run Code Online (Sandbox Code Playgroud)

Gus*_*uss 1

调查这类问题确实很困难,因为您需要隔离设置的不同功能并测试它们 - 这对于如此复杂的设置来说非常困难,而且重现过程需要两周的时间。

尝试做的第一件事是配置 syslog 以通过网络将日志发送到远程 syslog 服务(可能是在主机上运行的服务 - 您需要在 syslog 服务器上启用远程转发访问)以允许您捕获由于存储可用空间或同步问题而未进入来宾日志的错误。

如果这没有提供任何有用的信息,您可以尝试连接到来宾串行控制台(有关详细信息,请参阅此处)并将发生的任何情况记录到主机上的日志文件中。