首先,咱们来理解一下虚拟机无关的几个概念和工具。
- 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 win10-test
- 应用以下命令获取虚拟机的 VNC 端口编号,在 VNC 软件中应用”5900+ 该数字“的端口,拜访虚拟机远程桌面。
virsh vncdisplay win10-test
自己已实现了基于 libvirt 接口的虚拟机治理无关代码,详情请参照网址 https://github.com/easysoft/z…。
常用命令:
# 查看虚拟机信息
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