searchusermenu
  • 发布文章
  • 消息中心
点赞
收藏
评论
分享
原创

libvirt panic device配置与实战

2023-06-29 05:45:23
25
0

一、panic device元素介绍

虚机可以通过Libvirt xml来定义创建,在xml的配置中可以配置CPU,内存,磁盘,网卡及其他外设。我们这里主要讨论devices元素下panic device子元素。

panic device可以允许libvirt从qemu guest端接收panic通知。这个功能对于以下guest类型总是激活的:

  • pSeries guests,因为是由guest固件实现的。
  • S390 guests,因为是S390架构的一个组成部分。

对于上面列出的guest 类型,libvirt自动添加一个panic元素到xml里。

 

panic配置用法示例:

...

<devices>

  <panic model='hyperv'/>

  <panic model='isa'>

    <address type='isa' iobase='0x505'/>

  </panic>

</devices>

...

model

model属性:可选,用于指定panic设备类型。当该属性未配置,使用的panic类型取决于hypervisor和guest arch。

mode取值

含义

isa

用于ISA pvpanic设备

pseries

默认值,仅对pseries guest有效

hyperv

用于hyper-V crash CPU特性。从libvirt 1.3.0开始,只支持QEMU和KVM

s390

s390 guest的默认值。从libvirt 1.3.5开始支持。

pvpanic

用于PCI pvpanic设备。从libvirt 9.1.0开始支持,仅支持QEMU。

address

panic设备地址。默认ioport是0x505。绝大多数用户不需要指定地址,对于s390,pseries,hyperv类型,是禁止指定地址的。

二、实战:

在我们的ctyunos系统宿主机上进行如下配置实战。

1、类型支持情况

pseries和s390只支持相应guest类型,所以这种配置在修改xml后保存就会有相应提示报错:

 

因我们使用的Libvirt6.9,还不支持pvpanic,所以配置为pvpanic也不行:

 

配置为hyperv可行,虚机能够正常启动:

配置为isa可行,虚机能够正常启动:

2、构造panic,libvirt接收通知

下面以配置为isa类型为例来展开。

step1:配置xml

<panic model='isa'>

  <address type='isa' iobase='0x505'/>

</panic>

step2: 修改虚机/etc/default/grub,增加crash_kexec_post_notifiers配置,如:

       systemctl disable kdump

      systemctl stop kdump

然后重启虚机

step3:宿主机上监听虚机panic事件:virsh event vm_h37_001 --all

step4:虚机内部触发crash:   

echo c > /proc/sysrq-trigger

之后虚机状态为shutoff

step5:宿主机上监听到panic事件,且查询到虚机状态为shut off(crashed)

3、同时配置kdump和 isa panic

guest内部同时激活kdump和isa panic时,当发生crash事件,kdump会捕获并处理crash,但是host主机的libvirtd就无法获得这个触发信息,则日志不能记录。只有guest内部关闭了kdump之后,host主机才能获得pvpanic信号。

当同时激活了kdump和 isa panic设备时,libvirt不能够获得panic信息,监听到的信息如下:

而虚机内部能够查到生成的kdump文件:

0条评论
0 / 1000
h****n
3文章数
0粉丝数
h****n
3 文章 | 0 粉丝