AI编程助手
AI免费问答

KVM--QEMU Guest Agent(十七)

爱谁谁   2025-08-06 08:28   812浏览 原创

qemu guest agent概述

QEMU Guest Agent是一种在虚拟机内部运行的守护进程(qemu-guest-agent.service),旨在协助Hypervisor管理虚拟机。QEMU通过在宿主机和虚拟机之间建立一个数据通道(channel),这个通道的两端分别是虚拟机内的串口和宿主机上的unix socket文件。这种设置允许宿主机通过qga扩展对虚拟机的控制能力,例如获取虚拟机的IP地址等。

libvirt提供了专门的virDomainQemuAgentCommand API(对应virsh qemu-agent-command命令)来与qemu-guest-agent通信。此外,libvirt还内置了支持qga的API,例如reboot、shutdown等。

  1. 编辑虚拟机
virsh edit vm01
  1. 在宿主机上的虚拟机XML中添加channel
<channel type="unix"><target name="org.qemu.guest_agent.0" type="virtio"></target></channel>
  1. 启动虚拟机
virsh start vm01
  1. 在Linux虚拟机中安装qemu-guest-agent
yum install qemu-guest-agent
setenforce 0
systemctl restart qemu-guest-agent.service

KVM--QEMU Guest Agent(十七)

  1. 在宿主机上进行测试
virsh qemu-agent-command vm01 '{"execute":"guest-info"}'
virsh qemu-agent-command vm01 '{"execute":"guest-network-get-interfaces"}'
virsh qemu-agent-command vm01 '{"execute":"guest-ping"}'
virsh reboot --mode agent vm01
virsh shutdown --mode agent vm01

KVM--QEMU Guest Agent(十七)

Windows virtio-win iso下载地址:

https://www.php.cn/link/55ae2484d29529c6925ac39b67603516

Windows qemu-ga安装包下载地址:

https://www.php.cn/link/a56aaa84688618331d4b0e77756d6c0f

qemu-guest-agent修改虚拟机用户密码

  1. guest-set-user-password

(1)在Windows虚拟机中安装qemu-ga-x86_64.msi程序

(2)qemu-agent-command命令中密码必须是base64编码格式

[root@kvm-node1 ~]# python
Python 2.7.5 (default, Oct 14 2020, 14:45:30) [GCC 4.8.5 20150623 (Red Hat 4.8.5-44)] on linux2
Type "help", "copyright", "credits" or "license" for more information.
>>> import base64
>>> print base64.b64encode('password')
cGFzc3dvcmQ=

(3)关闭虚拟机

virsh destroy win10

(4)修改win10的XML文件,添加如下配置

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

(5)启动虚拟机

virsh start win10

(6)使用qemu-agent-command命令guest-set-user-password修改密码

virsh qemu-agent-command win10 '{"execute":"guest-set-user-password","arguments":{"username":"admin","password":"cGFzc3dvcmQ=","crypted":false}}'
{"return":{}}
  1. virsh set-user-password

使用virsh set-user-password命令修改密码

virsh set-user-password --domain 6 --user root --password password
Password set successfully for root in 6

QEMU Guest Agent支持的指令

guest-exec guest-exec-status guest-file-close guest-file-flush guest-file-open guest-file-read guest-file-seek guest-file-write guest-fsfreeze-freeze guest-fsfreeze-freeze-list guest-fsfreeze-status guest-fsfreeze-thaw guest-fstrim guest-get-fsinfo guest-get-host-name guest-get-memory-block-info guest-get-memory-blocks guest-get-osinfo guest-get-time guest-get-timezone guest-get-users guest-get-vcpus guest-info guest-network-get-interfaces guest-ping guest-set-memory-blocks guest-set-time guest-set-user-password guest-set-vcpus guest-shutdown guest-suspend-disk guest-suspend-hybrid guest-suspend-ram guest-sync guest-sync-delimited

声明:本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn核实处理。