qga是一个运行在虚拟机内部的普通应用程序(可执行文件名称默认为qemu-ga),其目的是实现一种宿主机和虚拟机进行交互的方式,这种方式不依赖于网络,而是依赖于virtio-serial(默认首选方式)或者isa-serial,而QEMU则提供了串口设备的模拟及数据交换的通道,最终呈现出来的是一个串口设备(虚拟机内部)和一个unix socket文件(宿主机上)。qga通过读写串口设备与宿主机上的socket通道进行交互,宿主机上可以使用普通的unix socket读写方式对socket文件进行读写,最终实现与qga的交互,交互的协议与qmp(QEMU Monitor Protocol)相同(简单来说就是使用JSON格式进行数据交换),串口设备的速率通常都较低,所以比较适合小数据量的交换。

如下就是利用qemu-ga修改linux虚拟机密码的过程:

环境准备:

  1. 计算节点libvirt 需要1.2.16及以上版本
  2. 虚拟机镜像上安装qemu-guest-agent,版本在2.3.0及以上

实验步骤:

  1. 给虚拟机注册hw_qemu_guest_agent属性,创建时注册,或者通过update

glance image-create --name centos7 \

--disk-format qcow2 \

--container-format bare \

--file centos7.qcow2 \

--is-public True \

--property hw_qemu_guest_agent=yes \

--progress

glance image-update  53ca6748-cae2-44a7-9dbb-baa310869ef2 \

--property hw_qemu_guest_agent=yes

 

  1. 启动虚拟机

nova boot test-password --nic  net-id=net-uuid --image centos7  --flavor 5

  1. 修改虚拟机密码

nova set-password  dfaaa6fc-8107-4ed7-9f86-2dcb28d8b86b

 

输如两次123456

再去虚拟机登陆即可

Logo

华为开发者空间,是为全球开发者打造的专属开发空间,汇聚了华为优质开发资源及工具,致力于让每一位开发者拥有一台云主机,基于华为根生态开发、创新。

更多推荐