写点什么

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

发布于: 2 小时前

首先,我们来了解一下 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配置文件
复制代码


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


  1. 按照上一篇文章中的步骤,创建一个 Win10 虚拟机;

  2. 在虚拟机中,安装好工作中用到的测试软件;

  3. 使用以下命令,新建一个共享工具磁盘;


qemu-img create -f qcow2 -o cluster_size=2M kvm/share/tools.qcow2 10G
复制代码


  1. 挂载共享磁盘到虚拟机,复制工具和文件到该盘中;

  2. 移除该虚拟机,确认对话框中,请选择不删除相关磁盘文件;

  3. 移动原虚机主磁盘文件到基础镜像目录,如 kvm/base/windows/win10/x64-pro-zh_cn.qcow2。

  4. 执行以下命令,以上述基础镜像作为 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
复制代码


  1. 图形界面中,新建测试虚拟机,挂在新建的虚拟机和共享磁盘。


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


  1. 导出虚拟机 XML 配置文件


virsh dumpxml test-win10-x64-pro-zh > kvm/xml/test-win10-x64-pro-zh.xml
复制代码


  1. 修改 XML 配置文件中的以下字段:


  • name

  • uuid

  • vcpu

  • memory 和 currentMemory

  • mac address

  • 第 1 块 disk 的 source file


  1. 在第 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/>
复制代码


  1. 如需要用页面 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>
复制代码


  1. 使用以下命令定义虚拟机。


virsh define kvm/xml/test-win10-x64-pro-zh.xml
复制代码


  1. 使用以下命令启动虚拟机。


virsh start test-win10-x64-pro-zh
复制代码


  1. 使用以下命令获取虚拟机的 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
# 转换虚拟机镜像qemu-img convert -O qcow2 vm02.qcow2 vm-templ.img
# 定义、取消定义,启动、停止虚拟机virsh define win10-test.xmlvirsh start win10-testvirsh destroy win10-testvirsh undefine win10-test
复制代码

专题目录

发布于: 2 小时前阅读数: 3
用户头像

还未添加个人签名 2020.04.30 加入

禅道是一款专业的国产开源研发项目管理软件,集产品管理、项目管理、质量管理、文档管理、组织管理和事务管理于一体,完整覆盖了研发项目管理的核心流程。

评论

发布
暂无评论
测试开发之系统篇-按需创建测试虚拟机