本文介绍了 qcow2 和 raw,它们都是 QEMU(KVM)虚拟机使用的磁盘文件格式,本文将从其实现原理,支持特性,以及读写效率等进行对比和分析,最后还要介绍这两种格式的磁盘文件如何转化。
qcow2 的基本原理
qcow2 镜像格式是 QEMU 模拟器支持的一种磁盘镜像。它也是可以用一个文件的形式来表示一块固定大小的块设备磁盘。与普通的 raw 格式的镜像相比,有以下特性:更小的空间占用,即使文件系统不支持空洞(holes);
支持写时拷贝(COW, copy-on-write),镜像文件只反映底层磁盘的变化;
支持快照(snapshot),镜像文件能够包含多个快照的历史;
可选择基于 zlib 的压缩方式
可以选择 AES 加密
qcow2 镜像文件格式
头部信息
每一个 qcow2 文件都以一个大端(big-endian)格式的头开始,结构如下:
清单 1. qcow2 Headertypedef 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;
TAG:
除非注明,文章均由 Linux系统学习 整理发布,欢迎转载。如有版权争议,请联系删除。