当前位置: 首页 > 工具软件 > create-img > 使用案例 >

KVM虚拟化技术的- qemu-img 磁盘管理工具

湛财
2023-12-01

一、基础概念
      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

 类似资料: