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
要尝试修复检测到的问题,请使用
qemu-img check
命令和all
选项。但请注意,这可能只修复一些问题。警告修复磁盘镜像可能会导致数据损坏或其他问题。在尝试修复前备份磁盘镜像。
# 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 必须支持用于转换的源磁盘镜像格式。有关详细列表,请参阅 支持的磁盘镜像格式。
流程
使用
qemu-img 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
手册页
15.6.5. 支持的磁盘镜像格式
要在 RHEL 上运行虚拟机(VM),您必须使用具有支持格式的磁盘镜像。您还可以将某些不支持的磁盘镜像转换为支持的格式。
虚拟机支持的磁盘镜像格式
您可以使用以下格式的磁盘镜像,来在 RHEL 中运行虚拟机:
- qcow2 - 提供某些额外功能,如压缩。
- raw - 可以提供更好的性能。
- luks - 使用 Linux Unified Key Setup (LUKS)规范加密的磁盘镜像。
支持的用于转换的磁盘镜像格式
-
如果需要,您可以使用
qemu-img convert
命令,在raw
和qcow2
格式之间转换磁盘镜像。 -
如果您需要将 vmdk 磁盘镜像转换为
raw
或qcow2
格式,请使用virt-v2v
工具 将使用磁盘的虚拟机转换为 KVM。 要将其他磁盘镜像格式转换为
raw
或qcow2
,您可以使用qemu-img convert
命令。有关适用于这个命令的格式的列表,请查看 QEMU 文档。请注意,在大多数情况下,将非 KVM 虚拟机的磁盘镜像格式转换为
qcow2
或raw
不足以使虚拟机在 RHEL KVM 上正确运行。除了转换磁盘镜像外,还必须在虚拟机的客户机操作系统中安装和配置相应的驱动程序。对于支持的 hypervisor 转换,请使用virt-v2v
工具。