精华内容
下载资源
问答
  • qcow2

    2016-12-01 19:40:00
    qemu-img命令可以用来创建qcow2镜像,或者将qcow2文件转换成raw格式文件,等其它功能:  $> qemu-img create -f qcow2 test.qcow2 4G  Formating 'test.qcow2', fmt=qcow2, size=4194304 kB  $> qemu-...

    qcow2 镜像格式是 QEMU 模拟器支持的一种磁盘镜像。它也是可以用一个文件的形式来表示一块固定大小的块设备磁盘。与普通的 raw 格式的镜像相比,有以下特性:

    更小的空间占用,即使文件系统不支持空洞(holes);

    支持写时拷贝(COW, copy-on-write),镜像文件只反映底层磁盘的变化;

    支持快照(snapshot),镜像文件能够包含多个快照的历史;

    可选择基于 zlib 的压缩方式

    可以选择 AES 加密

     

    qemu-img命令可以用来创建qcow2镜像,或者将qcow2文件转换成raw格式文件,等其它功能:

      $> qemu-img create -f qcow2 test.qcow2 4G

      Formating 'test.qcow2', fmt=qcow2, size=4194304 kB

      $> qemu-img convert test.qcow2 -O raw test.img

     

    qcow2 镜像文件格式

    头部信息

    每一个 qcow2 文件都以一个大端(big-endian)格式的头开始,结构如下:

    typedef struct QCowHeader {

          uint32_t magic;

          uint32_t version;

     

          uint64_t backing_file_offset;

          uint32_t backing_file_size;

     

          uint32_t cluster_bits;

          uint64_t size; /* in bytes */

          uint32_t crypt_method;

     

          uint32_t l1_size;

          uint64_t l1_table_offset;

     

          uint64_t refcount_table_offset;

          uint32_t refcount_table_clusters;

     

          uint32_t nb_snapshots;

          uint64_t snapshots_offset;

      } QcowHeader;

    前 4 个比特包含了字符 Q,F,I,然后是 0xfb,实例中的 5146 49fb 是 magic 字段。

    接下来的 4 个比特包含了该镜像文件的版本号,实例中的 0000 0002 是 version 字段,代表使用的是 qcow2 版本。

    当前存在两种版本的格式,版本1和版本2。

     

    backing_file_offset 占用 8 个字节,实例中 0000 0000 0000 0000,给出相对于qcow2文件起始位置的偏移,指出一个字符串的位置,该字符串为backing file文件的绝对路径。该字符串为backing file文件的绝对路径。由于该字符串不是以'\0'结束,所以backing_file_size指出字符串的长度。如果当前镜像是一个copy-on-write镜像,则存在backing file文件,否则没有;

     

    backing_file_size 给出了一个不以 null 结尾的字符串的长度,实例中为 0000 0000。如果这个镜像文件是一个写时拷贝的,那么它是原始文件的路径。

     

    cluster_bits,32 位(0000 0010),描述了如何映射一个镜像的地址到一个本地文件,它决定了在一个 cluster 中,偏移地址的低位是如何作为索引的。因为 L2 表占用了一个单独的 cluster 并且包含 8 字节的表项(entry),所以 cluster_bits 只有不足 3 个位,作为 L2 表的索引。

     

    接下来的 size ,8 字节代表了该镜像文件所表示的块设备的大小,单位字节;实例中为 0000 0002 8000 0000 字节,也就是 10G 的空间。

     

    crypt_method 如果为 1 代表使用 AES 加密,0表示没有加密。

     

    l1_size(0000 0014)和 l1_table_offset(0000 0000 0003 0000::)分别给出了 L1 表大小和偏移量。

     

    refcount_table_offset 给出 refcount 表的偏移量(0000 0000 0001 0000)而 refcount_table_clusters 描述了以 cluster 为单位的 refcount 表的大小(0000 0001)。

     

    nb_snapshots 给出了该镜像包含的快照数量(0000 0000), snapshots_offset 给出每个快照到 QCowSnapshotHeader 的偏移量(0000 0000 0000 0000),每个快照都会有这样一个header。

     

    一个典型的 qcow2 镜像文件包含一下几部分:

    上文中提到的头部信息

    L1 表

    refcount 表,仍然是簇对齐的

    一个或者多个 refcount 块

    快照头,第一个header要求簇对齐,之后的header要求8字节对齐;

    L2 表,每一个table占据一个单独的cluster;

    数据 cluster

    L2 表,每一个table占据一个单独的cluster;

    数据 cluster

     

     

    2 级查找

    在 qcow2 中,磁盘的内容是保存在 cluster 中(每个 cluster 包含一些大小为 512 字节的扇区)。为了找到给定地址所在的 cluster,我们需要查找两张表,L1->L2。L1 表保存一组到 L2 表的偏移量,L2 表保存一组到 cluster 的偏移量;

    所以一个地址要根据 cluster_bits(64 位)的设置分成 3 部分,比如说 cluster_bits=12;

    低 12 位是一个 4Kb cluster 的偏移(2 的 12 次方=4Kb);

    接下来 9 位是包含 512 个表项目的 L2 表;

    剩下 43 位的代表 L1 表偏移量。

    注意,L1 table的最小值,可以通过给定磁盘镜像的大小来计算,公式如下:

    l1_size = round_up(disk_size / (cluster_size * l2_size), cluster_size)

     

    为了获取一个给定地址(64 位)的偏移位置:

    从 Head 域中的 l1_table_offset 取得 L1 表的地址

    用前(64-l2_bits-cluster_bits)位地址去索引 L1 表

    在 L1 表中的偏移量获得 L2 表的地址

    用地址中的接下来的 l2_bits 去索引 L2 表,获得一个 64 位的表项

    用 L2 表中的偏移量获得 cluster 的地址

    用地址中剩下的 cluster_bits 位去索引该 cluster,获得该数据块

    如果 L1 表和 L2 表中的偏移量都是空,这块区域就尚未被镜像文件分配。

    注意 L1 表和 L2 表中的偏移量的前两位被保留,用做表示'copied' 或'compressed'。

     

     

    引用计数

    每一个cluster都有一个引用计数,cluster可以被删除,但前提条件是没有任何快照再使用这个cluster。

     

    针对每一个cluster的2个字节的引用计数,存放在cluster sized blocks。通过refcount_table_offset字段可以获取到refcount table的位置,refcount_table_clusters字段给出refcount table的大小(单位为cluster),refcount table给出了这些refcount blocks在镜像文件中的偏移地址。

    为了获取一个给定的cluster的引用计数,你需要将cluster offset划分成refcount table offset和refcount block offset。一个refcount block是一个单独的cluster,这个cluster里包含了若干个2字节的项,低(cluster_size -1)位作为block offset,剩余的位作为table offset。

    qcow2有一个优化处理,任何一个L1或L2表项指向的cluster的引用计数为1,则L1/L2表项的最高有效位被置上“copied”标记。这表明没有快照在使用这个cluster,所以这个cluster可以马上写入数据,而不需要复制一份给快照使用。

     

     

    Copy-on-Write 镜像文件

    qcow2 镜像可以用来保存另一个镜像文件的变化,它并不去修改原始镜像文件,只记录与原始镜像文件的不同即可,这种镜像文件就叫做 copy-on-write 镜像。虽然是一个单独的文件,但它的大部分的数据都来自原始镜像,只有跟原始镜像文件相比有变化的 cluster 才会被记录下来。

    这很容易去实现,在头部信息中记录原始文件路径即可。当需要从一个 copy-on-write 镜像文件中读取一个 cluster 的时候,首先检查这块区域是否已经在该镜像文件中被分配,如果没有就从原始文件读取。

     

    快照

    快照有些类似 Copy-On-Write 文件,但区别是快照是一个可写的。快照就是原始文件本身(内部快照)。它既包含做快照之前的原始文件部分,它本身也包含可写的部分。

    每一个快照都包含如下的头部结构:

      typedef struct QCowSnapshotHeader {

          /* header is 8 byte aligned */

          uint64_t l1_table_offset;

     

          uint32_t l1_size;

          uint16_t id_str_size;

          uint16_t name_size;

     

          uint32_t date_sec;

          uint32_t date_nsec;

     

          uint64_t vm_clock_nsec;

     

          uint32_t vm_state_size;

          uint32_t extra_data_size; /* for extension */

          /* extra data follows */

          /* id_str follows */

          /* name follows  */

      } QcowSnapshotHeader;

    各字段介绍如下:

    快照有名字和ID,都是字符串,id_str_size,name_size给出字符串长度,字符串紧接在QCowSnapshotHeader后面;

    快照至少有原来的L1 table的副本,其通过l1_table_offset和l1_size来定位;

    在快照被创建的时候,qemu会调用gettimeofday(),快照时间被保存在date_sec和date_nsec字段中;

    vm_clock_nsec给出VM clock当前的状态;

    vm_state_size表示作为快照的一部分被保存的虚拟机状态的大小。这个状态被保存在原来L1 table的位置,直接在镜像header的后面;

    extra_data_size表示在QCowSnapshotHeader之后的扩展数据的长度,不包括id和name字符串。这一段扩展数据是留给以后用的。

    创建一个快照,就会添加一个QCowSnapshotHeader,然后复制一份L1 table,同时会增加所有L2 table和数据clusters的被L1 table引用的引用计数。打完快照之后,如果任何在这个镜像中的L2 table或者data clusters被修改了——也就是,如果一个cluster的引用计数大于1,且"copied"标记被置上了——qemu则会先复制一份这个cluster,然后再写入数据。就这样,所有的快照都不会被修改。

     

    qcow2 的其他特性

    qcow2 支持压缩,它允许每个簇(cluster)单独使用 zlib 压缩。它也支持使用 128 位的 AES 密钥进行加密。

    qcow2镜像格式支持压缩特性,其允许每一个cluster独立的通过zlib进行压缩。

     

    /*cluster offset表示一个簇在qcow2文件中的偏移,其最高的2位是标记位*/

    从L2 table中获取cluster offset的流程如下:

    如果cluster offset的第二最高有效位是1,则这是一个被压缩的cluster;

    cluster offset中之后的cluster_bits - 8 位是这个压缩过的cluster的大小,单位是sectors;

    cluster offset剩余的位是压缩的cluster在文件中的实际偏移地址。

     

    加密

    qcow2格式,也支持针对cluster的加密。

    如果QCowHeader中的crypt_method字段被置为1,则会采用一个16个字符的密码作为128位AES key。

    每一个Cluster中的每一个sector都是通过AES密码块链接模式来单独加密,采用sector的偏移地址(小端模式)来作为128位初始化向量的头64位。

     

    qcow镜像——上一代镜像

    qcow2格式相对于qcow格式的不同点有:

    支持快照的概念,qcow只支持增量镜像;

    在qcow2中,引入了cluster的引用计数的概念;引用计数也被用来支持快照;

    在qcow2中,L2 table将一直占一个单独的cluster; 之前,是通过QCowHeader中的l2_bits来确定的;

    压缩的cluster的大小,现在单位为sector,之前是字节。

     

    转载于:https://my.oschina.net/dubenju/blog/798443

    展开全文
  • qcow2转成raw,raw转qcow2

    千次阅读 2019-03-18 11:05:08
    qcow2转成raw: qemu-img convert -f qcow2 -O raw ubuntu14.04.qcow2 ubuntu14.04.raw raw转qcow2: qemu-img convert -f raw -O qcow2 6992.raw 6992.qcow2 在raw转qcow2的时候,还可以在做一步深度压缩,就是...

    将/var/www/html/images/CentOS-6.9.raw 复制到当前目录
    cp -r /var/www/html/images/CentOS-6.9.qcow2 . /

    qcow2转成raw:将CentOS-6.9.qcow2转为 CentOS-6.9.raw
    $ qemu-img convert -f qcow2 -O raw CentOS-6.9.qcow2 CentOS-6.9.raw

    在这里插入图片描述
    raw转qcow2:
    $ qemu-img convert -f raw -O qcow2 CentOS-6.9.raw CentOS-6.9.qcow2
    在这里插入图片描述
    $ chmod 777 CentOS-6.9.qcow2
    在这里插入图片描述
    在raw转qcow2的时候,还可以在做一步深度压缩,就是qcow2自己可以再次压缩(注意这个操作是把qcow2压缩成更小的qcow2):
    $ qemu-img convert -O qcow2 old-image.qcow2 smaller-image.qcow2

    展开全文
  • <div><p>Support QEMU qcow2 disk image format use <a href="https://github.com/zchee/go-qcow2">zchee/go-qcow2</a>. - Alternative sparse disk image - <code>preadv</code>/<code>pwritev</code> support ...
  • qcow文件格式描述官网说明文档:vim [某虚拟机的qcow2文件]%!xxd0 - 3 : magic QCOW magic string ("QFI\xfb") 4个字节固定的标识符4 - 7 : version Version number (valid values are 2 and 3) 版本号,2或者38 - ...

    qcow文件格式描述

    官网说明文档:

    vim [某虚拟机的qcow2文件]

    %!xxd

    0 - 3 : magic QCOW magic string ("QFI\xfb") 4个字节固定的标识符

    4 - 7 : version Version number (valid values are 2 and 3) 版本号,2或者3

    8 - 15 : backing_file_offset 文件路径字符串相对于文件起始位置的偏移地址,这个字符串不是以0结束的。该值为0时,表示该镜像没有 backing file

    0000 0000 0000 0118 -> 0000 0001 0001 1000 256+24=280 看左边的地址定位

    16 - 19 : backing_file_size 文件路径字符串长度,单位是字节数。必须小于1023字节。镜像没有backing file时,该值无意义

    0000 0079 0111 1001 = 121

    400 280

    0x00000190-0x00000118 =ox78 + 1 = 121

    20 - 23 : cluster_bits cluster 位数,代表了 cluster 大小(1 << cluster_bits 就是 cluster 的大小)。不能小于9,也就是每个 cluster 大小不能小于 512个字节。 Note:新版本的qemu启用了最大 2MB 的 cluster 大小。

    0000 0010 -> 00010000 16 bit :2^16:64k cluster大小

    24 - 31 : size 虚拟磁盘的大小,单位字节,这个是呈现给用户的大小(virt-df查看),不是文件实际大小

    0000 0002 8000 0000 2 * 2^32 + 8 * 2^28=2^33 + 2^31 = 10G

    32 - 35 : crypt_method 0 - 未加密;1 - AES加密

    0000 0000

    36 - 39 : l1_size L1 table项数

    0000 0014= 20

    40 - 47 : l1_table_offset L1 table 相对于镜像文件起始位置的偏移, 必须与 cluster 对齐

    0000 0000 0004 0000= 4 * 2^12 看左边的地址即可

    48 - 55 : refcount_table_offset refcount table 相对于镜像文件起始位置的偏移。必须与 cluster 对齐

    0000 0000 0001 0000

    56 - 59 : refcount_table_clusters refcount table 占用了多少个 cluster

    0000 0001

    60 - 63 : nb_snapshots 镜像文件中包含了多少个快照。

    0000 0000

    64 - 71 : snapshots_offset 快照table相对于镜像文件起始位置的偏移,必须与cluster对齐

    0000 0000 0000 0000

    版本号如果为3,头部还会有以下附加的信息,在版本2中,这些值都是0,除非特别说明:

    72 - 79 : incompatible_features 未实现的特征的位掩码,在解析文件的时候,如果发现某个未知的位被设置为1,就是需要报错的时候了。

    0000 0000 0000 0000

    Bit 0 脏位。如果该位为1,refcounts可能和实际情况是不一致的,在解析的时候需要扫描一遍 L1/L2 table 来修复 refcounts。

    Bit 1 损坏位。如果该位为1,任何数据结构可能损坏,且镜像不应该被写。

    Bits 2-63 Reserved (set to 0) 保留,应该为0。

    Bitmask of incompatible features. An implementation must

    fail to open an image if an unknown bit is set.

    Bit 0: Dirty bit. If this bit is set then refcounts

    may be inconsistent, make sure to scan L1/L2

    tables to repair refcounts before accessing the

    image.

    Bit 1: Corrupt bit. If this bit is set then any data

    structure may be corrupt and the image must not

    be written to (unless for regaining

    consistency).

    Bits 2-63: Reserved (set to 0)

    80 - 87 : compatible_features 兼容特征的位掩码。解析的时候完全可以忽略这些位。

    0000 0000 0000 0000

    Bit 0: 该位为1,则 lazy refcount 更新可以被使用。 意味着 dirty bit 为1,并且推迟refcount 元数据的更新。

    Bits 1-63: Reserved (set to 0)

    88 - 95 : autoclear_features 我的理解是…… 对于这些autoclear feature,在处理镜像时,如果某一位含义未知,则应该先将其设置为0,再进行写镜像操作。

    Bitmask of auto-clear features. An implementation may only write to an image with unknown auto-clear features if it clears the respective bits from this field first.

    0000 0000 0000 0000

    Bit 0:这一位表示 bitmap extension 数据一致性。 如果这一位为1,但不存在 bitmaps extension,则应该报错;如果存在 bitmap extension 但这一位为0,则应认为 bitmap extension data 不一致(存在问题?)。

    Bits 1-63: Reserved (set to 0)

    96 - 99 : refcount_order refcount block项的宽度(bit宽度),版本2时,固定为4,也就是说 refcount_bits = 16.该值不超过6,也就是 refcount_bits 不超过 64。refcount_bits = 1 << refcount_order

    0000 0004

    100 - 103: header_length 文件头结构体的长度,版本2时,长度固定为72字节。

    0000 0068104字节 也就是刚好到该位置

    关于header extensions,头部扩展性选项

    紧接着镜像的文件头,存储的是可选的多个 header extensions,header extensions定义

    typedef struct Qcow2UnknownHeaderExtension {

    uint32_t magic;

    uint32_t len;

    QLIST_ENTRY(Qcow2UnknownHeaderExtension) next;

    uint8_t data[];

    } Qcow2UnknownHeaderExtension;

    字段说明

    Byte 0 - 3: Header extension 的类型:

    0x00000000 - End of the header extension area 我理解该值应该是表示没有header extension选项

    0xE2792ACA - Backing file format namee279 2aca示例中刚好是这个值

    0x6803f857 - Feature name table

    0x23852875 - Bitmaps extension

    other - Unknown header extension, can be safely

    ignored

    4 - 7: header extension 的数据长度0000 00055byte

    8 - n: Header extension数据部分7163 6f77 32

    n - m: 为对齐到8字节的填充部分00 0000

    后面接着

    6803 f857 00000090和后面紧接着的Feature name table有关 长度为00000090144byte

    除非特别说明,每个extension类型在一个镜像里应该只会出现一次。如果有Backing file ,则在the backing file name should be stored in the remaining space between the end of the header extension area and the end of the first cluster. It is not allowed to store other data here, so that an implementation can safely modify the header and add extensions without harming data of compatible features that it doesn't support. Compatible features that need space for additional data can use a header extension.

    关于 Feature name table 和 Bitmaps extension 两种 extension 类型结构的说明

    Feature name table

    eature name table 是可选项:记录镜像的某种特性。应用程序使用该字段记录某种未知的特性错误信息(稍后才知道的特性),eature name table的条目数取决于header extension data的长度,每一项的结构如下:

    00000080: 00006469 7274 7920 6269 7400 0000 0000 ..dirty bit.....

    00000090: 0000 0000 0000 0000 0000 0000 0000 0000 ................

    000000a0: 0000 0000 0000 0000 0000 0000 0000 0000 ................

    000000b0: 0001 636f 7272 7570 7420 6269 7400 0000 ..corrupt bit...

    000000c0: 0000 0000 0000 0000 0000 0000 0000 0000 ................

    000000d0: 0000 0000 0000 0000 0000 0000 0000 0000 ................

    000000e0: 0100 6c61 7a79 2072 6566 636f 756e 7473 ..lazy refcounts

    000000f0: 0000 0000 0000 0000 0000 0000 0000 0000 ................

    00000100: 0000 0000 0000 0000 0000 0000 0000 0000 …………….

    三种future name table刚好144byte

    Byte 0: 特性的类型 (select feature bitmap)

    0: Incompatible feature参看前面 应该是dirty bit 和 corrupt bit

    1: Compatible feature

    2: Autoclear feature

    1: Bit number within the selected feature bitmap (valid

    values: 0-63)

    2 - 47: Feature name (padded with zeros, but not necessarily null

    terminated if it has full length)

    Bitmaps extension

    bitmaps extension为可选项.可用于存储虚拟disk相关的bitmap . 当前只有一种 dirty tracking bitmap,跟踪 虚disk从某个时间点的变化。在auto-clear feature设置的情况下,需要考虑extension的数据。

    Byte 0 - 3: nb_bitmaps image中bitmap的数量,大于等于1

    The number of bitmaps contained in the image. Must be

    greater than or equal to 1.

    注意: 当前Qemu 一个image支持65535个bitmaps

    4 - 7: 保留为0.

    8 - 15: bitmap_directory_size

    Size of the bitmap directory in bytes. It is the cumulative

    size of all (nb_bitmaps) bitmap headers.

    16 - 23: bitmap_directory_offset

    Offset into the image file at which the bitmap directory

    starts. Must be aligned to a cluster boundary.

    Host cluster management

    有 host cluster 和 guest cluster 的区别.这里解释了前面一直提到的refcount。对于每一个host cluster,qcow2维护了一个refcount表,应该是引用计数的概念,当refcount为0时,表示该cluster是未分配的,1表示是在使用的,>=2时表示在被使用,并且所有的写操作都要进行COW(copy on write)操作。

    采用了两层表来维护管理 refcounts,第一层叫 refcount table,是可变大小的(refcount table 的 size 存储在header里),refcount table 的每一项覆盖多个 cluster,当然,在镜像文件中refcount table是连续存储的。refcount table 包含了多个指针,指向了第二层结构体,第二层结构被称为 refcount block,一个refcount block在大小上就是一个cluster。(意思就是,block也是存在一个个cluster里的),以下是根据镜像偏移量 offset,获得某个cluster对应引用计数的方法.

    refcount_block_entries = (cluster_size * 8 / refcount_bits)

    refcount_block_index = (offset / cluster_size) % refcount_block_entries

    refcount_table_index = (offset / cluster_size) / refcount_block_entries

    refcount_block = load_cluster(refcount_table[refcount_table_index]);

    return refcount_block[refcount_block_index];

    注:各种变量前文有述,这里回顾一下

    cluster_size = 1 << cluster_bits //最小 512 bytes

    refcount_bits = 16 //in version 2

    以版本2为例:

    cluster_size是一个cluster的字节数,对于一个qcow2文件来说,每个cluster都是固定大小的,比如512字节。

    refcount_bits固定是16,也就是2bytes,因为refcount block也要按照cluster的大小来存储,所以每个cluster能够存储的block个数: refcount_block_entries = cluster_size / 2 = 256 。

    refcount_table 的一个单元对应 256 个 refcount_block,存在一个cluster里。

    每个block里有2个字节(16位),记录了某个cluster的引用计数。

    所以计算某个 offset 所在的 cluster 引用计数的办法,先 offset / cluster_size 得到这个offset对应的是第几个cluster,然后在refcount table里找,存在table的第几个单元里,最后在这个单元里找是第几个block存着引用计数。

    下面是 refcount table 和 refcount block 的结构体定义,理解了上面这段的话,这里挺简单的了。

    Refcount table entry:

    Bit 0 - 8: Reserved (set to 0)

    9 - 63: Bits 9-63 of the offset into the image file at which the

    refcount block starts. Must be aligned to a cluster

    boundary.

    If this is 0, the corresponding refcount block has not yet

    been allocated. All refcounts managed by this refcount block

    are 0.

    Refcount block entry (x = refcount_bits - 1): 这里为16-1=15

    Bit 0 - x: Reference count of the cluster. If refcount_bits implies a

    sub-byte width, note that bit 0 means the least significant

    bit in this context.

    00000000: 5146 49fb 0000 0003 0000 0000 0000 0118 QFI.............

    00000010:0000 00790000 0010 0000 0002 8000 0000 ...y............

    00000020: 0000 0000 0000 0014 0000 0000 0004 0000 ................

    00000030: 0000 0000 0001 0000 0000 0001 0000 0000 ................

    00000040: 0000 0000 0000 0000 0000 0000 0000 0000 ................

    00000050: 0000 0000 0000 0000 0000 0000 0000 0000 ................

    00000060: 0000 0004 0000 0068 e279 2aca 0000 0005 .......h.y*.....

    00000070: 7163 6f77 3200 0000 6803 f857 00000090 qcow2...h..W....

    00000080: 00006469 7274 7920 6269 7400 0000 0000 ..dirty bit.....

    00000090: 0000 0000 0000 0000 0000 0000 0000 0000 ................

    000000a0: 0000 0000 0000 0000 0000 0000 0000 0000 ................

    000000b0: 0001 636f 7272 7570 7420 6269 7400 0000 ..corrupt bit...

    000000c0: 0000 0000 0000 0000 0000 0000 0000 0000 ................

    000000d0: 0000 0000 0000 0000 0000 0000 0000 0000 ................

    000000e0: 0100 6c61 7a79 2072 6566 636f 756e 7473 ..lazy refcounts

    000000f0: 0000 0000 0000 0000 0000 0000 0000 0000 ................

    00000100: 0000 0000 0000 0000 0000 0000 0000 0000 ................

    00000110: 0000 0000 0000 0000 2f64 6174 6130 2f7a ......../data0/z

    00000120: 7374 6163 6b2d 7072 696d 6172 792d 7374 stack-primary-st

    00000130: 6f72 6167 652f 696d 6167 6563 6163 6865 orage/imagecache

    00000140: 2f74 656d 706c 6174 652f 3365 3839 6131 /template/3e89a1

    00000150: 3965 6566 3231 3433 3738 6166 3437 3262 9eef214378af472b

    00000160: 3136 3162 3165 6662 3562 2f33 6538 3961 161b1efb5b/3e89a

    00000170: 3139 6565 6632 3134 3337 3861 6634 3732 19eef214378af472

    00000180: 6231 3631 6231 6566 6235 622e 7163 6f77 b161b1efb5b.qcow

    00000190: 3200 0000 0000 0000 0000 0000 0000 0000 2...............

    000001a0: 0000 0000 0000 0000 0000 0000 0000 0000 ................

    000001b0: 0000 0000 0000 0000 0000 0000 0000 0000 ................

    000001c0: 0000 0000 0000 0000 0000 0000 0000 0000 ................

    000001d0: 0000 0000 0000 0000 0000 0000 0000 0000 ................

    000001e0: 0000 0000 0000 0000 0000 0000 0000 0000 ................

    000001f0: 0000 0000 0000 0000 0000 0000 0000 0000 ................

    00000200: 0000 0000 0000 0000 0000 0000 0000 0000 ................

    00000210: 0000 0000 0000 0000 0000 0000 0000 0000 ................

    00000220: 0000 0000 0000 0000 0000 0000 0000 0000 ................

    00000230: 0000 0000 0000 0000 0000 0000 0000 0000 ................

    00000240: 0000 0000 0000 0000 0000 0000 0000 0000 ................

    展开全文
  • 创建qcow2镜像

    2021-01-07 06:52:17
    文章目录利用vmware创建一台虚拟机设置虚拟机网络安装虚拟机软件VNC连接操作镜像利用qcow2文件生成虚拟机参考文章 利用vmware创建一台虚拟机 设置虚拟机网络 因是测试练习,这里设置为桥接模式 目标是自己电脑和创建...
  • CentOS7 qcow2模板资源

    2020-09-27 11:11:23
    CentOS7 qcow2模板资源
  • qcow2文件压缩

    2019-10-08 17:00:30
    # qemu-img create -f qcow2 centos.qcow2 5G #创建5G的qcow2镜像 # virt-sparsify -x /root/test1.qcow2 --convert qcow2 /root/test2.qcow2 #消除镜像空洞 # virt-sparsify --compress --convert qcow2 centos....
    # qemu-img create -f qcow2 centos.qcow2 5G   #创建5G的qcow2镜像
    
    # virt-sparsify -x /root/test1.qcow2 --convert qcow2 /root/test2.qcow2   #消除镜像空洞
    
    # virt-sparsify --compress --convert qcow2 centos.img centos.qcow2    #镜像格式转换
    
    展开全文
  • QCOW2镜像格式

    万次阅读 2019-08-16 14:57:10
    QCOW2镜像格式是Qemu支持的磁盘镜像格式之一。它可以使用一个文件来表示一个固定大小的块设备。与Raw镜像格式相比,QCOW2具有如下优点: 更小的文件大小,即便不支持holes(稀疏文件)的文件系统同样适用 支持写时...
  • 包含qcow2格式的镜像,无需自己重新制作,离线情况下制作镜像非常繁琐,镜像包括windows_server_2012_r2_x64.qcow2.tar win7.qcow2.tar.gz windows_server_2008_r2_x64.qcow2.tar virtio驱动 ubuntu14.04.3_server....
  • qcow2 image output

    2020-11-29 23:16:40
    <div><p>Can slim produce qcow2 images?</p><p>该提问来源于开源项目:ottomatica/slim</p></div>
  • vmdk 转 qcow2

    2019-09-03 16:54:06
    vmdk 转 qcow2 转换大约只需要 几分钟。 但是传送镜像就要 几十分钟。 qemu-img info centos7.vmdk qemu-img convert -f vmdk -O qcow2 centos7.vmdk centos7.qcow2 qemu-img info centos7.qcow2 ...
  • KVM环境部署与使用(附导入qcow2镜像及修改qcow2镜像密码)
  • Win-qcow2驱动

    2018-01-16 13:56:16
    制作qcow2模板的驱动,适用于Windows,网卡、IO驱动,openstack专用!!
  • 前言本次文章的机缘来自于这次在做的qb的Oracle备库部分的功能,需要提供RedHat7.4,Oracle数据库以及MySQL数据库的qcow2磁盘镜像。由于RedHat7.4的镜像已经有了,今天来讲一下怎么制作非OS数据盘的qcow2磁盘镜像。...
  • CentOS7镜像qcow2下载

    2020-06-29 15:30:54
    CentOS7的镜像qcow2格式的下载,可以通过平台进行直接添加,也可用虚拟机平台软件安装添加,支持virtualbox,vmware Station等。
  • ubuntu16.04-arm64.qcow2

    2021-02-23 04:11:35
    ubuntu16.04-arm64.qcow2
  • qcow2磁盘加密

    2017-11-30 19:01:32
    1.创建qcow2加密磁盘 [root@Coc-5 test_encrypt]# qemu-img convert -f qcow2 -O qcow2 -o encryption template_xp encry1.qcow2 Disk image 'encry1.qcow2' is encrypted. password: //这里输入密码 123456 ...
  • 30s制作qcow2镜像.tar.gz

    2020-09-07 17:24:26
    如何制作qcow2,但是是需要虚拟化环境的,需要的人慎重下载哦。如何制作qcow2,但是是需要虚拟化环境的,需要的人慎重下载哦。如何制作qcow2,但是是需要虚拟化环境的,需要的人慎重下载哦。如何制作qcow2,但是是...
  • Bad qcow2 performance

    2020-12-02 11:02:59
    With the new qcow2 format it takes 10 mins+. <p>This is on corectl 0.7.15. <p>Please let me know what information you need. Thanks :)</p><p>该提问来源于开源项目:TheNewNormal/corectl</p></...
  • Photon 2 qcow2 does not boot

    2020-12-02 02:04:44
    <div><p>I have been creating vmdk images and converting them to qcow2 using qemu-img after configuring what I need in Fusion from the Photon ISO using the minimal install. This process has been ...
  • qcow2快照原理

    2018-08-13 20:03:02
    关键术语:cluster 一个Qcow2 img文件由固定大小的单元组成,该单元称为cluster,默认大小为65536bytes/64Ksector 数据块读写的最小单元,大小为512字节host cluster 位于Host上qcow2 img文件的cluster管理名称guest...
  • vmdk raw 转qcow2

    2018-09-01 16:56:40
    1、qemu-img convert -f vmdk -O qcow2 test.vmdk test.qcow2 2、qemu-img convert -f raw -O qcow2 test.raw test.qcow2
  • qemu-img convert -c -O qcow2 source.raw aim.qcow2 qemu-img convert -c -O qcow2 source.raw aim.qcow2 qemu-img create -f qcow2 -o preallocation=metadata /ruiy/ahwater-no-net-...
  • <div><p>Seems like one would want a compressed QCOW2 image if the volume is being shrunk.</p><p>该提问来源于开源项目:andsens/bootstrap-vz</p></div>
  • raw转qcow2

    2016-11-19 16:28:00
    raw转qcow2命令 : qemu-img convert -f raw test.img -O qcow2 test.img.qcow2 转晚之后,还需要virsh edit test,修改里面的磁盘type为qcow2. <driver name='qemu' type='raw'/> 修改为<driver name='qemu...
  • 挂在qcow2

    2019-12-16 17:19:49
    https://www.wolfcstech.com/2017/10/31/qcow2_on_linux/

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 2,464
精华内容 985
关键字:

qcow2