qemu-img命令详解

本文介绍了qemu-img的强大功能,如磁盘镜像创建(包括raw和qcow2格式的差异)、转换、大小调整以及qcow2的预分配策略。重点讲解了如何使用qemu-img创建qcow2镜像,以及不同预分配选项对磁盘空间的影响。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

qemu-img是一个功能强大磁盘镜像管理工具。
qemu-img --help 包括以下功能:

  • check:检查完整性
  • create:创建镜像
  • commit:提交更改
  • compare:比较
  • convert:转换
  • info:获取信息
  • map:映射
  • snapshot:快照管理
  • rebase:在已有的的基础上创建新的镜像
  • resize:调整大小
  • amend:修订镜像格式选项

示例:

create创建磁盘:

[root@desktop example]# ls
[root@desktop example]# qemu-img create t1.img 1g    # 创建一个1G的磁盘文件
Formatting 't1.img', fmt=raw size=1073741824
[root@desktop example]# ls
t1.img
[root@desktop example]# qemu-img info t1.img         # 查看指定磁盘文件的信息
image: t1.img
file format: raw
virtual size: 1.0G (1073741824 bytes)
disk size: 0
[root@desktop example]#

磁盘镜像qcow2格式选项:

  1. backing_file:指定后端镜像文件
  2. backing_fmt:设置后端镜像的镜像格式。
  3. cluster_size:设置镜像中的簇大小,取值在512到2M之间,默认值为64K。
  4. preallocation:设置镜像文件空间的预分配模式
  5. encryption:用于设置密码。

预分配策略:

  • off:缺省策略,即不使用预分配策略
  • metadata:分配元数据,预分配后的虚拟磁盘仍然属于稀疏映像类型
  • full:分配所有磁盘空间并置零,预分配后的虚拟磁盘属于非稀疏映像类型
  • falloc:分配文件的块并标示它们的状态的未初始化,相对full模式来说,创建虚拟磁盘的速度要快得多
# 每种预分配格式创建的磁盘镜像文件初始占用的磁盘空间 -f qcow2指定创建所使用的格式
[root@desktop example] qemu-img create -f qcow2 test1.qcow2 1g
[root@desktop example] qemu-img create -f qcow2 test2.qcow2 1g  -o preallocation=off
[root@desktop example] qemu-img create -f qcow2 test3.qcow2 1g  -o preallocation=metadata
[root@desktop example] qemu-img create -f qcow2 test4.qcow2 1g  -o preallocation=falloc
[root@desktop example] qemu-img create -f qcow2 test5.qcow2 1g  -o preallocation=full
[root@desktop example]# ls -lh
total 2.1G
-rw-r--r--. 1 root root 1.0G Mar 18 09:11 t1.img
-rw-r--r--. 1 root root 193K Mar 18 09:30 test1.qcow2
-rw-r--r--. 1 root root 193K Mar 18 09:32 test2.qcow2
-rw-r--r--. 1 root root 1.1G Mar 18 09:32 test3.qcow2
-rw-r--r--. 1 root root 1.1G Mar 18 10:01 test4.qcow2
-rw-r--r--. 1 root root 1.1G Mar 18 10:01 test5.qcow2
[root@desktop example]# du -h *
0       t1.img
196K    test1.qcow2
196K    test2.qcow2
516K    test3.qcow2
1.1G    test4.qcow2
1.1G    test5.qcow2
[root@desktop example]#

backing_file指定后端镜像盘:指定后端镜像盘来创建新的镜像盘 

  • -f指定创建的磁盘镜像文件格式
  • backing_file指定所用的后端磁盘镜像文件
[root@desktop example]# qemu-img create -f qcow2 -o backing_file=test3.qcow2 new_disk.qcow2
Formatting 'new_disk.qcow2', fmt=qcow2 size=1073741824 backing_file='test3.qcow2' encryption=off cluster_size=65536 lazy_refcounts=off
[root@desktop example]# qemu-img info new_disk.qcow2
image: new_disk.qcow2
file format: qcow2
virtual size: 1.0G (1073741824 bytes)
disk size: 196K
cluster_size: 65536
backing file: test3.qcow2
Format specific information:
    compat: 1.1
    lazy refcounts: false


虚拟磁盘格式转换,把raw格式的镜像文件转成qcow2的磁盘镜像文件

  • -O 指定输出格式
[root@desktop example]# qemu-img convert -O qcow2 t1.img t1.qcow2
[root@desktop example]# qemu-img info t1.qcow2
image: t1.qcow2
file format: qcow2
virtual size: 1.0G (1073741824 bytes)
disk size: 196K
cluster_size: 65536
Format specific information:
    compat: 1.1
    lazy refcounts: false
[root@desktop example]#


调整虚拟磁盘大小:
语法格式:resize filename [+|-] size
操作之前,一定要做好数据备份
增加文件大小后,需要在客户机使用fdisk,parted等分区工具进行相应的操作才能真正让客户机使用到增加后的镜像空间。
缩小镜像之前,要在客户机中保证里面的文件系统有空余空间,否则会数据丢失。
qcow2不支持缩小镜像的操作。

[root@desktop example]# qemu-img info test5.qcow2
image: test5.qcow2
file format: qcow2
virtual size: 1.0G (1073741824 bytes)
disk size: 1.0G
cluster_size: 65536
Format specific information:
    compat: 1.1
    lazy refcounts: false
[root@desktop example]# qemu-img resize test5.qcow2 +2G
Image resized.
[root@desktop example]# qemu-img info test5.qcow2
image: test5.qcow2
file format: qcow2
virtual size: 3.0G (3221225472 bytes)
disk size: 1.0G
cluster_size: 65536
Format specific information:
    compat: 1.1
    lazy refcounts: false
针对虚拟机的硬盘扩容,特别是在使用Linux系统中的virsh工具和qemu-img命令时,正确的操作步骤至关重要。以下是一个详细的操作指南: 参考资源链接:[Linux virsh KVM虚机硬盘扩容教程:步骤详解](https://wenku.csdn.net/doc/2fen83fkrf?spm=1055.2569.3001.10343) 首先,确保虚拟机已经被关闭,以避免数据损坏。可以通过运行`virsh shutdown <虚拟机名称>`来停止虚拟机。 接下来,为了找到虚拟机的磁盘文件位置,可以使用`virsh domblklist <虚拟机名称>`命令列出所有块设备。通过这个列表,我们可以识别出需要扩容的硬盘文件。 使用qemu-img命令进行硬盘扩容。例如,如果你想将一个名为`CentOS-7-2009.qcow2`的硬盘文件从300GB扩展到500GB,可以在终端中输入以下命令: ``` qemu-img resize CentOS-7-2009.qcow2 +200G ``` 这里的`+200G`表示增加200GB的空间。 在磁盘大小调整后,还需要在虚拟机内部使用分区工具来扩展分区以使用新增的空间。在虚拟机运行状态下,可以使用`virt-resize`工具。首先,确保已经安装了`libguestfs-tools`,然后运行如下命令: ``` virt-resize --expand /dev/sda2 CentOS-7-2009.qcow2 CentOS-7-resized.qcow2 ``` 这条命令将会把`/dev/sda2`分区扩展,使得虚拟机能够使用新增的磁盘空间。 完成上述步骤后,为了使变更生效,需要重新启动虚拟机。在虚拟机启动后,使用`df -h`检查分区和文件系统是否已经扩展到了新的磁盘空间。 整个过程需要确保每一步都严格按照操作指南进行,以保证数据安全和虚拟机的稳定性。对于想要更深入了解virsh工具或qemu-img命令的用户,推荐参考《Linux virsh KVM虚机硬盘扩容教程:步骤详解》。这份资料不仅涵盖了硬盘扩容的具体操作,还包含了相关的理论知识,帮助你全面掌握虚拟机管理技能。 参考资源链接:[Linux virsh KVM虚机硬盘扩容教程:步骤详解](https://wenku.csdn.net/doc/2fen83fkrf?spm=1055.2569.3001.10343)
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值