KVM虚拟化学习之路(四):qemu-img 磁盘管理工具

kvm 2017-11-15

起步

qemu-img 是 QEMU 的磁盘管理工具,基本用法如下:

qemu-img command [command options]

它支持的命令分为如下几种:

(1) 检测镜像可用性

check [-f fmt] filename

对镜像文件进行一致性检测,查找镜像文件中的错误,仅支持"qcow2","qed","vdi"格式文件的检查。qcow2是目前使用最广泛的格式。参数-f fmt是指定文件的格式,如果不指定格式,qemu-img会自动检测。

# qemu-img check 24_disk0.qcow2 
No errors were found on the image.
137438/655360 = 20.97% allocated, 7.29% fragmented, 0.00% compressed clusters
Image end offset: 9008906240

(2) 创建并格式化镜像

create [-f fmt] [-o options] filename [size]

创建一个格式为gmt,大小为size,文件名为filename的镜像文件。根据文件格式fmt的不同,还可以添加选项。使用"-o ?"查询某种格式文件支持哪些选项,在“-o”选项中各个选项用逗号分隔。如果-o中使用了backing_file来指定其后端镜像文件,那么这个创建的镜像文件仅记录与后端文件的差异部分。后端镜像文件不会被修改,除非再QEMU monitor中使用“commit”或“qemu-img commit”。size选项用于指定镜像文件的大小,默认单位bytes。使用“-b backfile”参数与“-o backing_file=backfile” 效果相同。

# qemu-img create -f qcow2 -o ? temp.qcow
Supported options:
size             Virtual disk size
compat           Compatibility level (0.10 or 1.1)
backing_file     File name of a base image
backing_fmt      Image format of the base image
encryption       Encrypt the image
cluster_size     qcow2 cluster size
preallocation    Preallocation mode (allowed values: off, metadata, falloc, full)
lazy_refcounts   Postpone refcount updates
refcount_bits    Width of a reference count entry in bits
nocow            Turn off copy-on-write (valid only on btrfs

(3) 修改镜像文件

commit [-f fmt] filename

提交filename文件中的更改到后端支持镜像文件(创建时通过backing_file指定的)中。

(4) 镜像格式转换

convert [-c] [-f fmt] [-O output_fmt] [-o options] filename [filename2 [...]] output_filename

将格式为fmt的filename镜像文件根据options选项转换为格式为output_fmt的名为output_filename的镜像文件。这个命令支持不同格式的镜像文件之间的转换,比如可以用VMware使用的vmdk格式文件转换为qcow2文件,这对从其他虚拟方案转义到KVM上的用户非常有用。一般来说,输入文件格式fmt由qemu-img工具自动检测,而输出output_fmt根据自己需要来指定,默认会被转换为raw文件格式。 -c 参数表示对输出的镜像文件进行压缩,不过只有qcow2和qcow格式的镜像才支持压缩。“-o options”来指定各种选项,如后端镜像,文件大小,是否加密等。

# qemu-img convertmy-vmware.vmdk my-kvm.img

# qemu-img convert -O qcow2 rhel6.img rhel6.qcow3

(5) 获取镜像信息

info [-f fmt] filename :

# qemu-img info 24_disk0.qcow2 
image: 24_disk0.qcow2
file format: qcow2
virtual size: 40G (42949672960 bytes)
disk size: 8.4G
cluster_size: 65536
Format specific information:
    compat: 0.10
    refcount bits: 16

如果文件是稀疏文件的存储方式,也会显示出它本来分配的大小及实际占用磁盘空间大小。如果文件存放有客户机快照,快照信息也会被显示出来。

(6) 创建快照

snapshot [-l | -a snapshot | -c snapshot | -d snapshot] filename

-l表示查询并列出镜像文件中的所有快照, "-a snapshot" 表示让镜像文件使用某个快照, "-c snapshot" 表示创建一个快照,"-d" 表示删除一个快照。

(7) 更换新的后端镜像

rebase [-f fmt] [-t cache] [-p] [-u] -b backing_file [-F backing_fmt] filename

改变镜像文件的后端镜像文件,之后qcow2qed支持这个命令. 使用"-b backing_file" 中指定的文件作为后端镜像,后端镜像也被转化为"-F backing_fmt" 指定的后端镜像格式.改命令默认以安全模式运行,会比较前后两个后端镜像的不同进行处理,若要用非安全模式则通过"-u"执行,将后端镜像重命名或者移动后对前端镜像文件修复处理,由用户保证后端镜像的一致性.

(8) 重新设置镜像容积大小

reseize filename [ +|- ] size

改变镜像文件的大小,size支持K, M, G, T等单位,确保本机有空余空间,否则会数据丢失.qcow2 格式的镜像不支持缩小镜像的操作.resize前做好备份,如果失败,可能会导致镜像无法使用或数据丢失.


本文由 hongweipeng 创作,采用 知识共享署名 3.0,可自由转载、引用,但需署名作者且注明文章出处。

如果对您有用,您的支持将鼓励我继续创作!