qemu guest agent

qemu guest agent 是一个运行在虚拟机内部的普通应用程序,类似vmware的vmware-tools.

其目的是实现一种宿主机和虚拟机进行交互的方式,这种方式不依赖于网络,而是依赖于VirtIO serial

qemu提供了串口设备的模拟及数据交换的通道,最终呈现出来的是一个串口设备(虚拟机内部)和一个unix socket文件(宿主机上)。

通过qemu guest agent, 宿主机可以控制虚拟机实现冻结/恢复/整理文件系统(freeze and thaw filesystems)、显示虚拟机ip等功能。

2.1 为已存在虚拟机开启

HOST宿主机操作:

virsh shutdown guest 
# 创建virtios-serial设备配置文件
 
cat << EOF > agent.xml
<channel type='unix'>
   <target type='virtio' name='org.qemu.guest_agent.0'/>
</channel>
EOF
 
# attach-device到虚拟机
virsh attach-device guest agent.xml --config
# 重启虚拟机
virsh start guest

2.2 新安装虚拟机时开启

virt-install创建虚拟机时指定channel参数:

# 添加以下参数到virt-install命令之后
--channel char_type='unix',target_type='virtio',name='org.qemu.guest_agent.0'

3.1 CentOS-7

yum install -y qemu-guest-agent pciutils
systemctl start qemu-guest-agent
systemctl enable qemu-guest-agent
lspci |grep 'Virtio console'

3.2 windows

# 为windows虚拟机挂载virtio-win.iso(HOST上执行)
virsh change-media win7-2 vdb /data/virtio-win.iso
  1. 然后去windows安装新设备驱动;
  2. 安装agent服务:virtio-win\guest-agent\qemu-ga-x64.msi;
  3. 完成后重启windows;

#HOST上执行(windows很多命令都不支持,包括查看IP和文件系统-201610-29)
#查看虚拟机的IP和网卡情况
virsh domifaddr win7-2 --source agent
#查看虚拟机时间
virsh domtime win7-2 --pretty
#修改虚拟机时间为HOST时间
virsh domtime win7-2 --now
#修改guest的用户密码,这个绝了...
virsh set-user-password <domain> <user> <password>
#查看guest的挂载点情况
virsh domfsinfo <domain>

  • virtualization/kvm/qemu-guest-agent.txt
  • 最后更改: 2019/04/16 18:31
  • (外部编辑)