Qemu Guest Agent方式实现libvirt与虚机交互

一、qga简介

1、qga工具

qemu guest agent,简称qga,是一个运行在虚拟机内部的普通应用程序,可实现宿主机libvirt和虚拟机的通信,宿主机可通过向虚机中的qga发送命令控制虚机。

这种通信不依赖网络,而是通过virtio-serial的方式。使用virtio传递消息,对虚拟机和主机的网络设置没有任何要求,且效率更高,类似于VMware Tools。

 

2、宿主机libvirt和VM通信方式选择

宿主机若要和VM通信,需要满足以下两个条件:

1)vm内部和外部宿主机之间,打开一个通道,进行数据交互

2)vm内部需要安装agent,用于接收外部宿主机具体的指令,并反馈结果

其中,打开通道有2类方法:

(1)走网络:需预插入一张管理网卡,增加网络拓扑复杂性

(2)走设备:只需在VM内部和宿主之间建立一个设备通道,实现简单,为当前使用方式

QEMU通过串口设备的模拟,为宿主机和虚拟机提供了一个数据通道(channel),这个通道的两端分别是在虚拟机内看到的串口和在宿主机上看到的unix socket文件。

串口设备的速率较低,适合小数据量的交换。

 

3、基本实现原理

1)创建虚机时,需要在xml中配置channel段,写入相关参数,启动虚机时,会在宿主机上生成对应unix socket文件,同时,会在vm里生成一个字符设备,生成的unix socket和字符设备可以理解为一个channel隧道的两端

2)虚拟机镜像制作时,安装好qemu-ga守护进程并配置开启自启动,qemu-ga进程会监听字符设备。

3)宿主机上,将虚机中qga支持的rpc指令,通过channel发送,虚机中的qemu-guest-agent从串口设备收到数据后,执行相关指令。可实现文件读写、密码修改等

 

二、制作Guest镜像,部署qemu-ga

1、linux虚机安装qemu-ga

(1)rhel/centos安装qga

yum install qemu-guest-agent

(2)配置开机启动

systemctl enable qemu-guest-agent

(3)按需修改/etc/sysconfig/qemu-ga配置文件

[root@centos7-001 ~]# cat /etc/sysconfig/qemu-ga

# Default: /dev/virtio-ports/org.qemu.guest_agent.0

DEVPATH="/dev/virtio-ports/org.qemu.guest_agent.1"

# 禁用指定的指令

#BLACKLIST_RPC=""

 

2、Windows虚机安装qemu-ga

windows系统需要下载virtio-win,以及qemu-ga安装包

https://fedorapeople.org/groups/virt/virtio-win/direct-downloads/archive-virtio/

https://fedorapeople.org/groups/virt/virtio-win/direct-downloads/archive-qemu-ga/

 

三、xml配置virtio对应设备,创建虚机

1、libvirt在虚拟机创建时启动virtio通道,在xml虚机配置中加入virtio通道设备,如下:

<channel type='unix'>
    <source mode='bind' path='/var/lib/libvirt/qemu/org.qemu.guest_agent.1.instance-00000284.sock'/>
    <target type='virtio' name='org.qemu.guest_agent.1'/>
    <alias name='channel0'/>
    <address type='virtio-serial' controller='0' bus='0' port='1'/>
</channel>

其中,path为virtio通道在主机本地的映射节点文件,宿主机可以基于此socket文件,通过unix sock实现与虚拟机的通信

 </

qemu guest agent 是一种用于在宿主之间进行通信和交互的工具。它提供了各种功能,例如文件拷贝、状态查询、运行命令等。当我们需要运行在qemu中的操作系统进行交互时,可以通过在宿主之间建立通信管道来使用qemu guest agent。 要下载qemu guest agent,可以按照以下步骤进行: 1. 首先,我们需要在宿主上安装qemu软件包。可以使用系统包管理工具(如apt、yum等)来安装,也可以从qemu官方网站上下载安装包进行安装。 2. 安装完成后,我们需要进入qemu软件包的目录,找到并下载qemu guest agent的安装包。在官方网站的下载页面上可以找到适用于不同操作系统的安装包,选择适合你的操作系统版本进行下载。 3. 下载完成后,解压安装包并进入解压后的目录。 4. 根据操作系统的不同,执行不同的安装命令。通常情况下,可以运行类似于"./configure"、"make"、"make install"等命令来进行安装。 5. 安装完成后,我们可以在的配置文件中添加一些参数启用qemu guest agent。这些参数可以用来指定通信管道的类型、路径等。保存并关闭配置文件后,重启即可使配置生效。 通过以上步骤,我们就可以成功下载和安装qemu guest agent。安装完成后,我们可以使用相关命令或API来进行交互,并获得更好的拟化体验。
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值