当创建的虚拟机越来越多,并且你发现好多虚拟机都是同一个操作系统,它们的区别就是安装的软件不大一样,那么你肯定会希望把他们公共的部分提取出来,只保存那些与公共部分不同的东西,这样镜像大小下去了,空间变多了,管理也方便了。派生镜像就是用来干这事的!

在这里用派生镜像来创建虚拟机.

首先我们创建一个虚拟机,此虚拟机镜像(web01.img)将会作为基镜像,供其派生.

查看此镜像文件格式及镜像大小

[root@kvm images]# qemu-img info web01.img

image: web01.img

file format: raw

virtual size: 8.0G (8589934592 bytes)

disk size: 8.0G

提示:Virtual是指镜像文件大小,而disk 是实际占用磁盘的大小

创建一个镜像文件,并且指定其后端文件为web01.img,这就是我们所说的派生.

[root@kvm images]# qemu-img create -f qcow2web01_01.qcow2 -o backing_file=web01.img 10G

Formatting 'web01_01.qcow2', fmt=qcow2size=10737418240 backing_file='web01.img' encryption=off cluster_size=65536

意指我们派生的镜像可以额外使用(10-8)G的空间来存放数据啊.奇怪的是我们进入系统发现和母板分区大小一致啊,那多出来的呢?别急,这需要我们使用fdisk/mount工具将扩展的2G挂载到指定的目录下。

[root@kvm images]# qemu-img infoweb01_01.qcow2

image: web01_01.qcow2

file format: qcow2

virtual size: 10G (10737418240 bytes)

disk size: 136K

cluster_size: 65536

backing file: web01.img

这个镜像才136K,但实际可用大小是10G

现在我们将它启动起来

[root@kvm images]# qemu-kvm -m 2048 -smp 2-hda web01_01.qcow2 -vnc :2

我们通过vncview软件连接到vnc的5902端口上.

但我一般不这样使用。我采用的是

Virt-manager添加虚拟机启动起来,操作步骤就如创建虚拟机一样.前提是你的CPU和内存值要与你的基类一致。我的基镜像cpu:2和mem:2048.

注意,我们在此虚拟机上的所有操作都不会写到后端镜像web01.img文件中,除非我们执行qemu-img commit web01_01.qcow2,才会将数据写到后端镜像文件中.

是不是我们想创建多少个虚拟机就能创建多少个呢?

答案是在存储满足的条件下是可以的.

我们再来创建一个

[root@kvm images]# qemu-img create -f qcow2web01_02.qcow2 -o backing_file=web01.img 15G

Formatting 'web01_02.qcow2', fmt=qcow2size=16106127360 backing_file='web01.img' encryption=off cluster_size=65536

把它启动起来.

[root@kvm images]# qemu-kvm -m 2048 -smp 2-hda web01_02.qcow2 -vnc :3

这像不像我在web01.img这个基类上派生了两个虚拟机,当然,我们还可以派生更多。而且虚拟机和虚拟机之间毛的关系都没有,所以随便玩.如果公司需要一个类似这样的实验环境,我想这个技巧很不错吧。它既不需要lvm,也不需要虚拟机clone所花费的时间。