时光2020

  博客园  :: 首页  :: 新随笔  :: 联系 :: 订阅 订阅  :: 管理
  117 随笔 :: 0 文章 :: 9 评论 :: 17万 阅读

为增量磁盘重新创建缺少的虚拟磁盘 (VMDK) 描述符文件

文章 ID: 327862

calendar_today

更新于: 11-11-2024

产品

VMware vSphere ESXi的

问题/介绍

本文提供了基于 vmfsSparse 磁盘格式重新创建增量虚拟磁盘描述符文件的步骤。这种磁盘格式通常由虚拟机快照功能、实时虚拟机克隆操作和 Storage vMotion 提供。
 
本文的内容按“原样”提供,在适用法律允许的最大范围内,VMWARE 不对这些内容提供所有其他明示或暗示的陈述和保证,包括其对特定用途的适用性、适销性或非侵权性。对于因使用此内容而引起或与之相关的任何损害,包括直接、间接、后果性损害、业务利润损失或特殊损害,VMWARE 概不负责,即使 VMWARE 已被告知此类损害的可能性。


环境

VMware vSphere ESXi 6.x
VMware vSphere ESXi 7.x
VMware vSphere ESXi 8.x

分辨率

这种类型的磁盘文件由虚拟磁盘描述符文件和成对的增量扩展文件组成。这些数据文件基于 vmfsSparse 格式,用于存储一段时间的增量内容或“更改数据”,也称为快照。

注意


要为增量磁盘重新创建缺失虚拟磁盘 (VMDK) 描述符文件,请执行以下操作:

  1. 确认虚拟机目录是否包含另一个增量磁盘描述符文件或基础磁盘的描述符,以用作基础或模板。例如,您将在虚拟机目录中看到部分或全部文件:

    drwxr-xr-x 1 root root 1400 Aug 16 09:39 。
    drwxr-xr-t 1 根根 2520 8 月 16 日 09:32 ..
    -rw------- 1 根根 32768 8 月 17 日 19:11 examplevm-000002-delta.vmdk-rw
    ------- 1 根根 32768 8 月 17 日 19:11 examplevm-000002.vmdk-rw
    ------- 1 根根 32768 8 月 16 日 14:39 examplevm-000001-delta.vmdk-rw
    ------- 1 根根 32768 8 月 16 日 14:39 examplevm-000001.vmdk-rw
    ------- 1 根根 16106127360 8 月 16 日 09:32 examplevm-flat.vmdk-rw
    ------- 1 根根 469 8 月 16 日 09:32 examplevm.vmdk
    -rw------- 1 根根 18396 8 月 16 日 14:39 examplevm-Snapshot1.vmsn-rw
    ------- 1 根根 18396 8 月 17 日 19:11 examplevm-Snapshot2.vmsn-rw
    ------- 1 根根 397 8 月 16 日 09:39 examplevm.vmsn-rwxr-xr-x
    1 根根 1626 8 月 16 日 09:39 examplevm.vmx-rw
    ------- 1 根根 259 8 月 16 日 09:36 examplevm.vmxf

    注意
    • 红色突出显示的项目是描述符文件,理想情况下用作模板或基础 (如果存在)。
    • 如果缺少基础磁盘的描述符文件(或 examplevm.vmdk),请参阅重新创建缺少的虚拟机磁盘 (VMDK) 描述符文件 (1002511)。

      如果您有其他 delta 文件具有完整的描述符文件,则可以复制其中一个文件以用作模板。或者,复制基本磁盘描述符文件,或使用下表中最右侧的示例并自定义复制的内容。

      警告:确保在 ESXi/ESX 主机控制台或 SSH 会话之外修改的任何文件的字符编码符合 UTF-8。


    • 对于 ESXi 5.0 及更高版本,虚拟机的增量文件与它们所对应的磁盘位于同一目录中。有关此更改的详细信息,请参阅在 ESXi 5.0 中更改虚拟机的快照增量文件的位置 (2007563例如

      ,虚拟机有两个磁盘,每个磁盘位于不同的数据存储上:


      • 第一个磁盘 (disk.vmdk) 位于 datastore1 上
      • 第二个磁盘 (disk_1.vmdk) 位于 datastore2 上

      拍摄快照后,第一个磁盘 (disk-000001.vmdk) 的增量文件将存储在 datastore1 上,第二个磁盘 (disk_1-000001.vmdk) 的增量文件将存储在 datastore2 上。

  2. 假设增量磁盘 examplevm-000001.vmdk 的描述符文件缺失,并且其关联的增量文件 examplevm-000001-delta.vmdk 没有问题。

    要重新创建增量描述符文件,请复制当前基本磁盘描述符文件 examplevm.vmdk,其中包含缺少的描述符文件的名称 examplevm-000001.vmdk:

    # cp examplevm.vmdk examplevm-000001.vmdk

    我们只需编辑这个新的快照增量描述符文件,即可将其格式从基本磁盘描述符更改为快照增量磁盘描述符。

    修改新的 examplevm-000001.vmdk 增量描述符文件以包含以下信息:


    基本磁盘描述符文件 examplevm.vmdk 重新创建了增量描述符 examplevm-000001.vmdk(最初从 examplevm.vmdk 复制)
    # 磁盘描述符文件
    版本=1
    encoding=“UTF-8”
    CID=1974##
    ##parentCID=ffffffff
    createType=“vmfs”

    # 盘区描述
    RW 31457280 VMFS “examplevm-flat.vmdk”

    # 磁盘数据库
    #DDB

    ddb.virtualHWVersion = “7”
    ddb.longContentID = “5fd########5be
    ########## 90”
    ddb.uuid = “60 ## ## ## ## ## ##”ddb.geometry.cylinders
    = “1958”
    ddb.geometry.heads = “255”
    ddb.geometry.sectors = “63”
    ddb.adapterType = “lsilogic”
    # 磁盘描述符文件
    version=1
    encoding=“UTF-8”
    CID=7f3a1e17
    parentCID=19741890
    createType=“vmfsSparse”
    parentFileNameHint=“examplevm.vmdk”

    # 盘区描述
    RW 31457280 VMFSSPARSE “examplevm-000001-delta.vmdk”

    # 磁盘数据库
    #DDB

    ddb.longContentID = “5fd########5be
    ########## 90”

    注意
    • 如果要从基本磁盘描述创建快照描述符文件,请确保将条目从 VMFS 更改为 VMFSSPARSE。
    • 如果基础磁盘的大小大于 2 TB(仅在 ESXi 5.5 中支持 2 TB+),则需要进行以下更改:

      • createType=“vmfsSparse” 替换为 createType=“seSparse”
      • “区描述”下的 VMFSSPARSE 已替换为 SESPARSE
      • examplevm-000001-delta.vmdk 替换为 examplevm-000001-sesparse.vmdk
    • CID 和 parentCID 值是内容标识符 (CID)。有关 CID 以及如何更正 CID 不匹配错误的更多信息,请参阅解决 CID 不匹配错误:父虚拟磁盘自创建子虚拟磁盘以来已被修改 (1007969)。

      重新创建的文件需要使用其父级中的 CID 值。使用随机值更新 CID 值。在上面的示例中,examplevm.vmdk 是父项。因此,examplevm.vmdk(父级)中的 CID 与 examplevm-000001.vmdk(子级)中的 parentCID 值匹配。

      如果存在其他子增量磁盘,例如 examplevm-000002.vmdk(上例中未显示),请查看子磁盘的 parentCID,并确保它与重新创建的描述符文件的 CID 参数匹配。


    • 增量磁盘采用 vmfsSparse 格式;为 createType 参数指定此项。

      • 将 parentFileNameHint 设置为父虚拟磁盘文件。这包含虚拟机基础磁盘或增量描述符的文件名。

        根据可用信息,确定这可能不是一个立即明确或简单的过程。

        请参阅上次成功启动虚拟机时的相关vmware.log文件,以确定单个磁盘文件的打开顺序:

        vmx|磁盘:打开 scsi0:0 '/vmfs/volumes/########-########-####-##########/examplevm/examplevm-000003.vmdk' 持久 R[]
        vmx|DISKLIB-VMFS:“/vmfs/volumes/########-########-####-##########/examplevm/examplevm-000003-delta.vmdk”:打开成功 (10),大小 = 32768,hd = 65613。类型 8
        vmx|DISKLIB-DSCPTR:已打开 [0]:“examplevm-000003-delta.vmdk” (0xa)
        vmx|DISKLIB-LINK:打开“/vmfs/volumes/########-########-####-##########/examplevm/examplevm-000003.vmdk”(0xa):vmfs稀疏,31457280个扇区/15 GB。
        vmx|DISKLIB-VMFS:“/vmfs/volumes/########-########-####-##########/examplevm/examplevm-000002-delta.vmdk”:打开成功 (14),大小 = 32768,hd = 65614。类型 8
        vmx|DISKLIB-DSCPTR:已打开 [0]:“examplevm-000002-delta.vmdk” (0xe)
        vmx|DISKLIB-LINK:打开了“/vmfs/volumes/########-########-####-##########/examplevm/examplevm-000002.vmdk”(0xe):vmfsSparse,31457280个扇区/15 GB。
        vmx|DISKLIB-VMFS:“/vmfs/volumes/########-########-####-##########/examplevm/examplevm-000001-delta.vmdk”:打开成功 (14) 大小 = 32768,hd = 65615。类型 8
        vmx|DISKLIB-DSCPTR:打开 [0]:“examplevm-000001-delta.vmdk” (0xe)
        vmx|DISKLIB-LINK:打开了“/vmfs/volumes/########-########-####-##########/examplevm/examplevm-000001.vmdk”(0xe):vmfsSparse,31457280个扇区/15 GB。
        vmx|DISKLIB-VMFS:“/vmfs/volumes/########-########-####-##########/examplevm/examplevm-flat.vmdk”:打开成功 (14) 大小 = 16106127360,hd = 65616。类型 3
        vmx|DISKLIB-DSCPTR:已打开 [0]:“examplevm.vmdk” (0xe)
        vmx|DISKLIB-LINK:打开“/vmfs/volumes/########-########-####-##########/examplevm/examplevm.vmdk”(0xe):vmfs,31457280个扇区/15 GB。
        vmx|DISKLIB-CHAINESX:ChainESXOpenSubChain:numLinks = 4,numSubChains = 1
        vmx|DISKLIB-LIB:打开了“/vmfs/volumes/########-########-####-##########/examplevm/examplevm-000003.vmdk”(标记 0xa)。
        vmx|磁盘:打开 '/vmfs/volumes/########-########-####-##########/examplevm/examplevm-000003.vmdk' 地理位置 (1958/255/63) BIOS 地理位置 (0/0/0)

        以蓝色突出显示的部分是虚拟机的虚拟磁盘描述符文件中使用的基本配置参数。虚拟磁盘树的布局可以使用相同的日志文件,根据打开文件的顺序和时间线来确定。在此示例中:


        • 已打开虚拟机的一个磁盘 SCSI 0:0。指定的文件为 examplevm-000003.vmdk。
        • 此磁盘具有父级,并引用了 examplevm-000002.vmdk。这还有一个父项和引用的 examplevm-000001.vmdk。
        • 它本身是一个中间磁盘文件,它引用 examplevm.vmdk 作为其父级。这是虚拟机的基础磁盘。
      • 如果没有可用的日志文件,则在建立增量磁盘排序时,可以考虑目录中文件的创建或修改日期。
      • 查看每个剩余虚拟机增量磁盘的描述符文件还将阐明虚拟机的现有布局。

        警告: 这些文件并不总是按数字顺序排序的。对磁盘文件进行错误排序可能会导致客户机操作系统中出现严重的文件系统损坏,和/或在虚拟机打开电源时触发 CID 不匹配情况。如有疑问,请停止并联系 VMware 技术支持以提交支持请求。有关更多信息,请参阅在 Customer Connect 中提交支持请求 (2006985)。


    • 盘区描述指定包含虚拟机磁盘数据的相应数据文件:

      RW 31457280 VMFS “examplevm-flat.vmdk”

      RW 编号是盘区或磁盘文件的 512 字节扇区数(或“扇区计数”)。基础磁盘的 RW 值用于附加到它的增量磁盘的整个链中;任何子虚拟磁盘文件都不应偏离定义的数量,并且将包含相同的值。


    • 与基本磁盘描述符文件不同,DDB 部分不包含几何信息。仅使用长内容 ID(与 ESX 4.x 虚拟机和更高版本相关):

      ddb.longContentID = “5f ############################# 90”

      此值还与与增量虚拟磁盘关联的父磁盘(和基础磁盘)匹配。不要包括 delta disk 描述符文件的几何信息。



其他信息

posted on   时光2020  阅读(56)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· PowerShell开发游戏 · 打蜜蜂
· 在鹅厂做java开发是什么体验
· 百万级群聊的设计实践
· WPF到Web的无缝过渡:英雄联盟客户端的OpenSilver迁移实战
· 永远不要相信用户的输入:从 SQL 注入攻防看输入验证的重要性
点击右上角即可分享
微信分享提示