1. 结论
后备镜像差量生成虚拟机的方式可以快速的产生大量的虚拟机,节省磁盘空间,在生产环境中有非常重要的意义。经过测试,对后备镜像的读压力非常小,系统压力主要在差量镜像的写压力,使用的时候,为了取得良好效果,应将后备镜像和差量镜像分散到不同的物理硬盘上,并保证镜像的安全性。
2. 后备镜像差量生成虚拟机(backing_file)功能说明
后备镜像差量生成虚拟机是指多台虚拟机共用一个后备镜像,每个虚拟机根据需要,如果是读操作,读取镜像,如果是写操作,才写入自己的镜像文件,类似快照的copy on write机制。后备镜像可以是raw和qcow2格式,差量镜像只能是qcow2格式。
3. 使用差量方式的好处:
1) 快速生成虚拟机镜像,通过一条命令,瞬间生成虚拟机镜像。
2) 节省磁盘空间,多台虚拟机公用一个后备镜像,节省大量空间。
4. 使用差量方式的风险
1) 多台虚拟机启动的时候,io压力非常大,尤其是第一次启动的时候。
2) 对后备镜像安全性要求非常高。
5. 测试环境
硬件
联想R510G7
cpu Intel(R) Xeon(R) CPU E5506 @ 2.13GHz
内存 8G
硬盘 sas 146Gx2 raid0 x2
软件 CentOS 6.3 kernel 2.6.32-279.19.1.el6.x86_64
6. 测试方法
生成差量镜像的命令,-b参数是指后备镜像,如果生成的镜像和后备镜像不在同一个目录,注意要使用绝对路径,否则虚拟机不能启动。
qemu-img create -f qcow2 /datapool/w2k3-test-04 -b /data/win2003ent32chs
测试的时候,编写了一个脚本,不停的产生差量镜像,启动虚拟机,5分钟后关闭虚拟机、删除虚拟机、在产生镜像,通过cacti监控平台观察磁盘的io压力。
7. 测试结果
1) 不同操作系统第一次启动后,占用的空间大小
系统 | 空间 |
Windows server 2003 | 44M |
Windows server 2008 | 85M |
CentOS5.6 | 18M |
Centos6.2 | 11M |
2) 压力测试
将后备镜像和差量镜像放置到同一硬盘或者raid组,发现磁盘的读写io非常高,几台windows server 2003虚拟机同时启动,启动到第三台虚拟机就会蓝屏。这种测试方法也不能测试具体的后备镜像和差量镜像的读写压力,所以将后备镜像和差量镜像分开到不同的raid组上进行测试。
Windows server 2003系统一台虚拟机重复循环删除、生成、启动的时候,系统的io压力。
datavg-datapool是放置差量镜像的lv,可以看到写的压力非常大,data-images是放置后备镜像的lv,可以看到主要压力是读压力,非常小,不到一个iops。
Windows server 2003系统十台台虚拟机重复循环删除、生成、启动的时候,系统的io压力。
datavg-datapool是放置差量镜像的lv,可以看到写的压力非常大,平均600多iops,最高到5000多iops.
data-images是放置后备镜像的lv,可以看到主要压力是读压力,非常小,不到3 iops。
3) 破坏性测试
模拟后备镜像遭到破坏的情景,正在运行的虚拟机不会立即死机,没有启动的虚拟机启动过程中会蓝屏。
8. 将差量镜像转化成普通镜像,使用qemu-img convert
转换差量w2k3-test-01为普通镜像w2k3-test-01-10,格式为qcow2
qemu-img convert -f qcow2 -O qcow2 w2k3-test-01 w2k3-test-01-10
qemu-img info w2k3-test-01
image: w2k3-test-01
file format: qcow2
virtual size: 8.0G (8589934592 bytes)
disk size: 122M
cluster_size: 65536
backing file: /data/win2003ent32chs
qemu-img info w2k3-test-01-10
image: w2k3-test-01-10
file format: qcow2
virtual size: 8.0G (8589934592 bytes)
disk size: 3.3G
cluster_size: 65536
9. 更换镜像的后备镜像
-u 参数非安全方式,只是更换镜像
不带参数-u,会比较旧的后备镜像和新的后备镜像的差异,以新的镜像为准
qemu-img rebase -u -b w2k3-test-01-10 w2k3-test-01
qemu-img info w2k3-test-01
image: w2k3-test-01
file format: qcow2
virtual size: 8.0G (8589934592 bytes)
disk size: 122M
cluster_size: 65536
backing file: w2k3-test-01-10
![linux](https://i-blog.csdnimg.cn/blog_migrate/23f987522c5046c33c7069971df59c81.gif)