KVM虚拟化学习之路(五):QEMU支持的镜像文件格式对比

kvm 2017-11-15

起步

通过命令可以查看QEMU支持的镜像文件格式:

# qemu-img -h

帮助命令末尾可以看到,支持二十多种格式:

Supported formats: blkreplay sheepdog raw parallels vmdk vvfat vhdx vpc https ssh host_cdrom host_device nbd iscsi gluster bochs rbd blkdebug luks vdi qcow dmg quorum qcow2 qed blkverify null-aio null-co tftp ftp ftps http file cloop

raw

原始的磁盘镜像格式,也是qemu-img命令默认的文件格式。它的优势在于它非常简单而且非常容易移植到其他模拟器(emulator,QEMU也是一个emulator)上去使用。如果客户机文件系统(如Linux上的ext2/ext3/ext4、Windows的NTFS)支持“空洞”(hole),那么镜像文件只有在被写有数据的扇区才会真正占用磁盘空间,从而有节省磁盘空间的作用,就如前面讲到用“qemu-img info”命令查看镜像文件信息中看到的那样。qemu-img默认的raw格式的文件其实是稀疏文件[9](sparse file),而“3.5节 安装客户机”中使用“dd”命令创建的镜像也是raw格式,不过那是一开就让镜像实际占用了分配的空间,而没有使用稀疏文件的方式对待空洞而节省磁盘空间。尽管一开始就实际占用磁盘空间的方式没有节省磁盘的效果,不过它在写入新的数据时不需要宿主机从现有磁盘空间中分配,从而在第一次写入数据时性能会比稀疏文件的方式更好一点。

host_device

在需要将镜像转化到不支持空洞的磁盘设备时需要用这种格式来代替raw格式。

qcow2

是QEMU目前推荐的QEMU镜像格式,它是功能最多的格式。它支持稀疏文件(即支持空洞)以节省存储空间,它支持可选的AES加密以提高镜像文件安全性,支持基于zlib的压缩,支持在一个镜像文件中有多个虚拟机快照。 在qemu-img命令中它支持如下几个选项:

  • backing_file 用于指定后端镜像文件。
  • backing_fmt 设置后端镜像的镜像格式。
  • cluster_size 设置镜像中的簇大小,取值在512到2M之间,默认值为64K。较小的簇可以节省镜像文件的空间,而较大的簇带来更好的性能,需要根据实际情况来平衡,一般采用默认值即可。
  • preallocation 设置镜像文件空间的预分配模式,其值可为“off”、“metadata”之一。“off”模式是默认值,设置了不为镜像文件预分配磁盘空间。而“metadata”模式设置为镜像文件预分配metadata的磁盘空间,所以这种方式生成的镜像文件稍大一点,不过在其真正分配空间写入数据时效率更高。另外,在一些版本的qemu-img中(如RHEL6.3自带的)还支持“full”模式的预分配,它表示在物理上预分配全部的磁盘空间,它将真个镜像的空间都填充零去占用空间,当然它所花费的时间较长,不过使用时性能更好。
  • encryption 用于设置加密,当它等于“on”时,镜像被加密。它使用128位密钥的ASE加密算法,故其密码长度可以达16个字符(每个字符8位),可以保证加密的安全性较高。在“qemu-img convert”命令转化为qcow2格式时,加上“-o encryption”即可对镜像文件设置密码,而在使用镜像启动客户及时需要在QEMU monitor中输入“cont”或“c”(是continue的意思)命令来唤醒客户机输入密码后继续执行(否则客户机将不会真正启动).

qcow

较旧的QEMU镜像格式,现在以很少使用该格式了,一般用于兼容8.3版本之前的QEMU。它支持backing_file(后端镜像)和encryption(加密)两个选项。

cow

用户模式Linux(User-Mode Linux)的Copy-On-Write的镜像文件格式。

vdi

兼容Oracle(Sun)VirtualBox1.1的镜像文件格式(Virtual Disk Image)。

vmdk

兼容VMware 4以上的镜像文件格式(Virtual Machine Disk Format)。

vpc

兼容Microsoft的Virtual PC的镜像文件格式(Virtual Hard Disk format)。


本文由 hongweipeng 创作,采用 知识共享署名 3.0,可自由转载、引用,但需署名作者且注明文章出处。

赏个馒头吧