“在创建子虚拟磁盘之后父虚拟磁盘已被修改” 错误
search cancel

“在创建子虚拟磁盘之后父虚拟磁盘已被修改” 错误

book

Article ID: 301161

calendar_today

Updated On:

Products

VMware Desktop Hypervisor VMware vSphere ESXi

Issue/Introduction

本文介绍了诊断虚拟机的两个或多个虚拟磁盘文件之间内容 ID 不匹配现象的相关信息和故障排除步骤。
注意: 本文中介绍的更正父 CID 和 CID 不匹配问题的过程对 VMFSSPARSE 和 SESPARSE 类型增量磁盘均有效。


Symptoms:

免责声明: 本文为 Resolving the CID mismatch error: The parent virtual disk has been modified since the child was created (1007969) 的翻译版本。 尽管我们会不断努力为本文提供最佳翻译版本,但本地化的内容可能会过时。 有关最新内容,请参见英文版本。


  • 如果在创建子文件后修改了父文件,则您无法打开虚拟机电源或整合快照。 父文件包括基础磁盘和快照增量文件。
  • 根据修改或导致的不匹配情况,会显示以下任一错误:
    • Failed to open 'virtual machine disk' with flags 0xe (The parent virtual disk has been modified since the child was created)
    • Failed to open (The parent virtual disk has been modified since the child was created)
    • Failed to open 'virtual machine disk': The parent virtual disk has been modified since the child was created (18).
    • DISKLIB-LINK : Attach: Content ID mismatch (7b7644b2 != 4f5a6761)
    • DISKLIB-LINK : Attach: the capacity of each link is different (83886080 != 46399652).

  • 在 vSphere Client 中会显示以下错误:

    Cannot open the disk '/vmfs/volumes/4a365b5d-eceda1-19-439b-000cfc0086f3/examplevm/examplevm-000001.vmdk' or one of the snapshot disks it depends on.
    Reason: The parent virtual disk has been modified since the child was created.

  • 虚拟机日志包含类似以下内容的条目:

    vmx| DISKLIB-LINK : Attach: Content ID mismatch (d0fdb25b != ef4854ee).
    vmx| DISKLIB-CHAIN : "/vmfs/volumes/4a365b5d-eceda119-439b-000cfc0086f3/examplevm/examplevm.vmdk" : failed to open (The parent virtual disk has been modified since the child was created).
    vmx| DISKLIB-VMFS : "/vmfs/volumes/4a365b5d-eceda119-439b-000cfc0086f3/examplevm/examplevm-000002-delta.vmdk" : closed.
    vmx| DISKLIB-VMFS : "/vmfs/volumes/4a365b5d-eceda119-439b-000cfc0086f3/examplevm/examplevm-000001-delta.vmdk" : closed.
    vmx| DISKLIB-VMFS : "/vmfs/volumes/4a365b5d-eceda119-439b-000cfc0086f3/examplevm/examplevm-flat.vmdk" : closed.
    vmx| DISKLIB-LIB : Failed to open '/vmfs/volumes/4a365b5d-eceda119-439b-000cfc0086f3/examplevm/examplevm-000002.vmdk' with flags 0xa (The parent virtual disk has been modified since the child was created).
    vmx| DISK: Cannot open disk "/vmfs/volumes/4a365b5d-eceda119-439b-000cfc0086f3/examplevm/examplevm-000002.vmdk": The parent virtual disk has been modified since the child was created (18).
    vmx| Msg_Post: Error
    vmx| [msg.disk.noBackEnd] Cannot open the disk '/vmfs/volumes/4a365b5d-eceda119-439b-000cfc0086f3/examplevm/examplevm-000002.vmdk' or one of the snapshot disks it depends on.
    vmx| [msg.disk.configureDiskError] Reason: The parent virtual disk has been modified since the child was created.----------------------------------------
    vmx| Module DiskEarly power on failed.


  • 快照移除、删除或提交过程中虚拟机突然关闭。
  • 一执行 Storage vMotion 或迁移操作虚拟机就突然关闭,或在执行这些操作过程中虚拟机突然关闭。
  • 在尝试打开虚拟机电源时,您会看到以下错误:

    A general system error occurred: Internal error

  • 执行快照移除或打开虚拟机电源时生成以下错误:

    Content ID mismatch

  • 如果在提交快照时虚拟机中挂载的 RDM 增长,您可能会看到类似以下内容的错误:

    DISKLIB-LINK : DiskLinkIsAttachPossible: the capacity of each link is different (262144000 != 52428800)
    /vmfs/volumes/<datastore-name>/<vm-name>/<vm-name>.vmdk" : failed to open (The capacity of the parent virtual disk and the capacity of the child disk are different)
    DISKLIB-VMFS : "./<vm-name>-000002-delta.vmdk" : closed.
    DISKLIB-VMFS : "/vmfs/volumes/<datastore-name>/<vm-name>/<vm-name>-000001-delta.vmdk" : closed.
    DISKLIB-VMFS : "/vmfs/volumes/datastore/<vm-name>/<vm-name>-rdm.vmdk" : closed.
    DISKLIB-LIB : Failed to open '<vm-name>-000002.vmdk' with flags 0x17 The capacity of the parent virtual disk and the capacity of the child disk are different (67).
    Failed to open <vm-name>-000002.vmdk' : The capacity of the parent virtual disk and the capacity of the child disk are different (67)


Environment

VMware ESXi 4.0.x Embedded
VMware Workstation 10.x (Windows)
VMware ESXi 3.5.x Installable
VMware ESXi 4.1.x Installable
VMware ESXi 4.0.x Installable
VMware ESX 4.0.x
VMware ESX Server 3.0.x
VMware vSphere ESXi 5.0
VMware ESX Server 3.5.x
VMware vSphere ESXi 5.5
VMware ESX 4.1.x
VMware Workstation 11.x (for Windows)
VMware ESXi 3.5.x Embedded
VMware Workstation Pro 12.x (Windows)
VMware vSphere ESXi 5.1
VMware ESXi 4.1.x Embedded
VMware vSphere ESXi 6.0

Resolution

概述

虚拟机磁盘描述符文件的内容 ID (CID) 值有助于实现确保父虚拟磁盘文件(如平面磁盘或基础磁盘)中的内容保持其一致性状态这一目标。

从该基础磁盘快照派生的子增量磁盘包含所有进一步的写入和更改。 这些更改取决于源磁盘是否仍完好无损。

虚拟机磁盘描述符文件详细介绍了虚拟磁盘或虚拟磁盘增量文件的基本几何结构、格式或其他标识以及处理方式。 CID 位于每个虚拟机磁盘描述符文件中,以便进行完整性和状态跟踪。

基础磁盘的描述符文件示例
examplevm.vmdk

# Disk DescriptorFile
version=1
CID= 7b7644b2
parentCID=ffffffff
createType="vmfs"


# Extent description
RW 20971520 VMFS "examplevm-flat.vmdk"

# The Disk Data Base
#DDB

ddb.toolsVersion = "0"
ddb.adapterType = "lsilogic"
ddb.geometry.sectors = "63"
ddb.geometry.heads = "255"
ddb.geometry.cylinders = "1305"
ddb.uuid = "60 00 C2 9f ae de ba e9-95 4e a7 a6 4e 95 c1 c1"
ddb.virtualHWVersion = "4"

增量磁盘的描述符文件示例
examplevm-000001.vmdk

# Disk DescriptorFile
version=1
CID= 69a1c662
parentCID= 7b7644b2
createType="vmfsSparse"
parentFileNameHint="examplevm.vmdk"

# Extent description
RW 20971520 VMFSSPARSE "examplevm-000001-delta.vmdk"

# The Disk Data Base
#DDB

ddb.toolsVersion = "7302"

注意examplevm-000001.vmdk 引用 examplevm.vmdk,且从某些意义上来说取决于后者。

如果虚拟机引用虚拟磁盘,则它引用的是基础磁盘描述符文件或快照增量描述符文件。 在此示例中,虚拟机配置文件或 examplevm.vmx 是指增量磁盘描述符文件:

scsi0:0.present = "true"
scsi0:0.fileName = "examplevm-000001.vmdk"
scsi0:0.deviceType = "scsi-hardDisk"

无论何时打开虚拟机电源,引用的基础或增量磁盘描述符文件的 CID 值都会发生更改(请参见上述以蓝色打印的 CID)

examplevm-000001.vmdk before power-on:
CID= 69a1c662
parentCID=7b7644b2
examplevm-000001.vmdk after power-on:
CID= 6aff3ba2
parentCID=7b7644b2


所有这些都详细描述了运行情况良好的虚拟机。 此处可能存在不匹配,这会阻止此虚拟机的任务成功进行:

examplevm.vmdk:
CID= 12a9ffab
parentCID=ffffffff
examplevm-000001.vmdk:
CID=69a1c662
parentCID= 7b7644b2

实际上,CID 不匹配可确保偏离原始磁盘状态会导致所有从属子增量内容失效。 这会保护已存储的数据免遭进一步潜在损坏。

原因

大型虚拟机迁移(如 Storage vMotion 或迁移)中断、VMware 软件错误或用户操作可触发内容 ID 不匹配现象。

这些内容 ID 仅用于具有快照的虚拟机磁盘。 有关快照的详细信息,请参见 Understanding virtual machine snapshots in VMware ESXi and ESX (1015180)

尤其应避免出现以下情况:

故障排除

如果存在 CID 不匹配现象,错误消息中会提供虚拟机名称,但您必须确定:

  • 受影响的一个或多个虚拟机磁盘
  • 受影响的特定磁盘描述符文件
  • 不匹配的原因或发生的更改

确定受影响的虚拟机磁盘和描述符文件

可以通过多种方法登录到 ESX 主机来查看使用的数据存储的内容,具体取决于所用的 ESX 版本。 有关详细信息,请参见 Editing configuration files in VMware ESXi and ESX (1017022)

注意

  • VMware vSphere Client 或 VMware Infrastructure Client 中提供的数据存储浏览器无法区分虚拟机描述符文件 (1) 和平面或增量文件 (2)。 这些文件会折叠至单一条目以使数据存储浏览更为简洁。 如果需要区分两种文件,请使用所引用文章中提供的其他访问方法。
  • 基于 Web 的数据存储浏览器(可通过 https://server-ip 来访问)可用于浏览 VMFS 数据存储和区分虚拟机描述符文件及其相应的关联二进制文件。 您可以从数据存储浏览器中复制相关文件,然后进行编辑。 编辑后的文件可通过 vSphere Client 再次上载至数据存储。
  • 由于所遇到问题的性质,解决该问题的最快方法是使用各个 ESX 主机中提供的命令行界面。 如果您具备足够的命令行用法相关背景知识,请使用此方法。 此外,您也可以使用 VMware vSphere 命令行界面 (CLI) 或 VMware vSphere Management Assistant 应用程序 (vMA) 来获取虚拟机磁盘描述符文件以供查看。
  • 如果无法继续,请向 VMware 技术支持提交支持请求。 有关详细信息,请参见 Filing a Support Request in My VMware (2006985)

在找到虚拟机文件和目录后:

  1. 虚拟机的 vmware.log 文件包含用于确定受影响的特定磁盘链的信息。 查看日志并注意位置和受影响的文件。

    示例

    vmx| DISKLIB-LINK : Attach: Content ID mismatch (d0fdb25b != ef4854ee).
    vmx| DISKLIB-CHAIN : "/vmfs/volumes/4a365b5d-eceda119-439b-000cfc0086f3/examplevm/examplevm.vmdk" : failed to open (The parent virtual disk has been modified since the child was created).
    vmx| DISKLIB-VMFS : "/vmfs/volumes/4a365b5d-eceda119-439b-000cfc0086f3/examplevm/examplevm-000002-delta.vmdk" : closed.
    vmx| DISKLIB-VMFS : "/vmfs/volumes/4a365b5d-eceda119-439b-000cfc0086f3/examplevm/examplevm-000001-delta.vmdk" : closed.
    vmx| DISKLIB-VMFS : "/vmfs/volumes/4a365b5d-eceda119-439b-000cfc0086f3/examplevm/examplevm-flat.vmdk" : closed.
    vmx| DISKLIB-LIB : Failed to open '/vmfs/volumes/4a365b5d-eceda119-439b-000cfc0086f3/examplevm/examplevm-000002.vmdk' with flags 0xa (The parent virtual disk has been modified since the child was created).
    vmx| DISK: Cannot open disk "/vmfs/volumes/4a365b5d-eceda119-439b-000cfc0086f3/examplevm/examplevm-000002.vmdk": The parent virtual disk has been modified since the child was created (18).
    vmx| Msg_Post: Error
    vmx| [msg.disk.noBackEnd] Cannot open the disk '/vmfs/volumes/4a365b5d-eceda119-439b-000cfc0086f3/examplevm/examplevm-000002.vmdk' or one of the snapshot disks it depends on.
    vmx| [msg.disk.configureDiskError] Reason: The parent virtual disk has been modified since the child was created.----------------------------------------
    vmx| Module DiskEarly power on failed.

    注意: 这表明 examplevm-000002.vmdk 文件引用了其父文件(在其自身引用了另一个父文件),在 examplevm-000002.vmdk 创建之后一段时间修改了其中一个文件。 您必须在以下任一文件中采取更正措施: examplevm.vmdkexamplevm-000001.vmdkexamplevm-000002.vmdk

  2. 在确定问题点(或点)的情况下,为需要更正或编辑的磁盘描述符文件创建备份副本。 在上述示例中,需要 examplevm.vmdkexamplevm-000001.vmdkexamplevm-000002.vmdk 的备份。

  3. 查看每个受影响描述符文件的内容并比较不匹配的值。 例如:

    examplevm.vmdk:
    CID= 12a9ffab
    parentCID=ffffffff

    examplevm-000001.vmdk:
    CID=69a1c662
    parentCID= 7b7644b2

    examplevm-000002.vmdk:
    CID=59fab513
    parentCID=69a1c662


    磁盘 examplevm-000002.vmdk 链接到 examplevm-000001.vmdk,且没有错误。 但是,基础磁盘 examplevm.vmdk 已修改,导致出现错误。
注意:VMDK 文件序号不相关联。例如:

File CID PID
XXX.vmdk 1 ---------
XXX-000002.vmdk 2 1
XXX-000001.vmdk 3 2

尽管 XXX-000002.vmdk 文件在链中处于 XXX-000001.vmdk 文件之前,VMDK 文件仍能构成有效链。

更正内容 ID 不匹配

此时,问题点已确定,虚拟机文件已备份,必须应用更正措施。

要更正内容 ID 不匹配,请执行以下操作:

警告

  • CID 机制的存在是为了防止数据损坏。 根据父文件或文件受到的更改情况,客户机操作系统可能会在采取更正措施后无法成功引导。 备份恢复适用于此类情况。
  • 如果不能完全按照此处列出的步骤来操作,则这些步骤可能会给您的环境带来风险。 如果您不能轻松自如地执行这些步骤,请联系 VMware 技术支持并与他们一起解决此问题。
  1. 确认磁盘互相引用:

    基础磁盘的描述符文件示例 examplevm.vmdk

    # Disk DescriptorFile
    version=1
    CID= 12a9ffab
    parentCID=ffffffff
    createType="vmfs"

    # Extent description
    RW 20971520 VMFS " examplevm-flat.vmdk"

    # The Disk Data Base
    #DDB
    ddb.toolsVersion = "0"
    ddb.adapterType = "lsilogic"
    ddb.geometry.sectors = "63"
    ddb.geometry.heads = "255"
    ddb.geometry.cylinders = "1305"
    ddb.uuid = "60 00 C2 9f ae de ba e9-95 4e a7 a6 4e 95 c1 c1"
    ddb.virtualHWVersion = "4"

    增量磁盘的描述符文件示例 examplevm-000001.vmdk

    # Disk DescriptorFile
    version=1
    CID= 69a1c662
    parentCID= 7b7644b2
    createType="vmfsSparse"
    parentFileNameHint= " examplevm.vmdk"

    # Extent description
    RW 20971520 VMFSSPARSE "examplevm-000001-delta.vmdk"

    # The Disk Data Base
    #DDB
    ddb.toolsVersion = "7302"

    子增量磁盘的描述符文件示例 examplevm-000002.vmdk

    # Disk DescriptorFile
    version=1
    CID=59fab513
    parentCID= 69a1c662
    createType="vmfsSparse"
    parentFileNameHint= " examplevm-000001.vmdk"

    # Extent description
    RW 20971520 VMFSSPARSE "examplevm-000002-delta.vmdk"

    # The Disk Data Base
    #DDB
    ddb.toolsVersion = "7302"


    注意: 链接或链引用以蓝色突出显示。 此示例表明 examplevm-000002.vmdkexamplevm-000001.vmdk(即 examplevm.vmdk 的子项)的子项。 这三个磁盘文件构成了虚拟机和客户机操作系统角度的单个虚拟磁盘。

  2. 在两个问题点中的任意一个使用文本编辑器更改不匹配。 有关详细信息,请参见 Editing configuration files in VMware ESXi and ESX (1017022) 中的“首选编辑器”。 对于此示例,您可以更正 examplevm.vmdkexamplevm-000001.vmdk 磁盘文件。 在上述任意一种情况下,parentCIDCID 关系必须有效。

    示例examplevm.vmdk 的 CID 可以更改为 7b7644b2,以匹配 examplevm-000001.vmdk 的预期 parentCID 值。 此外,也可以将 examplevm-000001.vmdkparentCID 值更改为 12a9ffab,以匹配 examplevm.vmdk 的基础磁盘描述符文件的 CID。 还可以考虑创建一个您自己的 CID 值。

    注意: CID 由八 (8) 个十六进制小写数字 (00000000-ffffffff) 组成,且没有分隔符。

验证 CID 更正

对虚拟机文件进行的更正通常不会立即在产品的其余部分中确认。 同样地,随后的打开电源尝试可能也不会成功。

要验证 CID 更正,请执行以下操作:

  1. 登录到 VMware vSphere Client 或 VMware Infrastructure Client。
  2. 在“清单”中选择虚拟机,然后单击摘要选项卡。
  3. 资源下,右键单击包含虚拟机配置文件的数据存储,然后选择浏览。 随即会打开数据存储浏览器
  4. 找到虚拟机目录和文件。 现在可以将其最小化,因为在第 7 步中将使用到。
  5. 右键单击虚拟机,然后选择从清单中移除
  6. 出现提示时,通过单击确认您的选择。 虚拟机从左侧的清单中消失。
  7. 从第 4 步还原数据存储浏览器,右键单击虚拟机的配置文件(例如 examplevm.vmx),然后选择添加到清单
  8. 按照屏幕上的提示将虚拟机放回清单中。

    警告: 请勿打开虚拟机电源,除非您有其所有文件的有效副本或备份。 打开虚拟机电源后,进一步的不可逆更改会应用到磁盘结构。

  9. 准备就绪之后,打开虚拟机电源并确认客户机操作系统的状态。 可能会执行文件系统完整性检查,以查找和修复由初始 CID 不匹配造成的磁盘链更改而引起的任何复杂问题。


您还可以通过针对最高级别快照 .vmdk 执行以下命令来验证是否已更正 CID 不匹配:

vmkfstools -q snapshot_ xxxxxx#.vmdk -v10 | less



对于 ESXi 5.x:

vmkfstools -e snapshot_ xxxxxx #.vmdk


注意

  • 如果结果中存在 failed 消息,则 CID 不匹配尚未更正,或快照层次结构中仍存在不匹配。
  • 必须关闭虚拟机电源才能运行 -e 选项,否则将返回以下错误 -
    Failed to lock the file (16392)Disk chain is not consistent : Failed to lock the file (16392)


其他过程

此时,如果发生的更改不大,虚拟机应已成功启动。 客户机操作系统可能会表现出不同症状,具体取决于快照中发生的状况。

但是,如果虚拟机未处于可接受状态,您可能需要从备份副本中还原。 如果某个虚拟机不可用,可以考虑启动旧磁盘中的虚拟机。

示例: 提供的示例所引用的虚拟磁盘是 examplevm-000002.vmdk。 如有必要,可以修改虚拟机的配置文件以从 examplevm-000001.vmdk 中引导,使 examplevm-000002.vmdk 永久失效。 这可允许客户机操作系统按预期继续运行,但代价是会丢失 examplevm-000002.vmdk 增量文件中包含的所有信息。

您可以登录到 VMware ESX 或 VMware 命令行界面来编辑虚拟机的配置文件,并且可以从数据存储复制文件以在其他系统中使用首选文本编辑器加以编辑。

有关此主题的其他信息,请参见 Editing configuration files in VMware ESXi and ESX (1017022)

如果无法继续,请向 VMware 技术支持提交支持请求。 有关详细信息,请参见 Filing a Support Request in My VMware (2006985)

本文档的内容按“现状”提供,效力范围为适用法律所允许的最大范围,VMware 不承认与此内容有关的所有其他声明或担保(无论是明示或默认形式),包括这些声明或担保对特定用途的适用性、商业性或非侵权性。 VMWARE 对因使用此内容而造成的任何损害或与之相关的任何损害概不负责,包括直接、间接、后果性的损害、营利损失或特殊损害,即使 VMware 已被告知上述损害的可能性。


Additional Information

  • 如果关闭了虚拟机电源并尝试整合快照,则 vmware.log 文件将不包含失败的原因。 在这种情况下,hostd.log 文件位于在其中注册受影响虚拟机的 ESXi 主机上的 /var/log/ 中。

    在 ESXi 5.x 中,使用 vmkfstools -e 命令(而不是通过查看日志)来快速确定问题:

    错误显示父项和子项受到影响

    例如:

    # vmkfstools -e APU-ESB-01-000001.vmdk
    Disk link /vmfs/volumes/5303d209-b32fa2a0-edb9-0017a477c480/APU-ESB-01_1/APU-ESB-01-000001.vmdk successfully opened.
    Disk link /vmfs/volumes/5303d209-b32fa2a0-edb9-0017a477c480/APU-ESB-01_1/APU-ESB-01-000002.vmdk successfully opened.
    Disk link /vmfs/volumes/5303d209-b32fa2a0-edb9-0017a477c480/APU-ESB-01_1/APU-ESB-01.vmdk successfully opened.
    Cannot establish parent(/vmfs/volumes/5303d209-b32fa2a0-edb9-0017a477c480/APU-ESB-01_1/APU-ESB-01.vmdk)-child(/vmfs/volumes/5303d209-b32fa2a0-edb9-0017a477c480/APU-ESB-01_1/APU-ESB-01-000002.vmdk) relationship : The parent virtual disk has been modified since the child was created. The content ID of the parent virtual disk does not match the corresponding parent content ID in the child (18)
    Parent link description
    Name: /vmfs/volumes/5303d209-b32fa2a0-edb9-0017a477c480/APU-ESB-01_1/APU-ESB-01.vmdk
    Create Type: vmfs
    Capacity: 26843545600
    Content ID: 1894300628
    Parent Content ID: 4294967295
    Child link description
    Name: /vmfs/volumes/5303d209-b32fa2a0-edb9-0017a477c480/APU-ESB-01_1/APU-ESB-01-000002.vmdk
    Create Type: vmfsSparse
    Capacity: 26843545600
    Content ID: 1894300628
    Parent Content ID: 3919862208
    Disk chain is not consistent : The parent virtual disk has been modified since the child was created. The content ID of the parent virtual disk does not match the corresponding parent content ID in the child (18)

  • 在 VMware Workstation 产品上运行的虚拟机也可能会出现此错误。 此处介绍的方法对该环境有效,但必须使用 Windows 系统上的 Workstation 实用程序 vmware-vdiskmanager.exe 来代替 vmkfstools 命令。
"The parent virtual disk has been modified since the child was created" error