定制qga(qemu-guest-agent)命令

本文详细介绍了如何在libvirt-qemu-kvm平台上定制qemu-guest-agent(qga)命令,包括qga的介绍、定制前的准备工作、具体定制步骤,以及如何测试和打包新命令。通过修改qapi-schema.json和C源码,可以实现无返回值、带参数、处理错误、返回自定义类型和列表等功能的命令定制。
摘要由CSDN通过智能技术生成

 

博客已迁移,新博客地址:https://www.wxtechblog.com

 

一、libvirt-qemu-kvm平台是什么

二、qga介绍

三、定制前的准备工作

四、如何定制qga命令

 

一、libvirt-qemu-kvm平台是什么

  • 简单来说,是一套虚拟机平台,是目前很多云平台的底层软件支撑,如云平台openstack底层就使用了这套软件,qemu-guest-agent是里面的一个工具。
  • 严格来说,这套平台是由3部分组成的,正如名称所示,是由libvirt,qemu,kvm组成。
(一) libvirt是什么?

按官网的介绍来说,libvirt是

  • 管理虚拟化主机的工具集
  • 可以通过多种编程语言访问(也就是调用),如C、Python、Perl、Java,从而使用这些编程语言就可以管理物理主机与虚拟机
  • 以开源许可协议方式授权
  • 致力于支持多平台:Linux、FreeBSD、Windows、OS-X
  • 被许多应用软件使用

    上面这些没有说的是,libvirt提供API供其它程序调用,支持管理多种虚拟机hypervisor,例如Xen,qemu-kvm

(二) qemu是什么?

  • 模拟器:
运行为其它平台编译的程序或OS,如在X86 PC上运行arm平台的程序
  • 虚拟机:
运行与本地平台相同类型的虚拟机。可以在xen环境下运行,也可以基于KVM运行。当基于KVM时,qemu可以虚拟化X86、基于PowerPC的服务器和嵌入式系统、S390、ARM等。
 

(三) KVM是什么?

  • 英文全称为:Kernel-Based Virtual Machine,翻译为中文为“基于内核的虚拟机”。
  • 是Linux内核的一个可加载模块,通过调用Linux本身内核功能,实现对CPU的虚拟化和内存的虚拟化,使Linux内核成为虚拟化层。KVM需要硬件支持虚拟化,比如vmx(intel),svm(amd)。

(四)分工

  • libvirt提供管理工具
  • qemu-kvm实现虚拟机,这其中,qemu实现除CPU和内存外的其它设备,如磁盘,网卡的虚拟化;KVM实现内存和CPU的虚拟化。

二、qga介绍

  • qemu-guest-agent,简称qga,是虚拟机内部的守护进程,用来接收物理主机发出的命令,对虚拟机进行注入操作或获取虚拟机信息。
  • qga有很多命令,比如查看虚拟机CPU信息的guest-get-vcpus子命令。使用命令guest-info可以查看qga中可以调用的子命令列表。
  • 在qga执行子命令guest-info后,可以发现有很多命令。但这些命令,都是功能固定的,即一条子命令只能实现一种特定的功能,如子命令guest-file-write只能实现将数据写入虚拟机中文件的功能。这样一来,导致qga虽然命令很多,而我们却无法对虚拟机进行更多的控制。
  • 好在qga是开源的,我们能够获取到源码。有了源码后,我们可以直接修改源码,定制出一款满足需求的qga。

三、定制前的准备工作

在进行定制前,先进行一些准备工作,例如测试的方法,如何制作软件包。

3.1 测试新命令的方法

先说明如何测试新的qga命令。接下来的示例中,都可以用这一方法来测试

测试环境(X86):

 vm              : CentOS Linux release 7.2.1511

 qga             : qemu-guest-agent-2.3.0-4.el7

 host            : CentOS Linux release 7.3.1611

 virsh            : 3.2.0

 qemu-kvm   :qemu-kvm-1.5.3-141.el7_4.6

 

(1) 首先,虚拟机XML配置文件中要存在如下内容:

 

<channel type='unix'>
  <target type='virtio' name='org.qemu.guest_agent.0'/> 
</channel> 

 

(2) 使用virsh命令启动虚拟机,假设虚拟机名字为live-centos7.2

virsh start live-centos7.2

(3) 在主机上执行命令的方法:

virsh qemu-agent-command live-dwcentos7.2 --cmd '{"execute":"guest-info"}'

  输出内容如下:

证明qga命令可以正常使用。

3.2 如何制作rpm包

使用的是centos的系统,在安装定制化的qga时,使用rpm方式安装比较好。下面介绍一下创建qga安装包的方法(以qemu-guest-agent-2.3.0-4.el7为例)。

3.2.1 安装源码包

  • 先下载源码包qemu-guest-agent-2.3.0-4.el7.src.rpm
  • 使用命令安装:
rpm -i qemu-guest-agent-2.3.0-4.el7.src.rpm
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值