搜索

15.6. 使用 CLI 管理虚拟磁盘镜像

download PDF

虚拟磁盘镜像是 虚拟存储卷 的一种类型,以类似于作为硬盘为物理机器提供存储的方式向虚拟机(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

15.6.2. 检查虚拟磁盘镜像的一致性

在将磁盘镜像附加到虚拟机(VM)前,请确保磁盘镜像没有问题,如损坏或碎片太多。为此,您可以使用 qemu-img check 命令。

如果需要,您还可以使用这个命令尝试修复磁盘镜像。

先决条件

  • 任何使用磁盘镜像的虚拟机(VM)都必须关闭。

流程

  1. 对您要测试的镜像使用 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
  2. 使用带有 -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

    此输出显示修复后磁盘镜像上发现的问题数。

  3. 如果需要进一步的磁盘镜像修复,您可以在 guestfish shell 中使用各种 libguestfs 工具。

其它资源

  • qemu-img 手册页
  • guestfish 手册页

15.6.3. 调整虚拟磁盘镜像大小

如果现有磁盘镜像需要额外的空间,您可以使用 qemu-img resize 工具更改镜像的大小,以适合您的用例。

先决条件

  • 您已创建了磁盘镜像的备份。
  • 任何使用磁盘镜像的虚拟机(VM)都必须关闭。

    警告

    调整正在运行的虚拟机的磁盘镜像大小可能导致数据损坏或其他问题。

  • 主机的硬盘有足够的空闲空间,用于预期的磁盘镜像大小。
  • 可选:您已确保磁盘镜像没有数据损坏或类似的问题。具体说明请参阅 检查虚拟磁盘镜像的一致性

流程

  1. 确定您要调整大小的虚拟机的磁盘镜像文件的位置。例如:

    # virsh domblklist <vm-name>
    
     Target   Source
    ----------------------------------------------------------
     vda      /home/username/disk-images/example-image.qcow2
  2. 可选:备份当前磁盘镜像。

    # cp <example-image.qcow2> <example-image-backup.qcow2>
  3. 使用 qemu-img resize 工具来调整镜像大小。

    例如,要将 <example-image.qcow2> 大小增加 10GB:

    # qemu-img resize <example-image.qcow2> +10G
  4. 调整磁盘镜像中文件系统、分区或物理卷的大小,以使用额外的空间。要在 RHEL 客户机操作系统中这样做,请使用 管理存储设备管理文件系统 中的说明。

验证

  1. 显示调整了大小的镜像的信息,并查看它是否有预期的大小:

    # 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
  2. 检查调整了大小的磁盘镜像是否有潜在的错误。具体说明请参阅 检查虚拟磁盘镜像的一致性

其它资源

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>

验证

  1. 显示转换的镜像的信息,并查看它是否有预期格式和大小。

    # 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
  2. 检查磁盘镜像是否有潜在的错误。有关说明,请参阅 检查虚拟磁盘镜像的一致性

其它资源

Red Hat logoGithubRedditYoutubeTwitter

学习

尝试、购买和销售

社区

关于红帽文档

通过我们的产品和服务,以及可以信赖的内容,帮助红帽用户创新并实现他们的目标。

让开源更具包容性

红帽致力于替换我们的代码、文档和 Web 属性中存在问题的语言。欲了解更多详情,请参阅红帽博客.

關於紅帽

我们提供强化的解决方案,使企业能够更轻松地跨平台和环境(从核心数据中心到网络边缘)工作。

© 2024 Red Hat, Inc.