利用虚拟磁盘选项,您可以设置、迁移和管理存储在数据存储上的虚拟磁盘。其中的大部分任务也可以通过 vSphere Client 执行。

支持的磁盘格式

在创建或克隆虚拟磁盘时,可以使用 -d|--diskformat 子选项来指定磁盘格式。

您可以选择以下格式:

  • zeroedthick(默认)– 创建过程中为虚拟磁盘分配所需空间。创建时不会擦除物理设备上保留的任何数据,但是从虚拟机首次执行写入操作时会按需要将其置零。虚拟机不会从磁盘读取失效数据。
  • eagerzeroedthick – 在创建时为虚拟磁盘分配所需的空间。与 zeroedthick 格式相反,在创建过程中会将物理设备上保留的数据置零。创建这种格式的磁盘所需的时间可能会比创建其他类型的磁盘所用时间长。
  • thin – 精简置备的虚拟磁盘。与 thick 格式不同,这种格式在创建时不为虚拟磁盘分配所需空间,而是按需提供空间并置零。
  • rdm:设备 – 虚拟兼容模式裸磁盘映射。
  • rdmp:设备 – 物理兼容模式(直通)裸磁盘映射。
  • 2gbsparse – 最大数据区大小为 2 GB 的稀疏磁盘。您可将该格式磁盘与诸如 VMware Fusion 之类的托管 VMware 产品结合使用。但是,除非首先使用 vmkfstools 以兼容格式(如 thickthin)将磁盘重新导入,否则在 ESXi 主机上稀疏磁盘无法开机。

NFS 数据存储上的磁盘格式

NFS 仅可使用的磁盘格式为 thinthickzeroedthick2gbsparse

通常,Thickzeroedthickthin 格式的表现相同,因为决定分配策略的是 NFS 服务器而不是 ESXi 主机。大多数 NFS 服务器上的默认分配策略为 thin。但是,在支持 Storage APIs - Array Integration 的 NFS 服务器上,可以创建 zeroedthick 格式的虚拟磁盘。通过预留空间操作,NFS 服务器可以分配并确保空间。

有关阵列集成 API 的详细信息,请参见 vSphere中的存储硬件加速

创建虚拟磁盘

使用 vmkfstools 命令可以创建虚拟磁盘。

-c|--createvirtualdisk size[bB|sS|kK|mM|gG]
      -d|--diskformat [thin|zeroedthick|eagerzeroedthick]
      -W|--objecttype [file|vsan|vvol]
      --policyFile fileName

此选项将在数据存储上的指定路径创建虚拟磁盘。指定虚拟磁盘的大小。为 size 输入值时,可以加上 k(千字节)、m(兆字节)或 g(千兆字节)等后缀以指明其单位类型。单位类型不区分大小写。vmkfstoolskK 解释为千字节。如果不指定单位类型,vmkfstools 默认使用字节。

可以与 -c 选项一同指定以下子选项。

  • -d|--diskformat 指定磁盘格式。
  • -W|--objecttype 指定虚拟磁盘是 VMFS 数据存储上的文件还是 NFS 数据存储上的文件,是 vSAN 数据存储上的对象还是 Virtual Volumes 数据存储上的对象。
  • --policyFile fileName 指定磁盘的虚拟机存储策略。

创建虚拟磁盘的示例

本示例显示如何创建名为 disk.vmdk 的 2 千兆字节虚拟磁盘文件。您将在名为 myVMFS 的 VMFS 数据存储上创建该磁盘。该磁盘文件表示虚拟机可以访问的空虚拟磁盘。

vmkfstools -c 2048m /vmfs/volumes/myVMFS/disk.vmdk

初始化虚拟磁盘

使用 vmkfstools 命令可以初始化虚拟磁盘。

-w|--writezeros
该选项通过对虚拟磁盘的所有数据清零,从而对其进行清除。完成此命令可以需要花费很长时间,具体取决于您的虚拟磁盘的大小和托管虚拟磁盘的设备的 I/O 带宽。
注: NFS 数据存储不支持此命令。
小心: 使用此命令时,您将丢失虚拟磁盘上的所有现有数据。

扩充精简虚拟磁盘

使用 vmkfstools 命令可以扩充精简虚拟磁盘。

-j|--inflatedisk

该选项将 thin 虚拟磁盘转换为 eagerzeroedthick,从而保留了所有的现有数据。该选项将分配并置零所有还未分配的块。

将 Zeroedthick 虚拟磁盘转换为 Eagerzeroedthick 磁盘

可使用 vmkfstools 命令将任何 zeroedthick 虚拟磁盘转换为 eagerzeroedthick 磁盘。

-k|--eagerzero

执行转换时,此选项会保留虚拟磁盘上的任何数据。

请按以下示例执行操作:

vmkfstools --eagerzero /vmfs/volumes/myVMFS/VMName/disk.vmdk

移除置零块

使用 vmkfstools 命令可以移除置零块。

-K|--punchzero

该选项会对所有清零块取消分配,只留下那些先前分配且包含有效数据的块。生成的虚拟磁盘为精简格式的虚拟磁盘。

删除虚拟磁盘

使用 vmkfstools 命令删除 VMFS 卷上指定路径的虚拟磁盘文件。

使用下列选项:

-U|--deletevirtualdisk

重命名虚拟磁盘

使用 vmkfstools 命令可对 VMFS 卷上指定路径中的虚拟磁盘文件进行重命名。

您必须指定原始文件名或文件路径 oldName,以及新文件名或文件路径 newName

-E|--renamevirtualdisk oldNamenewName

克隆或转换虚拟磁盘或 RDM

可使用 vmkfstools 命令创建您指定的虚拟磁盘或裸磁盘的副本。

非 root 用户不能克隆虚拟磁盘或 RDM。您必须指定原始文件名或文件路径 oldName,以及新文件名或文件路径 newName

 -i|--clonevirtualdisk oldName newName
      -d|--diskformat [thin|zeroedthick|eagerzeroedthick|rdm:device|rdmp:device|2gbsparse]
      -W|--objecttype [file|vsan|vvol]
      --policyFile fileName
      -N|--avoidnativeclone

可使用以下子选项更改所创建副本的相应参数。

  • -d|--diskformat 指定磁盘格式。
  • -W|--objecttype 指定虚拟磁盘是 VMFS 数据存储上的文件还是 NFS 数据存储上的文件,是 vSAN 数据存储上的对象还是 Virtual Volumes 数据存储上的对象。
  • --policyFile fileName 指定磁盘的虚拟机存储策略。

默认情况下,ESXi 使用其本机方法执行克隆操作。如果您的阵列支持克隆技术,则您可以将操作卸载到阵列。要避免 ESXi 本机克隆,请指定 -N|--avoidnativeclone 选项。

克隆或转换虚拟磁盘的示例

本示例说明了如何将 templates 存储库中主虚拟磁盘的内容克隆到 myVMFS 文件系统上名为 myOS.vmdk 的虚拟磁盘文件。

vmkfstools -i /vmfs/volumes/myVMFS/templates/gold-master.vmdk /vmfs/volumes/myVMFS/myOS.vmdk

您可以通过向虚拟机配置文件中添加几行内容,将虚拟机配置为使用此虚拟磁盘,如以下示例中所示:

scsi0:0.present = TRUE 
scsi0:0.fileName = /vmfs/volumes/myVMFS/myOS.vmdk

如果您想要转换磁盘的格式,请使用 -d|--diskformat 子选项。

当所导入虚拟磁盘的格式与 ESXi 不兼容(例如 2gbsparse 格式)时,此子选项非常有用。转换磁盘后,您可以将此磁盘连接到您在 ESXi 中创建的新虚拟机。

例如:
vmkfstools -i /vmfs/volumes/myVMFS/templates/gold-master.vmdk /vmfs/volumes/myVMFS/myOS.vmdk  -d thin

扩展虚拟磁盘

创建虚拟机之后,可以使用 vmkfstools 命令扩展分配给该虚拟机的磁盘大小。

-X|--extendvirtualdisk newSize[bBsSkKmMgGtT]

指定 newSize 参数添加相应的单位后缀。单位类型不区分大小写。vmkfstoolskK 解释为千字节。如果不指定单位类型,vmkfstools 将默认为千字节。

上述 newSize 参数将重新定义整个磁盘的大小,而不是定义给磁盘增加的大小。

例如,要给 4 G 的虚拟磁盘扩展 1 G,则输入:vmkfstools -X 5gdisk name

通过使用 -d eagerzeroedthick 选项,可将虚拟磁盘扩展为 eagerzeroedthick 格式。

使用 -X 选项时,需要考虑以下注意事项:

  • 请勿对具有相关快照的虚拟机的基础磁盘进行扩展。否则,您再也不能提交快照或将基础磁盘转换回原始大小。
  • 扩展磁盘之后,您可能需要更新磁盘上的文件系统。这样,客户机操作系统才会识别磁盘的新大小并可以使用它。

升级虚拟磁盘

此选项可将指定的虚拟磁盘文件从 ESX Server 2 格式转换为 ESXi 格式。

使用此选项可转换 LEGACYSPARSE、LEGACYPLAIN、LEGACYVMFS、LEGACYVMFS_SPARSE 和 LEGACYVMFS_RDM 类型的虚拟磁盘。

-M|--migratevirtualdisk

创建虚拟兼容模式裸设备映射

可使用 vmkfstools 命令在 VMFS 卷上创建裸设备映射 (RDM) 文件并将裸 LUN 映射到此文件。建立此映射之后,您可以像访问常规 VMFS 虚拟磁盘那样访问 LUN。映射的文件长度与它指向的裸 LUN 的大小相同。

-r|--createrdm device

指定 device 参数时,请使用以下格式:

/vmfs/devices/disks/disk_ID:P

创建虚拟兼容模式 RDM 的示例

在此示例中,您可以创建名为 my_rdm.vmdk 的 RDM 文件,并将 disk_ID 裸磁盘映射到该文件。

vmkfstools -r /vmfs/devices/disks/disk_ID my_rdm.vmdk

您可以通过在虚拟机配置文件中添加以下行,将虚拟机配置为使用 my_rdm.vmdk 映射文件:

scsi0:0.present = TRUE 
scsi0:0.fileName = /vmfs/volumes/myVMFS/my_rdm.vmdk

创建物理兼容模式裸设备映射

可使用 vmkfstools 命令将直通裸设备映射到 VMFS 卷上的文件。通过此映射,虚拟机可以在访问虚拟磁盘时绕过 ESXi SCSI 命令筛选。当虚拟机必须发送专有 SCSI 命令时,例如当 SAN 感知软件在虚拟机上运行时,此类型的映射非常有用。

-z|--createrdmpassthru deviceexample.vmdk

建立此类型的映射后,您可以使用它像访问任何其他 VMFS 虚拟磁盘那样访问裸磁盘。

指定 device 路径时,请使用以下格式:

/vmfs/devices/disks/device_ID

对于.vmdk 名称,请使用以下格式。使用此命令前,请务必创建数据存储。

/vmfs/volumes/datastore_name/example.vmdk
例如,
vmkfstools -z /vmfs/devices/disks/naa.600a0000000000000... /vmfs/volumes/datastore1/mydisk.vmdk

列出 RDM 的属性

使用 vmkfstools 命令列出裸磁盘映射的属性。这些属性帮助标识 RDM 文件要映射到的存储设备对象。

-q|--queryrdm my_rdm.vmdk

该选项可打印裸磁盘 RDM 的名称。该选项也可打印裸磁盘的其他标识信息,例如,磁盘 ID。

列出 RDM 属性的示例

# vmkfstools -q /vmfs/volumes/VMFS/my_vm/my_rdm.vmdk 

Disk /vmfs/volumes/VMFS/my_vm/my_rdm.vmdk is a Passthrough Raw Device Mapping 

Maps to: vml.020000000060050768019002077000000000000005323134352020 

显示虚拟磁盘几何形状

使用 vmkfstools 命令获取有关虚拟磁盘几何形状的信息。

-g|--geometry

输出的格式为:Geometry information C/H/S,其中 C 表示柱面数量,H 表示磁头数量,S 表示扇区数量。

注: 将虚拟磁盘从托管的 VMware 产品导入到 ESXi 主机时,您可能会看到磁盘几何形状不匹配的错误消息。磁盘几何形状不匹配也会在您加载客户机操作系统或运行新创建的虚拟机时触发问题。

检查和修复虚拟磁盘

如果虚拟磁盘损坏,可使用 vmkfstools 命令检查或修复。

-x|--fix [check|repair]

例如,

vmkfstools -x check /vmfs/volumes/my_datastore/my_disk.vmdk

对磁盘链执行一致性检查

可使用 vmkfstools 命令检查整个快照链。您可以确定链中的任何链接是否损坏或者是否存在任何无效的父子关系。

-e|--chainConsistent