15.6. 使用 CLI 管理虚拟磁盘镜像
虚拟磁盘镜像是 虚拟存储卷 的一种类型,以类似于作为硬盘为物理机器提供存储的方式向虚拟机(VM)提供存储。
在创建新虚拟机 时,libvirt
会自动创建一个新磁盘镜像,除非您另有指定。但是,根据您的用例,您可能希望创建和管理独立于虚拟机的磁盘镜像。
15.6.1. 使用 qemu-img 创建虚拟磁盘镜像
如果您需要一个独立于新虚拟机(VM)的新的虚拟磁盘镜像 创建一个存储卷 对您来说是不可行的,您可以使用 qemu-img
命令行工具。
流程
使用
qemu-img
工具创建一个虚拟磁盘镜像:# qemu-img create -f <format> <image-name> <size>
例如,以下命令创建一个名为 test-image 的 qcow2 磁盘镜像,其大小为 30GB。
# qemu-img create -f qcow2 test-image 30G Formatting 'test-img', fmt=qcow2 cluster_size=65536 extended_l2=off compression_type=zlib size=32212254720 lazy_refcounts=off refcount_bits=16
验证
显示有关您创建的镜像的信息,并检查它是否有所需的大小,且没有任何损坏:
# qemu-img info <test-img> image: test-img file format: qcow2 virtual size: 30 GiB (32212254720 bytes) disk size: 196 KiB cluster_size: 65536 Format specific information: compat: 1.1 compression type: zlib lazy refcounts: false refcount bits: 16 corrupt: false extended l2: false
其它资源
- 使用 CLI 创建并分配存储卷
- 使用 web 控制台向虚拟机添加新磁盘
-
qemu-img
手册页
15.6.2. 检查虚拟磁盘镜像的一致性
在将磁盘镜像附加到虚拟机(VM)前,请确保磁盘镜像没有问题,如损坏或碎片太多。为此,您可以使用 qemu-img check
命令。
如果需要,您还可以使用这个命令尝试修复磁盘镜像。
先决条件
- 任何使用磁盘镜像的虚拟机(VM)都必须关闭。
流程
对您要测试的镜像使用
qemu-img check
命令。例如:# qemu-img check <test-name.qcow2> No errors were found on the image. 327434/327680 = 99.92% allocated, 0.00% fragmented, 0.00% compressed clusters Image end offset: 21478375424
如果检查在磁盘镜像上发现问题,命令的输出类似如下:
167 errors were found on the image. Data may be corrupted, or further writes to the image may corrupt it. 453368 leaked clusters were found on the image. This means waste of disk space, but no harm to data. 259 internal errors have occurred during the check. Image end offset: 21478375424
使用带有
-r all
选项的qemu-img check
命令修复它们。但请注意,这可能只修复一些问题。警告修复磁盘镜像可能会导致数据损坏或其他问题。在尝试修复前备份磁盘镜像。
# qemu-img check -r all <test-name.qcow2> [...] 122 errors were found on the image. Data may be corrupted, or further writes to the image may corrupt it. 250 internal errors have occurred during the check. Image end offset: 27071414272
此输出显示修复后磁盘镜像上发现的问题数。
-
如果需要进一步的磁盘镜像修复,您可以在
guestfish
shell 中使用各种libguestfs
工具。
其它资源
-
qemu-img
手册页 -
guestfish
手册页
15.6.3. 调整虚拟磁盘镜像大小
如果现有磁盘镜像需要额外的空间,您可以使用 qemu-img resize
工具更改镜像的大小,以适合您的用例。
先决条件
- 您已创建了磁盘镜像的备份。
任何使用磁盘镜像的虚拟机(VM)都必须关闭。
警告调整正在运行的虚拟机的磁盘镜像大小可能导致数据损坏或其他问题。
- 主机的硬盘有足够的空闲空间,用于预期的磁盘镜像大小。
- 可选:您已确保磁盘镜像没有数据损坏或类似的问题。具体说明请参阅 检查虚拟磁盘镜像的一致性。
流程
确定您要调整大小的虚拟机的磁盘镜像文件的位置。例如:
# virsh domblklist <vm-name> Target Source ---------------------------------------------------------- vda /home/username/disk-images/example-image.qcow2
可选:备份当前磁盘镜像。
# cp <example-image.qcow2> <example-image-backup.qcow2>
使用
qemu-img resize
工具来调整镜像大小。例如,要将 <example-image.qcow2> 大小增加 10GB:
# qemu-img resize <example-image.qcow2> +10G
- 调整磁盘镜像中文件系统、分区或物理卷的大小,以使用额外的空间。要在 RHEL 客户机操作系统中这样做,请使用 管理存储设备 和 管理文件系统 中的说明。
验证
显示调整了大小的镜像的信息,并查看它是否有预期的大小:
# qemu-img info <converted-image.qcow2> image: converted-image.qcow2 file format: qcow2 virtual size: 30 GiB (32212254720 bytes) disk size: 196 KiB cluster_size: 65536 Format specific information: compat: 1.1 compression type: zlib lazy refcounts: false refcount bits: 16 corrupt: false extended l2: false
- 检查调整了大小的磁盘镜像是否有潜在的错误。具体说明请参阅 检查虚拟磁盘镜像的一致性。
15.6.4. 在虚拟磁盘镜像格式之间转换
您可以使用 qemu-img convert
命令将虚拟磁盘镜像转换为不同的格式。例如,如果要将磁盘镜像附加到运行在不同 hypervisor 上的虚拟机(VM),在虚拟磁盘镜像格式之间转换可能是必要的。
先决条件
- 任何使用磁盘镜像的虚拟机(VM)都必须关闭。
流程
使用
qemu-im convert
命令将现有虚拟磁盘镜像转换为不同的格式。例如,将 raw 磁盘镜像转换为 QCOW2 磁盘镜像:# qemu-img convert -f raw <original-image.img> -O qcow2 <converted-image.qcow2>
验证
显示转换的镜像的信息,并查看它是否有预期格式和大小。
# qemu-img info <converted-image.qcow2> image: converted-image.qcow2 file format: qcow2 virtual size: 30 GiB (32212254720 bytes) disk size: 196 KiB cluster_size: 65536 Format specific information: compat: 1.1 compression type: zlib lazy refcounts: false refcount bits: 16 corrupt: false extended l2: false
- 检查磁盘镜像是否有潜在的错误。有关说明,请参阅 检查虚拟磁盘镜像的一致性。
其它资源
- 检查虚拟磁盘镜像的一致性
-
qemu-img
手册页