linux qemu 加载 镜像,QEMU 使用的镜像文件:qcow2 与 raw

本文介绍了 qcow2 和 raw,它们都是 QEMU(KVM)虚拟机使用的磁盘文件格式,本文将从其实现原理,支持特性,以及读写效率等进行对比和分析,最后还要介绍这两种格式的磁盘文件如何转化。

qcow2 的基本原理

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

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

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

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

可选择基于 zlib 的压缩方式

可以选择 AES 加密

qcow2 镜像文件格式

头部信息

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

清单 1. qcow2 Header

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;

下面以一个 10G 的 qcow2 文件为例来分析各字段的含义。

清单 2. qcow2 文件的 16 进制表示

# file 1.cow2

1.cow2: QEMU QCOW Image (v2), 10737418240 bytes

0000000: 5146 49fb 0000 0002 0000 0000 0000 0000 QFI.............

0000010: 0000 0000 0000 0010 0000 0002 8000 0000 ................

0000020: 0000 0000 0000 0014 0000 0000 0003 0000 ................

0000030: 0000 0000 0001 0000 0000 0001 0000 0000 .........

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值