学习
实践
活动
工具
TVP
写文章
专栏首页虚拟化云计算qemu-guest-agent原理及实践

qemu-guest-agent原理及实践

QEMU Guest Agent是运行在虚拟机内部的一个守护程序(qemu-guest-agent.service),用它来辅助Hypervisor实现对Guest的管理。QEMU为宿主机和虚拟机提供了一个数据通道(channel),这个通道的两端分别是在虚拟机内看到的串口和在宿主机上看到的unix socket文件。宿主机与虚拟机内的qga通讯就扩展了对虚拟机的控制能力,例如在宿主机上获取虚拟机的ip地址等。

libvrit提供了专门的 virDomainQemuAgentCommand API(对应virsh qemu-agent-command命令)来和qemu-guest-agent通讯,另外i有些libvirt内置api也可以支持qga,例如reboot、shutdown等。

下面的实践分为两种方式,虚拟机的channel的target的name使用org.qemu.guest_agent.0和不是用org.qemu.guest_agent.0。两种方式在libvirt和宿主机中的qemu-guest-agent中都有所不同。

使用org.qemu.guest_agent.0

宿主机上libvirt的虚拟机xml配置channel:

<channel type='unix'>
   <source mode='bind' path='/var/lib/libvirt/qemu/org.qemu.guest_agent.0'/>
   <target type='virtio' name='org.qemu.guest_agent.0'/>
</channel>

注意这里target的name要使用org.qemu.guest_agent.0

虚拟机内部:

# yum install qemu-guest-agent
# setenforce 0
# systemctl restart qemu-guest-agent.service

在宿主机上测试功能:

virsh # qemu-agent-command centos '{"execute":"guest-info"}'
virsh # qemu-agent-command centos '{"execute":"guest-network-get-interfaces"}'
virsh # reboot --mode agent centos

上面的命令直接读出了虚拟机中的ip地址信息。

不使用org.qemu.guest_agent.0

如果在宿主机上libvirt的xml配置channel中target的name不是org.qemu.guest_agent.0,例如下面的org.qemu.guest_agent.1。

那么在宿主机上的libvirt将不会建立与socket建立连接。在虚拟机上qemu-guest-agent服务也无法运行。

宿主机上的libvirt的xml:

<channel type='unix'>
   <source mode='bind' path='/var/lib/libvirt/qemu/org.qemu.guest_agent.1'/>
   <target type='virtio' name='org.qemu.guest_agent.1'/>
</channel>

虚拟机内:

那么不使用org.qemu.guest_agent.0的情况下怎么处理呢?

首先,在虚拟机内部通讯串口的名字变为了org.qemu.guest_agent.1,此时需要手动修改/lib/systemd/system/qemu-guest-agent.service文件,把所有的默认org.qemu.guest_agent.0改为用户配置的名字org.qemu.guest_agent.1。

其次,在宿主机上自己去连接socket文件:

[root@node2 ~]# socat unix-connect:/var/lib/libvirt/qemu/org.qemu.guest_agent.1 readline
{"execute": "guest-info"}

ovirt-guest-agent

ovirt-guest-agent是和qemu-guest-agent并列的一个概念。在使用oVirt作为虚拟化管理时,虚拟机内部安装下面三个工具,和ovirt配合能够提高虚拟机的用户体验和性能。

oVirt Guest Agent:原理与qemu-guest-agent类似,但是提供的功能有所区别。

Spice Agent:提高spice连接虚拟机的用户体验。

VirtIO Drivers:包含一些驱程序,VirtIO Serial、VirtIO SCS、VirtIO Network、Memory Ballooning

qemu:

https://wiki.qemu.org/Features/GuestAgent

libvirt:

https://wiki.libvirt.org/page/Qemu_guest_agent


关注本公众号,了解更多关于云计算虚拟化的知识。

文章分享自微信公众号:
虚拟化云计算

本文参与 腾讯云自媒体分享计划 ,欢迎热爱写作的你一起参与!

作者:kvm虚拟化
原始发表时间:2018-04-25
如有侵权,请联系 cloudcommunity@tencent.com 删除。
登录 后参与评论
0 条评论

相关文章

  • etcd原理及实践

    原文地址:https://www.cnblogs.com/panpanwelcome/p/8242418.html

    二狗不要跑
  • Monogo实践及原理

    MongoDB 将数据存储为一个文档,数据结构由键值(key=>value)对组成。MongoDB 文档类似于 JSON 对象。字段值可以包含其他文档,数组及文...

    mikelLam
  • https原理及实践

    转载请注明出处 安全知识 网络安全问题 数据机密性 在网络传输数据信息时,对数据的加密是至关重要的,否则所有传输的数据都是可以随时被第三方看到,完全没有机密性可...

    863987322
  • DockerSwarm实践及原理

    Swarm 是使用Docker 引擎内置的集群管理和编排工具。Swarm集群的框架与Hadoop集群或其他分布式系统类似,它也是由节点构成,每一个节点就是一台主...

    mikelLam
  • VictoriaMetrics原理及实践

    VictoriaMetrics,是一个快速高效、经济并且可扩展的监控解决方案和时序数据库。

    mikelLam
  • Lvs原理及实践

    LB集群的架构和原理很简单,就是当用户的请求过来时,会直接分发到Director Server上,然后它把用户的请求根据设置好的调度算法,智能均衡地分发到后端真...

    mikelLam
  • HTTP协议原理及实践

    HTTP是在应用层,基于传输层 0x1 低三层 物理层主要作用是定义物理设备如何传输数据 数据链路层在通信的实体间建立数据链路连接 网络层为数据在结...

    慕白
  • RGBD融合原理及实践[通俗易懂]

    好久没更新博客了,主要是因为懒,最近有些得闲,决定纪录下之前的工作。RT,RGBD数据融合其实就是将3D摄像机的RGB与Depth数据做融合显示的过程,做法也不...

    全栈程序员站长
  • HTTP协议原理及实践

    HTTP是在应用层,基于传输层 0x1 低三层 物理层主要作用是定义物理设备如何传输数据 数据链路层在通信的实体间建立数据链路连接 网络层为数据在结...

    慕白
  • dbunit实现原理及最佳实践

    在使用dbunit写单元测试时,强烈建议先熟悉其底层的实现原理,否则可能导致数据表中的数据被清空的风险(尽管测试数据不如线上数据重要,但如果大量的测试数据被清空...

    saintyyu
  • 技术干货丨fastText原理及实践

    fastText是Facebook于2016年开源的一个词向量计算和文本分类工具,在学术上并没有太大创新。但是它的优点也非常明显,在文本分类任务中,fastTe...

    达观数据
  • iOS 代码染色原理及技术实践

    随着业务的迅速发展,业务代码逻辑的复杂度增加。QA 测试的质量对于产品上线后的稳定性更加重要。一般 QA 测试的工作流程分为两大项:自动化测试和人工测试。这两种...

    ios-lan
  • Flink CDC 原理及生产实践

    MySQL CDC连接器允许从MySQL数据库读取快照数据和增量数据。本文档根据官网翻译了如何设置MySQL CDC连接器以对MySQL数据库运行SQL查询。

    王知无-import_bigdata
  • Java 动态调试技术原理及实践

    调试是发现和减少计算机程序或电子仪器设备中程序错误的一个过程。最常用的断点调试技术会在断点位置停顿,导致应用停止响应。本文将介绍一种Java动态调试技术,希望能...

    美团技术团队
  • Apache Beam 架构原理及应用实践

    导读:大家好,很荣幸跟大家分享 Apache Beam 架构原理及应用实践。讲这门课之前大家可以想想,从进入 IT 行业以来,不停的搬运数据,不管职务为前端,还...

    Spark学习技巧
  • Spark 以及 spark streaming 核心原理及实践

    作者在接触spark以及spark streaming之后,对spark技术的使用的经验积累以及心得体会,在此分享给大家。本文依次从spark生态,原理,基本概...

    蒋专

扫码关注腾讯云开发者

领取腾讯云代金券