一、基础概念
KVM 虚拟化中使用的镜像格式通常为 RAW 和 QCOW2 两种格式.
qcow2特点: qcow2 镜像格式是 QEMU 模拟器支持的一种磁盘镜像。它也是可以用一个文件的形式来表示一块固定大小的块设备磁盘。与普通的 raw 格式的镜像相比,有以下特性:占用空间小,即使文件系统不支持空洞(holes);支持写时拷贝(COW, copy-on-write),镜像文件只反映底层磁盘的变化;支持快照(snapshot);镜像文件能够包含多个快照的历史;支持 zlib 的压缩;支持 AES 加密
RAW特点: RAW 格式镜像文件又被称为 原始镜像 或 裸设备镜像, RAW 格式镜像文件能够直接当作一个块设备类似/dev/sdb 设备可以直接挂载;可以使用dd指令创建一个 File 就能够模拟 RAW 镜像文件;性能较 QCOW2 要更高;能够随意转换格式;RAW不支持快照;
其他格式:VirtualBox的虚拟磁盘映像(VDI);VHD (Hyper-V)的:VHD 和VHDX; VMware的 vmdk
vmdk VMware镜像格式
vdi VirtualBox镜像格式
raw 简单的二进制镜像文件,一次性占用分配的磁盘空间,支持稀疏文件。
qcow2 第二代的QEMU写时复制格式,QEMU推荐的镜像格式,支持稀疏文件,支持AES加密,支持基于zlib的压缩,支持snapshot,支持后备镜像
二、qemu-img基本命令
qemu-img常用命令:
info : 查看镜像的信息;
create: 创建镜像;
check: 检查镜像;
convert: 转化镜像的格式;
snapshot :管理镜像的快照;
rebase: 在已有的镜像的基础上创建新的镜像;
resize: 增加或减小镜像大小
qemu-ing格式说明:
(1) qemu-ing info [-f fmt] filename
-f:源镜像的格式,它会自动检测,所以省略之
qemu-img info image.qcow2
(2)create [-f fmt] [-o options] filename [size]
qemu-img create test1.raw 2G #默认创建的为raw格式镜像,如果需要指定qcow2
qemu-img create -f qcow2 image.qcow2 20G
基于后备镜像创建差量镜像
多个虚拟机使用的差量镜像(前端镜像)都指向同一个后备镜像,默认从后备镜像读,写则到自己的差量镜像。后备镜像可以是raw或qcow2,差量镜像只能是qcow2
使用差量镜像的优势:
a. 节省磁盘空间 ;b. 瞬间快速创建虚拟机
后备镜像差量生成虚拟机的方式可以快速的产生大量的虚拟机,节省磁盘空间,在生产环境中有非常重要的意义。经过测试,对后备镜像的读压力非常小,系统压力主要在差量镜像的写压力,使用的时候,为了取得良好效果,应将后备镜像和差量镜像分散到不同的物理硬盘上,并保证镜像的安全性。
#基于后备镜像创建差量镜像,
[root@node3 images]# qemu-img create -f qcow2 -b centos7.2.qcow2 centos7.2.bk.img
Formatting 'centos7.2.bk.img', fmt=qcow2 size=22548578304 backing_file='centos7.2.qcow2' encryption=off cluster_size=65536 lazy_refcounts=off
#备注: centos7.2.qcow2 前端镜像是不能删除,centos7.2.bk.img 删除后后端镜像就就无法启动;
#查询前端镜像
[root@node3 images]# qemu-img info centos7.2.qcow2
image: centos7.2.qcow2
file format: qcow2
virtual size: 21G (22548578304 bytes)
disk size: 1.1G
cluster_size: 65536
Format specific information:
compat: 1.1
lazy refcounts: true
#查询后端镜像
[root@node3 images]# qemu-img info centos7.2.bk.img
image: centos7.2.bk.img
file format: qcow2
virtual size: 21G (22548578304 bytes)
disk size: 196K
cluster_size: 65536
backing file: centos7.2.qcow2 #后端镜像来源
Format specific information:
compat: 1.1
lazy refcounts: false
#转换差量镜像为普通镜像
[root@node3 images]# qemu-img convert -f qcow2 -O qcow2 centos7.2.qcow2 centos7.2.bk.img
[root@node3 images]# qemu-img info centos7.2.bk.img
image: centos7.2.bk.img
file format: qcow2
virtual size: 21G (22548578304 bytes)
disk size: 2.0G
cluster_size: 65536
Format specific information:
compat: 1.1
lazy refcounts: false
(3)qemu-img convert -c -f fmt -O out_fmt -o options fname out_fname
qemu-img convert -c -f fmt -O out_fmt -o options fname out_fname
-c:采用压缩,只有qcow和qcow2才支持
-f:源镜像的格式,它会自动检测,所以省略之
-O:目标镜像的格式
-o:其他选先
fname:源文件
out_fname:转化后的文件
#将名为image.img的原始图像文件转换为qcow2文件。
$ qemu-img convert -f raw -O qcow2 image.img image.qcow2
将vmdk文件转换raw文件。
$ qemu-img convert -f vmdk -O raw image.vmdk image.img
将vmdk文件转换qcow2文件。
$ qemu-img convert -f vmdk -O qcow2 image.vmdk image.qcow2
(4)qemu-img snapshot [-l | -a snapshot | -c snapshot | -d snapshot] filename
“-l” 选项是查询并列出镜像文件中的所有快照,“-a snapshot”是让镜像文件使用某个快照,“-c snapshot”是创建一个快照,“-d”是删除一个快照。
raw不支持快照,只有qcow2支持快照
qemu-img snapshot test1.qcow2 -c s1 #创建快照s1
qemu-img snapshot test1.qcow2 -l #快照查看,使用-l参数
qemu-img snapshot test1.qcow2 -d s1 #删除快照,使用-d参数
qemu-img snapshot test1.qcow2 -a s1 #还原快照,使用-a参数
#快照单独提取镜像,可以使用convert参数
qemu-img convert -f qcow2 -O qcow2 -s s1 test1.qcow2 test-s1.qcow2
(5)check [–object objectdef] [–image-opts] [-q] [-f fmt] [–output=ofmt] [-r [leaks | all]] [-T src_cache] [-U] filename
Only the formats qcow2, qed and vdi support consistency checks.
(6)qemu-img resize filename [+ | -]size
qemu-img resize test1.raw +2G
raw格式镜像大小都可以调整,qcow2格式镜像只能增大,不能缩小
参考文档:https://qemu.weilnetz.de/doc/qemu-doc.html#qemu_005fimg_005finvocation