qemu-img支持非常多种的文件格式,可以通过"qemu-img  -h"查看其命令帮助得到,它支持二十多种格式:blkdebug、blkverify、bochs、cloop、cow、tftp、ftps、ftp、https、http、dmg、nbd、parallels、qcow、qcow2qed、host_cdrom、host_floppy、host_device、file、raw、sheepdog、vdi、vmdk、vpc、vvfat

qemu-img -h|grep "Supported formats"

(1) raw

原始的磁盘镜像格式,也是qemu-img命令默认的文件格式。
优点:非常简单且非常容易移植到其他模拟器(emulator,QEMU也是一个emulator)上使用。如果客户机文件系统(如Linux上的ext2/ext3/ext4WindowsNTFS)支持“空洞”(hole),那么镜像文件只有在被写有数据的扇区才会真正占用磁盘空间,从而起到节省磁盘空间的作用,就如前面用"qemu-img  info"命令查看镜像文件信息中看到的那样。qemu-img默认的raw格式的文件其实是稀疏文件(sparse file ),前面“安装客户机”中使用"dd"命令创建的镜像也是raw格式,不过那是一开始就让镜像实际占用了分配的空间,而没有使用稀疏文件的方式对待空洞来节省磁盘空间。

尽管一开始就实际占用磁盘空间的方式没有节省磁盘的效果,不过这种方式在写入新的数据时不需要宿主机从现有磁盘空间中分配,因此在第一次写入数据时,这种方式的性能会比稀疏文件的方式更好一点

(2) host_device

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

(3) qcow2

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

在qemu-img命令中qcow2支持如下几个选项:

l  backing_file , 用于指定后端镜像文件

l  backing_fmt, 设置后端镜像的镜像格式

l  cluster_size, 设置镜像中簇的大小,取值在512B2MB之间,默认值为64KB较小的簇可以节省镜像文件的空间,较大的簇可以带来更好的性能,需要根据实际情况来平衡,一般采用默认值即可

l  preallocation, 设置镜像文件空间的预分配模式,其值可为"off''、"metadata"之一。
"off''模式是默认值,设置了不为镜像文件预分配磁盘空间
"metadata"模式用于设置为镜像文件预分配metadata的磁盘空间,所以这种方式生成的镜像文件稍大一点,不过在其真正分配空间写入数据时效率更高
另外,一些版本的qemu-img(如RHEL6.3自带的)还支持"full"模式的预分配,它表示在物理上预分配全部的磁盘空间,它将整个镜像的空间都填充零以占用空间,当然它所花费的时间较长,不过使用时性能更好

l  encryption用于设置加密,当它等于"on"时,镜像被加密。它使用128位密钥的ASE加密算法,故其密码长度可达16个字符(每个字符8位),可以保证加密的安全性较高
在将"qemu-img convert"命令转化为qcow2格式时,加上"-o encryption",即可对镜像文件设置密码,而在使用镜像启动客户机时需要在QEMU monitor中输入"cont""c"(continue的意思)命令来唤醒客户机输入密码后继续执行(否则客户机将不会真正启动)

命令行如下:

( 4 ) qcow

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

(5) cow

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

(6) vdi

兼容Oracle
( Sun ) Virtual Box 1.1的镜像文件格式( Virtual Disk Image)。

(7) vmdk

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

(8) vpc

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

(9) sheepdog

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

QEMU支持的镜像文件格式

qemu-img支持非常多种的文件格式,可以通过"qemu-img  -h"查看其命令帮助得到,它支持二十多种格式:blkdebug、blkverify、bochs、cloop、cow、tftp、ftps、ftp、https、http、dmg、nbd、parallels、qcow、qcow2qed、host_cdrom、host_floppy、host_device、file、raw、sheepdog、vdi、vmdk、vpc、vvfat

qemu-img -h|grep "Supported formats"

(1) raw

原始的磁盘镜像格式,也是qemu-img命令默认的文件格式。
优点:非常简单且非常容易移植到其他模拟器(emulator,QEMU也是一个emulator)上使用。如果客户机文件系统(如Linux上的ext2/ext3/ext4WindowsNTFS)支持“空洞”(hole),那么镜像文件只有在被写有数据的扇区才会真正占用磁盘空间,从而起到节省磁盘空间的作用,就如前面用"qemu-img  info"命令查看镜像文件信息中看到的那样。qemu-img默认的raw格式的文件其实是稀疏文件(sparse file ),前面“安装客户机”中使用"dd"命令创建的镜像也是raw格式,不过那是一开始就让镜像实际占用了分配的空间,而没有使用稀疏文件的方式对待空洞来节省磁盘空间。

尽管一开始就实际占用磁盘空间的方式没有节省磁盘的效果,不过这种方式在写入新的数据时不需要宿主机从现有磁盘空间中分配,因此在第一次写入数据时,这种方式的性能会比稀疏文件的方式更好一点

(2) host_device

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

(3) qcow2

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

在qemu-img命令中qcow2支持如下几个选项:

l  backing_file , 用于指定后端镜像文件

l  backing_fmt, 设置后端镜像的镜像格式

l  cluster_size, 设置镜像中簇的大小,取值在512B2MB之间,默认值为64KB较小的簇可以节省镜像文件的空间,较大的簇可以带来更好的性能,需要根据实际情况来平衡,一般采用默认值即可

l  preallocation, 设置镜像文件空间的预分配模式,其值可为"off''、"metadata"之一。
"off''模式是默认值,设置了不为镜像文件预分配磁盘空间
"metadata"模式用于设置为镜像文件预分配metadata的磁盘空间,所以这种方式生成的镜像文件稍大一点,不过在其真正分配空间写入数据时效率更高
另外,一些版本的qemu-img(如RHEL6.3自带的)还支持"full"模式的预分配,它表示在物理上预分配全部的磁盘空间,它将整个镜像的空间都填充零以占用空间,当然它所花费的时间较长,不过使用时性能更好

l  encryption用于设置加密,当它等于"on"时,镜像被加密。它使用128位密钥的ASE加密算法,故其密码长度可达16个字符(每个字符8位),可以保证加密的安全性较高
在将"qemu-img convert"命令转化为qcow2格式时,加上"-o encryption",即可对镜像文件设置密码,而在使用镜像启动客户机时需要在QEMU monitor中输入"cont""c"(continue的意思)命令来唤醒客户机输入密码后继续执行(否则客户机将不会真正启动)

命令行如下:

( 4 ) qcow

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

(5) cow

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

(6) vdi

兼容Oracle
( Sun ) Virtual Box 1.1的镜像文件格式( Virtual Disk Image)。

(7) vmdk

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

(8) vpc

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

(9) sheepdog

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

QEMU支持的几种常见的镜像文件格式的更多相关文章

  1. Android颜色值(RGB)所支持的四种常见形式

    Android中颜色值是通过红(Red).绿(Green).蓝(Blue)三原色,以及一个透明度(Alpha)值来表示的,颜色值总是以井号(#)开头,接下来就是Alpha-Red-Green-Blue ...

  2. 我的Android进阶之旅------>Android颜色值(RGB)所支持的四种常见形式

    Android中颜色值是通过红(Red).绿(Green).蓝(Blue)三原色,以及一个透明度(Alpha)值来表示的,颜色值总是以井号(#)开头,接下来就是Alpha-Red-Green-Blue ...

  3. (转载)MySQL数据库的几种常见高可用方案

    转自: https://yq.aliyun.com/articles/74454   随着人们对数据一致性的要求不断的提高,越来越多的方法被尝试用来解决分布式数据一致性的问题,如MySQL自身的优化. ...

  4. 【http】四种常见的 POST 提交数据方式

    来源:http://www.cnblogs.com/aaronjs/p/4165049.html HTTP/1.1 协议规定的 HTTP 请求方法有 OPTIONS.GET.HEAD.POST.PUT ...

  5. SQL Server 存储过程中处理多个查询条件的几种常见写法分析,我们该用那种写法

    本文出处: http://www.cnblogs.com/wy123/p/5958047.html 最近发现还有不少做开发的小伙伴,在写存储过程的时候,在参考已有的不同的写法时,往往很迷茫,不知道各种 ...

  6. JSP之WEB服务器:Apache与Tomcat的区别 ,几种常见的web/应用服务器

    注意:此为2009年的blog,注意时效性(针对常见服务器)     APACHE是一个web服务器环境程序 启用他可以作为web服务器使用 不过只支持静态网页 如(asp,php,cgi,jsp)等 ...

  7. 四种常见的 POST 提交数据方式

    HTTP/1.1 协议规定的 HTTP 请求方法有 OPTIONS.GET.HEAD.POST.PUT.DELETE.TRACE.CONNECT 这几种.其中 POST 一般用来向服务端提交数据,本文 ...

  8. 四种常见的 POST-------- content-type数据提交方式

    HTTP/1.1 协议规定的 HTTP 请求方法有 OPTIONS.GET.HEAD.POST.PUT.DELETE.TRACE.CONNECT 这几种.其中 POST 一般用来向服务端提交数据,本文 ...

  9. Web 四种常见的POST提交数据方式

    HTTP/1.1 协议规定的 HTTP 请求方法有 OPTIONS.GET.HEAD.POST.PUT.DELETE.TRACE.CONNECT 这几种.其中 POST 一般用来向服务端提交数据,本文 ...

随机推荐

  1. Mac 开发 Hue

    1)环境准备 Maven 3.6.1 python (Anaconda 2.7.16) MySQL 5.7 git 2.21 2)Hue源码下载 git clone git@github.com:ar ...

  2. python实现计数排序

    计数排序有局限性,最小值和最大值决定着数组的长度,如果分配均匀的话可以用 # @File: count_sort import random def count_sort(li, max_num=10 ...

  3. B. Connecting Universities DFS,无向树

    http://codeforces.com/problemset/problem/700/B 题意是,在一颗树中,有k个大学,要求两两匹配,他们之间的距离作为贡献,使得距离总和最大. 一开始的时候无从 ...

  4. HDU 5808 Price List Strike Back bitset优化的背包。。水过去了

    http://acm.hdu.edu.cn/showproblem.php?pid=5808 用bitset<120>dp,表示dp[0] = true,表示0出现过,dp[100] = ...

  5. 第一章、 CLR的执行模型

    1. 概述 本章主要是介绍从源代码到可执行程序的过程中,CLR所做的工作. 2. 名词解释 ① 公共语言运行时(Common Language Runtime, CLR),是一个可由多种语言使用的 运 ...

  6. 获取第三方软件的包名、入口Activity的类名

    要启动指定的第三方软件,需要知道第三方软件的包名.类名. 获取第三方软件包名.类名的两种方法: 1.使用aapt aapt是sdk自带一个工具,在 Sdk\builds-tools 目录下 .如果没有 ...

  7. CF963A Alternating Sum

    思路:利用周期性转化为等比数列求和. 注意当a != b的时候 bk * inv(ak) % (109 + 9)依然有可能等于1,不知道为什么. 实现: #include <bits/stdc+ ...

  8. iOS中使用 Reachability 检测网络区分手机网络类型 WiFi 和2 3 4 G

    如果你想在iOS程序中提供一仅在wifi网络下使用(Reeder),或者在没有网络状态下提供离线模式(Evernote).那么你会使用到Reachability来实现网络检测. 写本文的目的 了解Re ...

  9. 031_spark架构原理

    spark核心组件 driver master worker executor task(只有task是线程) 核心组件的原理图解

  10. Performance testing architecture

    一张图胜过千言. 这个还只是目前阶段的架构,后期会在CI以及自动化驱动下形成具有管理功能的平台.