首先,我们来了解一下KVM虚拟机有关的几个概念和工具。kvm:基于内核的虚拟机(引擎)qemu:用于模拟虚拟机IO设备qemuimg:虚拟机磁盘管理工具libvirt:虚拟化服务的API接口virsh:基于libvirt实现的命令行工具qemumanager:图形化管理工具 新建KVM虚拟机时,可以指定另一磁盘文件作为BackingFile。BackingFile是一个只读的虚拟磁盘基础映像,可以在多个虚拟机间进行共享。基于BackingFile创建和运行虚拟机时,只会在自己的磁盘文件中增量地写入文件,从而提高效率、节省磁盘和维护成本。 虚拟机快照保存了虚拟机在某个指定时间点的状态,当我们在自动化测试过程中遭遇问题或错误时,可以利用快照保存、并恢复到执行中的某个时间点。借助BackingFile机制,虚拟机支持形如以下的多层依赖的快照链。baseimagevm01snap1snap2vm02(active) 可使用以下命令,将处于快照链中的某个虚机,导出形成一个独立的磁盘映像文件,其不再依赖其它映像。qemuimgconvertOqcow2vm02。qcow2vmtempl。img 假设我们在用户的工作目录中,建立了以下目录。kvm根目录iso存放光盘镜像base存放BackingFileshare存放共享磁盘镜像,用户存储测试工具、驱动等image存放测试机的磁盘镜像xml存放导出的虚拟机XML配置文件 下面用一个例子,给大家介绍下快速创建测试虚拟机的方法。 (1)按照上一篇文章中的步骤,创建一个Win10虚拟机; (2)在虚拟机中,安装好工作中用到的测试软件; (3)使用以下命令,新建一个共享工具磁盘;qemuimgcreatefqcow2oclustersize2Mkvmsharetools。qcow210G (4)挂载共享磁盘到虚拟机,复制工具和文件到该盘中; (5)移除该虚拟机,确认对话框中,请选择不删除相关磁盘文件; (6)移动原虚机主磁盘文件到基础镜像目录,如 kvmbasewindowswin10x64prozhcn。qcow2。 (7)执行以下命令,以上述基础镜像作为BackingFile,创建新的虚拟机磁盘;qemuimgcreatefqcow2oclustersize2M,backingfilekvmbasewindowswin10x64prozhcn。qcow2kvmimagetestwin10x64prozhcn01。qcow240G (8)图形界面中,新建测试虚拟机,挂在新建的虚拟机和共享磁盘。 除了使用图形界面的qemumanager软件,这里也提供一种命令行的方法,大家可用于测试平台的代码中。 (9)导出虚拟机XML配置文件virshdumpxmltestwin10x64prozhkvmxmltestwin10x64prozh。xml (10)修改XML配置文件中的以下字段:nameuuidvcpumemory和currentMemorymacaddress第1块disk的sourcefile (11)在第1块disk的Elemnt中,加入以下BackingFile有关的内容:backingStoretypefileindex2formattypeqcow2sourcefilehomeaaronkvmbasewindowswin10x64prozhcn。qcow2backingStore (12)如需要用页面VNC访问虚拟机桌面,找到XML的graphics元素,修改成以下内容。graphicstypevncport1autoportyeslisten0。0。0。0passwdP2ssw0rdlistentypeaddressaddress0。0。0。0graphics (13)使用以下命令定义虚拟机。virshdefinekvmxmltestwin10x64prozh。xml (14)使用以下命令启动虚拟机。virshstarttestwin10x64prozh (15)使用以下命令获取虚拟机的VNC端口编号,在VNC软件中使用5900该数字的端口,访问虚拟机远程桌面。virshvncdisplaytestwin10x64prozh 另外,本人使用GO语言实现了基于libvirt接口的虚拟机管理有关功能,此开源项目旨在为大家提供一个基于KVM虚拟机和Docker容器的、按需测试环境管理平台,详情请参照GitHub上的easysoftzagent项目。 常用命令:查看虚拟机信息qemuimginfobackingchainkvmimagetestwin10x64prozhcn01。qcow2修改虚拟机磁盘大小qemuimgresizex64prozhcn。qcow210G查看虚拟机里列表virshlistall查看虚拟机VNC端口virshvncdisplaywin10test导出虚拟机XML配置文件virshdumpxmlwin10testwin10test。xml创建虚拟机磁盘镜像qemuimgcreatefqcow2oclustersize2M,backingfilebase。qcow2win10test。qcow240G转换虚拟机镜像qemuimgconvertOqcow2vm02。qcow2vmtempl。img定义、取消定义,启动、停止虚拟机virshdefinewin10test。xmlvirshstartwin10testvirshdestroywin10testvirshundefinewin10test