5

测试开发之系统篇-按需创建测试虚拟机

 2 years ago
source link: https://my.oschina.net/candou/blog/5165217
Go to the source link to view the article. You can view the picture content, updated content and better typesetting reading experience. If the link is broken, please click the button below to view the snapshot at that time.

测试开发之系统篇-按需创建测试虚拟机 - 炒蚕豆吃蹦豆 - OSCHINA - 中文开源技术交流社区

首先,我们来了解一下KVM虚拟机有关的几个概念和工具。

  • kvm:基于内核的虚拟机(引擎)
  • qemu:用于模拟虚拟机IO设备
  • qemu-img:虚拟机磁盘管理工具
  • libvirt:虚拟化服务的API接口
  • virsh:基于libvirt实现的命令行工具
  • qemu-manager:图形化管理工具

新建KVM虚拟机时,可以指定另一磁盘文件作为BackingFile。BackingFile是一个只读的虚拟磁盘基础映像,可以在多个虚拟机间进行共享。基于BackingFile创建和运行虚拟机时,只会在自己的磁盘文件中增量地写入文件,从而提高效率、节省磁盘和维护成本。

虚拟机快照保存了虚拟机在某个指定时间点的状态,当我们在自动化测试过程中遭遇问题或错误时,可以利用快照保存、并恢复到执行中的某个时间点。借助BackingFile机制,虚拟机支持形如以下的多层依赖的快照链。

base image <-- vm01 <-- snap 1 <-- snap 2 <-- vm02(active)

可使用以下命令,将处于快照链中的某个虚机,导出形成一个独立的磁盘映像文件,其不再依赖其它映像。

qemu-img convert -O qcow2 vm02.qcow2 vm-templ.img

假设我们在用户的工作目录中,建立了以下目录。

  • kvm        根目录
  • iso       存放光盘镜像
  • base      存放BackingFile
  • share     存放共享磁盘镜像,用户存储测试工具、驱动等
  • image     存放测试机的磁盘镜像 xml 存放导出的虚拟机XML配置文件

下面用一个例子,给大家介绍下快速创建测试虚拟机的方法。

  • 按照上一篇文章中的步骤,创建一个Win10虚拟机;
  • 在虚拟机中,安装好工作中用到的测试软件;
  • 使用以下命令,新建一个共享工具磁盘;
qemu-img create -f qcow2 -o cluster_size=2M kvm/share/tools.qcow2 10G
  • 挂载共享磁盘到虚拟机,复制工具和文件到该盘中;
  • 移除该虚拟机,确认对话框中,请选择不删除相关磁盘文件;
  • 移动原虚机主磁盘文件到基础镜像目录,如kvm/base/windows/win10/x64-pro-zh_cn.qcow2
  • 执行以下命令,以上述基础镜像作为BackingFile,创建新的虚拟机磁盘;
qemu-img create -f qcow2 -o cluster_size=2M,backing_file=kvm/base/windows/win10/x64-pro-zh_cn.qcow2 kvm/image/test-win10-x64-pro-zh_cn-01.qcow2 40G
  • 图形界面中,新建测试虚拟机,挂在新建的虚拟机和共享磁盘。

除了使用图形界面的qemu-manager软件,这里也提供一种命令行的方法,大家可用于测试平台的代码中。

  • 导出虚拟机XML配置文件

virsh dumpxml test-win10-x64-pro-zh > kvm/xml/test-win10-x64-pro-zh.xml
  • 修改XML配置文件中的以下字段:

name
uuid
vcpu
memory和currentMemory
mac address
第1块disk的source file

  • 在第1块disk的Elemnt中,加入以下BackingFile有关的内容。
<backingStore type="file" index="2">
  <format type="qcow2"/>
  <source file="/home/aaron/kvm/base/windows/win10/x64-pro-zh_cn.qcow2"/>
<backingStore/>
  • 如需要用页面VNC访问虚拟机桌面,找到XML的graphics元素,修改成以下内容。
<graphics type="vnc" port="-1" autoport="yes" listen="0.0.0.0" passwd="P2ssw0rd">
  <listen type="address" address="0.0.0.0"/>
</graphics>
  • 使用以下命令定义虚拟机。

virsh define kvm/xml/test-win10-x64-pro-zh.xml
  • 使用以下命令启动虚拟机。

virsh start test-win10-x64-pro-zh
  • 使用以下命令获取虚拟机的VNC端口编号,在VNC软件中使用”5900+该数字“的端口,访问虚拟机远程桌面。
virsh vncdisplay test-win10-x64-pro-zh

常用命令:

# 查看虚拟机信息
qemu-img info --backing-chain kvm/image/test-win10-x64-pro-zh_cn-01.qcow2
# 修改虚拟机磁盘大小
qemu-img resize x64-pro-zh_cn.qcow2 +10G
# 查看虚拟机里列表
virsh list --all
# 查看虚拟机VNC端口
virsh vncdisplay win10-test
# 导出虚拟机XML配置文件
virsh dumpxml win10-test > win10-test.xml
# 创建虚拟机磁盘镜像
qemu-img create -f qcow2 -o cluster_size=2M,backing_file=base.qcow2 win10-test.qcow2 40G
# 定义、取消定义,启动、停止虚拟机
virsh define win10-test.xml
virsh start win10-test
virsh destroy win10-test
virsh undefine win10-test

About Joyk


Aggregate valuable and interesting links.
Joyk means Joy of geeK