(KVM连载)4.3.4 QEMU支持的镜像文件格式

qemu-img支持非常多种的文件格式,可以通过“qemu-img -h”查看其命令帮助得到,它支持如下所示的二十多种格式。

Supported formats: blkdebug blkverify bochs cloop cow tftp ftps ftp https http dmg nbd parallels qcow qcow2 qed host_cdrom host_floppy host_device file raw sheepdog vdi vmdk vpc vvfat

对其中的几种文件格式做简单的介绍。

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的意思)命令来唤醒客户机输入密码后继续执行(否则客户机将不会真正启动),命令行演示如下。

[root@jay-linux kvm_demo]# qemu-img convert -o encryption -O qcow2 rhel6u3.img rhel6u3.qcow

Disk image ‘rhel6u3.qcow’ is encrypted.

password:   (此处输入你需要设置的密码)

 

[root@jay-linux kvm_demo]# qemu-system-x86_64 -m 1024 rhel6u3.qcow -vnc :0 -monitor stdio

QEMU 1.1.0 monitor – type ‘help’ for more information

(qemu) cont

ide0-hd0 (rhel6u3.qcow) is encrypted.

Password: ******

(qemu)

 

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)。

 

 

qemu-img支持非常多种的文件格式,可以通过“qemu-img -h”查看其命令帮助得到,它支持如下所示的二十多种格式。

Supported formats: blkdebug blkverify bochs cloop cow tftp ftps ftp https http dmg nbd parallels qcow qcow2 qed host_cdrom host_floppy host_device file raw sheepdog vdi vmdk vpc vvfat

对其中的几种文件格式做简单的介绍。

raw

原始的磁盘镜像格式,也是qemu-img命令默认的文件格式。它的优势在于它非常简单而且非常容易移植到其他模拟器(emulatorQEMU也是一个emulator)上去使用。如果客户机文件系统(如Linux上的ext2/ext3/ext4WindowsNTFS)支持“空洞”(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 设置镜像中的簇大小,取值在5122M之间,默认值为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的意思)命令来唤醒客户机输入密码后继续执行(否则客户机将不会真正启动),命令行演示如下。

[root@jay-linux kvm_demo]# qemu-img convert -o encryption -O qcow2 rhel6u3.img rhel6u3.qcow

Disk image ‘rhel6u3.qcow’ is encrypted.

password:   (此处输入你需要设置的密码)

 

[root@jay-linux kvm_demo]# qemu-system-x86_64 -m 1024 rhel6u3.qcow -vnc :0 -monitor stdio

QEMU 1.1.0 monitor – type ‘help’ for more information

(qemu) cont

ide0-hd0 (rhel6u3.qcow) is encrypted.

Password: ******

(qemu)

 

qcow

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

 

cow

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

 

vdi

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

 

vmdk

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

 

vpc

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

       sheepdog

是日本NTT实验室发起的,为QEMU/KVM做的一个开源的分布式存储系统,为KVM虚拟提供块存储。它无单点故障(无类似于元数据服务器的中央节点),方便扩展(已经支持上千的节点数量),其配置简单、运维成本较低,总的来说,具有高可用性、易扩展性、易管理性等优势。

sheepdog项目,官方网站为:http://www.osrg.net/sheepdog/

目前,国内的淘宝公司对该项目也有较大的贡献,详情可见如下的淘宝sheepdog项目的网站。

http://sheepdog.taobao.org/

master

Stay hungry, stay foolish.

发表评论

电子邮件地址不会被公开。 必填项已用*标注