15.6. 使用 CLI 管理虚拟磁盘镜像
虚拟磁盘镜像是 虚拟存储卷 的一种类型,以类似于作为硬盘为物理机器提供存储的方式向虚拟机(VM)提供存储。
在创建新虚拟机 时,libvirt 会自动创建一个新磁盘镜像,除非您另有指定。但是,根据您的用例,您可能希望创建和管理独立于虚拟机的磁盘镜像。
15.6.1. 使用 qemu-img 创建虚拟磁盘镜像 复制链接链接已复制到粘贴板!
如果您需要一个独立于新虚拟机(VM)的新的虚拟磁盘镜像 创建一个存储卷 对您来说是不可行的,您可以使用 qemu-img 命令行工具。
流程
使用
qemu-img工具创建一个虚拟磁盘镜像:qemu-img create -f <format> <image-name> <size>
# qemu-img create -f <format> <image-name> <size>Copy to Clipboard Copied! Toggle word wrap Toggle overflow 例如,以下命令创建一个名为 test-image 的 qcow2 磁盘镜像,大小为 30GB:
qemu-img create -f qcow2 test-image 30G
# 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=16Copy to Clipboard Copied! Toggle word wrap Toggle overflow
验证
显示您创建的镜像的信息,并检查它是否具有所需的大小,且没有报告任何损坏:
Copy to Clipboard Copied! Toggle word wrap Toggle overflow
15.6.2. 检查虚拟磁盘镜像的一致性 复制链接链接已复制到粘贴板!
在将磁盘镜像附加到虚拟机(VM)前,请确保磁盘镜像没有问题,如损坏或碎片太多。为此,您可以使用 qemu-img check 命令。
如果需要,您还可以使用这个命令尝试修复磁盘镜像。
先决条件
- 任何使用磁盘镜像的虚拟机(VM)都必须关闭。
流程
对您要测试的镜像使用
qemu-img check命令。例如:qemu-img check <test-name.qcow2>
# 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: 21478375424Copy to Clipboard Copied! Toggle word wrap Toggle overflow 如果检查在磁盘镜像上发现问题,命令的输出类似如下:
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 要尝试修复检测到的问题,请使用
qemu-img check命令和all选项。但请注意,这可能只修复一些问题。警告修复磁盘镜像可能会导致数据损坏或其他问题。在尝试修复前备份磁盘镜像。
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 此输出显示修复后磁盘镜像上发现的问题数。
-
如果需要进一步的磁盘镜像修复,您可以在
guestfishshell 中使用各种libguestfs工具。
15.6.3. 调整虚拟磁盘镜像大小 复制链接链接已复制到粘贴板!
如果现有磁盘镜像需要额外的空间,您可以使用 qemu-img resize 工具更改镜像的大小,以适合您的用例。
先决条件
- 您已创建了磁盘镜像的备份。
任何使用磁盘镜像的虚拟机(VM)都必须关闭。
警告调整正在运行的虚拟机的磁盘镜像大小可能导致数据损坏或其他问题。
- 主机的硬盘有足够的空闲空间,用于预期的磁盘镜像大小。
- 可选: 您确保磁盘镜像没有数据损坏或类似的问题。具体说明请参阅 检查虚拟磁盘镜像的一致性。
流程
确定您要调整大小的虚拟机的磁盘镜像文件的位置。例如:
virsh domblklist <vm-name>
# virsh domblklist <vm-name> Target Source ---------------------------------------------------------- vda /home/username/disk-images/example-image.qcow2Copy to Clipboard Copied! Toggle word wrap Toggle overflow 可选: 备份当前磁盘镜像。
cp <example-image.qcow2> <example-image-backup.qcow2>
# cp <example-image.qcow2> <example-image-backup.qcow2>Copy to Clipboard Copied! Toggle word wrap Toggle overflow 使用
qemu-img resize工具来调整镜像大小。例如,要将 <example-image.qcow2> 大小增加 10GB:
qemu-img resize <example-image.qcow2> +10G
# qemu-img resize <example-image.qcow2> +10GCopy to Clipboard Copied! Toggle word wrap Toggle overflow - 调整磁盘镜像中文件系统、分区或物理卷的大小,以使用额外的空间。要在 RHEL 客户机操作系统中这样做,请使用 管理存储设备 和 管理文件系统 中的说明。
验证
显示调整了大小的镜像的信息,并查看它是否有预期的大小:
Copy to Clipboard Copied! Toggle word wrap Toggle overflow - 检查调整了大小的磁盘镜像是否有潜在的错误。具体说明请参阅 检查虚拟磁盘镜像的一致性。
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 convert -f raw <original-image.img> -O qcow2 <converted-image.qcow2>Copy to Clipboard Copied! Toggle word wrap Toggle overflow
验证
显示转换的镜像的信息,并查看它是否有预期格式和大小。
Copy to Clipboard Copied! Toggle word wrap Toggle overflow - 检查磁盘镜像是否有潜在的错误。有关说明,请参阅 检查虚拟磁盘镜像的一致性。
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工具。