[linux][qemu]PVPanic的实现原理以及应用

前言:

在虚拟化场景下,我们尽量会尝试使用带外监控的方式,来发现虚拟机的异常。pvpanic就是一种常见的方式,虚拟化场景的windows蓝屏检查也是基于如此。

有了检查的能力,可以快速处理,回复业务执行,或者启用HA等。

分析:

1,isa device

由QEMU虚拟化出来设备,接在ISA总线上,默认使用IO port 0x505。

2,guest

加载pvpanic driver的时候,向kernel注册一个notifier到panic_notifier_list上。

Guest中发生kernel panic的时候,会通知panic_notifier_list上的所有notifier。

pvpanic的notifier写IO port 0x505。

3,qemu

QEMU截获到IO port 0x505写操作,感知到Guest发生了kernel panic。

把消息发给libvirt。这样,libvirt就可以处理对应的事件,其他用户进程也可以通过长连接,监控guest的panic。

4,how to

config libvirt xml : <panic model='isa'> <address type='isa' iobase='0x505'/> </panic> config guest boot arguments and reboot guest : append “crash_kexec_post_notifiers” after linux boot arguments listen guest panic event on host : #virsh event INSTANCEID –all trigger kernel panic on guest : #echo 1 > /proc/sys/kernel/sysrq #echo c > /proc/sysrq-trigger

5,about “crash_kexec_post_notifiers”

代码选自linux-4.4,如果没有配置“crash_kexec_post_notifiers”,那么,配置了kdump的情况下,会发生kdump,不会再继续执行到panic_notifier_list里面注册的notifier。

确认upstream,目前逻辑也是如此。

所以,需要在guest的boot args里面配置“crash_kexec_post_notifiers”确保带外可以监控到。

原文发布于微信公众号 - AlwaysGeek(gh_d0972b1eeb60)

原文发表时间:2018-11-09

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

发表于

我来说两句

0 条评论
登录 后参与评论

相关文章

来自专栏技术翻译

如何在DC / OS上构建高度可扩展的物联网平台

我最近一直在使用新的Percona-Server-MongoDB DC / OS服务,作为这项工作的一部分,我决定尝试使用Percona-Server-Mong...

19740
来自专栏极客云栖

无成本给网站服务器加入高可靠的WAF防护

据可靠的新闻网数据显示,阿里巴巴每天被黑客攻击的次数高达三亿多次。跨站攻击、CC攻击、DDOS攻击,甚至还有些站长遭遇了“可怕的”刷流量,作为一个普通的小站长,...

28430
来自专栏安恒信息

HTTP.sys 远程执行代码漏洞WAF应急响应

4月14日微软发布了一个针对IIS服务器的远程代码执行漏洞补丁,此漏洞危害非常大,远程执行代码漏洞存在于 HTTP 协议堆栈 (HTTP.sys) 中,当 HT...

30850
来自专栏FreeBuf

Xshell系列软件被植入后门,请尽快更新到最新版本

Xshell是一个强大的安全终端模拟软件,它支持SSH1, SSH2, 以及Microsoft Windows 平台的TELNET协议。Xshell 通过互联网...

38280
来自专栏JackeyGao的博客

使用DoMonit监控Docker

本篇的目的是介绍Python包Domonit, 一个基于Python语言开发的API封装的轻量监控程序.

12520
来自专栏安全领域

搭建你自己的Arduino IOT云服务器

如果你曾使用过一些新的支持Arduino的硬件平台进行开发,那么可能你已经在你的项目中使用了在线的IoT服务。在这篇文章中,我会演示如何通过搭建一个虚拟专用服务...

2K40
来自专栏直播系统开发

直播源码怎样搭建直播系统LNMP环境——PHP配置

前面两篇内容我们聊过了直播平台搭建前需要准备的内容,一切准备就绪之后就要进入正式的搭建部署环节了,本篇就先简单介绍下LNMP环境下的PHP配置。

1.2K70
来自专栏杨建荣的学习笔记

巧用shell脚本生成快捷脚本(r2第12天)

在升级的过程中,可能需要准备一些额外的脚本,比如说做数据迁移的时候为了考虑性能,需要做如下的额外工作: 1.将部分表置为nologging 2.将部分index...

29750
来自专栏北京马哥教育

用Docker搭建微信公众号

此文我将带大家用Docker来搭建一个微信公众号的后台,主要涉及Docker里运行JavaWeb的技术,一起来做这个有意思的事情吧! (如果你对Docker了解...

617110
来自专栏大魏分享(微信公众号:david-share)

Openshift的高可用架构设计

第一部分:高可用设计 一、Openshift架构 ? Openshift架构如上图,其核心组件有: ●Multiple Masters ●External e...

90440

扫码关注云+社区

领取腾讯云代金券