raw,cow,qcow,qcow2镜像的比较


最近在研究虚拟机的镜像格式,就写个笔记记录一下这些东东。

在linux下,虚拟机的选择方式有很多,比如vmware for linux,virtual box,还有qemu,在以前,使用qemu的人不多,主要是使用起来有些麻烦,但现在随着Openstack的兴起,qemu也得到了很大的发展,现在在Fedora下使用qemu+kvm性能还是很好的,如果再加上spice,就更不错了。但今天还是主要讲讲qemu下使用的几种镜像格式吧!

1. raw

raw格式是最简单,什么都没有,所以叫raw格式。连头文件都没有,就是一个直接给虚拟机进行读写的文件。raw不支持动态增长空间,必须一开始就指定空间大小。所以相当的耗费磁盘空间。但是对于支持稀疏文件的文件系统(如ext4)而言,这方面并不突出。ext4下默认创建的文件就是稀疏文件,所以不要做什么额外的工作。用

du -sh 文件名

可以查看文件的实际大小。也就是说,不管磁盘空间有多大,运行下面的指令没有任何问题:

qemu-img create -f raw test.img 10000G

raw镜像格式是虚拟机种I/O性能最好的一种格式,大家在使用时都会和raw进行参照,性能越接近raw的越好。但是raw没有任何其他功能。对于稀疏文件的出现,像qcow这一类的运行时分配空间的镜像就没有任何优势了。

2. cow

cow格式和raw一样简单,也是创建时分配所有空间,但cow有一个bitmap表记录当前哪些扇区被使用,所以cow可以使用增量镜像,也就是说可以对其做外部快照。但cow也没有其他功能,其特点就是简单。

3. qcow

qcow在cow的基础上增加了动态增加文件大小的功能,并且支持加密,压缩。qcow通过2级索引表来管理整个镜像的空间分配,其中第二级的索引用了内存cache技术,需要查找动作,这方面导致性能的损失。qcow现在基本不用,一方面其优化和功能没有qcow2好,另一方面,读写性能又没有cow和raw好。

4. qcow2

qcow2是集各种技术为一体的超级镜像格式,支持内部快照,加密,压缩等一系列功能,访问性能也在不断提高。但qcow2的问题就是过于臃肿,把什么功能都集于一身。

相关内容