通常虚拟机用到的image文件有两种:raw和qcow2。
制作raw格式文件的命令:
#qemu-img create –f raw Linux-test.raw 20G
制作qcow2格式文件的命令:
制作qcow2格式的文件有两种方式:一种是backing_file方式,另外一种就是非backing_file方式。
非backing_file方式制作qcow2文件:
#qemu-img create –f qcow2 Linux-test.qcow2 20G
用上面命令制作出来的qcow2文件与raw格式的区别就是,qcow2格式的image的大小可以动态增长。
backing_file方式制作qcow2格式文件:
#qemu-img create –f qcow2 –o cluster_size=2M,backing_file=Linux-test.raw Linux-test.qcow2 40G
backing_file方式的创建虚拟,这里写的40G并不会真正占用40G的空间,只是限制Linux-test.qcow2文件的最大的大小。
当raw格式文件中安装的系统是windows系列的时候,创建qcow2格式最后文件大小需要比raw格式大2~3倍。
这里的Linux-test.qcow2格式的文件并不是独立的image。在使用时需要与Linux-test.raw磁盘一起用。
如下图所示:
虚拟机是直接与qcow2格式image交互。raw格式image作为backing file,对虚拟机而言,是完全透明的。实际上,qcow2文件采用的是写时复制策略。qcow2 格式image只是保存了所有的更改数据,raw格式image中的数据不会发生丝毫变动。所以一个backing_file可以被多个虚拟机采用qcow2的方式进行共享,因为此时虚拟机不会直接对backing_file进行写操作。
如果使用的是qcow2格式的磁盘,那么虚拟机xml文件应该按照如下格式填写:
raw格式 | qcow2格式 | |
格式转换 | 可以直接转换为其他格式 | 很多时候不能直接转换为其他格式,不过可以先转换为raw格式,再转换成其他格式。花费时间较长 |
占用空间 | qemu-img命令旧版本是硬盘多大则占用多大空间。 新版本则根据实际使用量来决定占用空间。 |
根据实际用量来决定占用空间大小 |
宿主机文件系统 | 需要宿主机分区使用特定的文件系统,如:ext2、ext3、ext4、NTFS等等 | 宿主机文件系统选择范围更大 |
改变空间最大值 | 直接可以改变 | 不可以直接改变,需要转为raw格式后再改变 |
持载 | 可以直接挂载 | 可以直接挂载 |
加密、压缩、快照 | 不支持 | 支持 |
删除文件 | 占用空间与磁盘使用量会变小 | 只是删除文件描述符,并没有真正删除数据,占用空间不变 |
在为虚拟机添加raw格式的image的时候,xml文件格式如下:
查看image文件格式:
#qemu-img info Linux-test.raw
摘自:OpenStack开源云王者归来——云计算、虚拟化、Nova、Swift、Quantum与Hadoop 戢友 清华大学出版社.