当您的 ESXi 主机使用 SCSI 或 NVMe 协议连接到 Virtual Volumes 环境中的存储时,数据虚拟卷和配置虚拟卷将使用 VMFS6 进行格式化。因此,可用于 VMFS 的空间回收过程也可应用于数据和配置 Virtual Volumes。回收 Virtual Volumes 数据存储上的空间时,可以使用 esxcli storage vvol 命令手动取消映射虚拟卷中的可用块。

注: 从 8.0 Update 3 开始:
  • NVMe 支持的数据 Virtual Volumes 支持来自客户机操作系统的空间回收请求。
  • 配置 Virtual Volumes 支持自动空间回收。要手动回收空间,请按照给定过程中的步骤进行操作。

前提条件

过程

  1. 获取使用 VMFS 进行格式化的配置虚拟卷的存储容器 ID 和元 vVol UUID。
    1. 导航到包含虚拟卷的虚拟机。
      例如:
      [root@:~] cd /vmfs/volumes/vvol_datastore/VM_1
    2. 从路径中,提取存储容器 ID 和元 vVol UUID。
      [root@:/vmfs/volumes/vvol:4abe7eb4bf234ee0xxxxxxxxx/rfc4122.1ffee4bd-9c55-49b9-876d-xxxxxxxx
      在此示例中,

      容器 ID 是 vvol:4abe7eb4bf234ee0xxxxxxxxx

      元 VVOL UUID 是 rfc4122.1ffee4bd-9c55-49b9-876d-xxxxxxxx

  2. 使用以下命令取消映射配置卷中的可用块。
    esxcli storage vvol virtualvolume unmap
    该命令采用以下选项:
    选项 描述
    -c|--container-id=<str> 存储容器 ID。此选项为必填项。
    -n|--reclaim-unit=<long> 每次迭代时要取消映射的 VMFS 块的数量。
    -u|--uuid=<str> 元 vVol UUID。此选项为必填项。
  3. 通过检查 hostd 日志文件,确认已成功取消映射块。
    grep "Total Unmapped blocks from vmfs" /var/run/log/hostd.log

示例:

  1. [root@:~]esxcli storage vvol virtualvolume unmap -c vvol:4abe7eb4bf234ee0xxxxxxxxx -u rfc4122.1ffee4bd-9c55-49b9-876d-xxxxxxxx
  2. [root@:~] grep "Total Unmapped blocks from vmfs" /var/run/log/hostd.log

    输出类似以下内容:

    2023-06-01T10:27:45.836Z In(166) Hostd[1000342556]: [Originator@6876 sub=Libs opID=esxcli-5f-1861 sid=523fac9d user=root] Unmap: Done : Total Unmapped blocks from vmfs6 volume rfc4122.1ffee4bd-9c55-49b9-87 6d-xxxxxxxx : 0 (LFB Pass)

    2023-06-01T10:28:13.279Z In(166) Hostd[1000342556]: [Originator@6876 sub=Libs opID=esxcli-5f-1861 sid=523fac9d user=root] Unmap: Done : Total Unmapped blocks from vmfs6 volume rfc4122.1ffee4bd-9c55-49b9-87 6d-xxxxxxxx : 259421 (SFB Pass)