重学kvm之三(qemu guest agent原理及安装教程)

qemu-guest-agent的作用

1、为了更好的管理虚拟机,需要有某种机制与虚拟机进行通信,这样既能获取虚拟机信息,也能向虚拟机发出指令(如文件系统的冻结解冻,挂起,安全关闭等)
2、vmware通过在虚拟机安装vmware tool实现,kvm则需要安装qemu guest agent并正确运行,除此之外还需要为kvm虚拟机配置virtio串行控制器
3、虚拟机上存在一个名为channel qemu-ga的设备是 qemu guest agent 这个程序正确运行的必要前提。因为virsh 和virt-manager等基于libvirt的程序与虚拟机通信是通过virtio串行控制器设备进行的。(才能使virsh 等命令更强大)
4、现在不管是cockpit,virt-manager还是virt-install创建linux虚拟机,默认都会配置virtio串口控制器和qemu-ga通道设备,而且centos7之后的安装程序一旦检测出有virtio串口控制器的设备就会自动安装qemu guest agent。
5、qemu-ga通道设备的名字,org.qemu.guest_agent.0   (虚拟机内部的设备文件 /dev/virtio-ports/org.qemu.guest_agent.0)

Linux虚拟机如何正确安装并运行qemu-guest-agent

注意:不管是virt-install 还是 virt-manager 还是Cockpit在创建linux虚拟机时,都会默认配置VirtIO串口控制器和qemu-ga通道设备,而RHEL/CentOS7之后的发行版在安装时一旦检测到用VirtIO串口控制器还会自动安装 qemu-guest-agent 服务。

#安装
    yum install qemu-guest-agent  或者 apt install qemu-guest-agent

#启动并设置开机启动
    systemctl start qemu-guest-agent ; systemctl enable qemu-guest-agent ; 

#在虚拟机内部查看 qemu-guest-agent 程序运行状态
    systemctl status qemu-guest-agent.service

Windows虚拟机如何正确安装并运行qemu-guest-agent

注意:不管是virt-install 还是 virt-manager 还是Cockpit在创建windows虚拟机时,仅会默认配置VirtIO串口控制器设备,而没有qemu-ga通道设备,所以需要我们手动添加

命令行方式

1、普通虚拟机:在客户机的 XML 文件中添加以下内容并保存更改
<channel type='unix'>
   <target type='virtio' name='org.qemu.guest_agent.0'/>
</channel>

2、运行中的虚拟机:
    # cat agent.xml
<channel type='unix'>
   <target type='virtio' name='org.qemu.guest_agent.0'/>
</channel>

    virsh attach-device kvm_windows2008 agent.xml       #将 QEMU 客户机代理附加到正在运行的虚拟机

图形化方式
file

有了VirtIO串口控制器(在windows的设备管理器显示为 PCI简单通信控制器) 和 qemu-ga通道设备 后还需要,在虚拟机内部安装 qemu-guest-agent 和 qemu-ga软件并常驻运行

下载qemu-guest-agent for windows程序(virt-win.iso中包含了一个virtio-win-guest-tool.exe,这个程序除了包含多种virtio驱动外还包括 qemu guest agent、qemu guest agent vss provider 和spice agent 共3个代理程序,点击后默认安装即可)
    #若是windows server 2003 可以下载 virtio-win-0.1.100.iso或者 virtio-win-0.1.118.iso
    https://fedorapeople.org/groups/virt/virtio-win/direct-downloads/archive-virtio/

下载qemu-ga for windows程序
    https://fedorapeople.org/groups/virt/virtio-win/direct-downloads/archive-qemu-ga/

各种花式操作 正确运行qemu-guest-agent的虚拟机

virsh shutdown kvm7022 --mode=agent #在内部关闭虚拟机,比--mode=acpi 更可靠(acpi高级电源管理,这也是从内部关闭虚拟机)
virsh reboot kvm7022 --mode agent   #重启虚拟机(相当于在虚拟机内部进行重启),比 virsh reboot kvm7022 --mode acpi 更可靠
virsh domifaddr kvm7022 --source agent  #获取虚拟机各个网卡的ip

#注意,宿主机通过qemu guest agent与虚拟机交互的范围大小和功能多少还取决于虚拟机os的版本,比如windows2003仅支持很少的命令
virsh qemu-agent-command kvm7022 '{"execute":"guest-info"}'               #查询宿主机能通过qemu guest anget 向虚拟机发送哪些指令
virsh set-user-password kvm7022 --user root --password testmima@123     #将kvm7022的root密码修改成testmima123

附:检查宿主机是否创建了channel qemu-ga 通道 和 qemu-guest-agent 的virtio串口控制器

file
虚拟机内部如何查看该设备

    /dev/virtio-ports/org.qemu.guest_agent.0
声明:本文为原创,作者为 辣条①号,转载时请保留本声明及附带文章链接:https://boke.wsfnk.com/archives/986.html
谢谢你请我吃辣条谢谢你请我吃辣条

如果文章对你有帮助,欢迎点击上方按钮打赏作者

最后编辑于:2023/3/12作者: 辣条①号

现在在做什么? 接下来打算做什么? 你的目标什么? 期限还有多少? 进度如何? 不负遇见,不谈亏欠!

暂无评论

发表回复

您的电子邮箱地址不会被公开。 必填项已用*标注

arrow grin ! ? cool roll eek evil razz mrgreen smile oops lol mad twisted wink idea cry shock neutral sad ???

文章目录