虚拟机名称显示为 ds:///vmfs/volumes/datastore/vm_name
search cancel

虚拟机名称显示为 ds:///vmfs/volumes/datastore/vm_name

book

Article ID: 301333

calendar_today

Updated On:

Products

VMware vCenter Server

Issue/Introduction

Symptoms:
免责声明:本文为 Virtual machines names appear as ds:///vmfs/volumes/datastore/vm_name (2146168) 的翻译版本。尽管我们会不断努力为本文提供最佳翻译版本,但本地化的内容可能会过时。有关最新内容,请参见英文版本。

  • 虚拟机名称与存储位置一起显示:
    ds:///vmfs/volumes/datastore/vm_name

  • 如果使用 PowerCLI 命令重新注册虚拟机,则会出现此问题:
    New-VM -VMHost Hostname -VMFilePath DatastoreFullPath

    注意:
  • 根据 VMware 文档,重新注册虚拟机时,参数 Name 为可选。VMware 建议在每种情况下都使用该参数:
    New-VM -VMHost Hostname -VMFilePath DatastoreFullPath -Name VMname

  • 如果不使用此命令,升级后 vCenter Server 中可能会出现此问题。


Environment

VMware vCenter Server 6.0.x
VMware vCenter Server Appliance 6.0.x

Cause

出现此问题的原因是 vCenter Server 数据库中的表之间存在不匹配。

Resolution

此问题在 vCenter Server 6.0 Update 3 中已解决,请访问 VMware Downloads 下载。

要临时解决此问题,请使用以下任一选项:
  • 手动重命名受影响的虚拟机名称。
  • 迁移受影响的虚拟机将还原该名称。
  • 如果受影响的虚拟机数量较多,则执行以下步骤。

在较大的环境中,可能很难识别所有受影响的虚拟机。可以使用下列方法比较提及的两个表:

注意:在执行以下步骤前,确保对数据库进行完全备份。有关详细信息,请参见 Backing up the vCenter Server database running on Microsoft SQL or SQL Express server (2012138)
  1. 在数据库上,使用以下任一 SQL 查询。这两个查询都不会对数据库进行任何更改。

    注意:您可以使用两个查询进行验证

    select ENTITY.NAME, CONFIGINFO.NAME FROM
    VPX_ENTITY AS entity
    INNER JOIN VPX_VM_CONFIG_INFO AS configinfo
    ON entity.id = configinfo.id


    此查询返回 VPX_VM_CONFIG_INFO 表中的所有虚拟机名称以及在 VPX_ENTITY 表中找到的关联虚拟机名称。

    所有虚拟机名称应在各列之间匹配。每列包含相应表中的名称字段。如果一行包含不匹配的列,您可能需要使用以下 SQL 查询。

    select ENTITY.NAME, CONFIGINFO.NAME FROM
    VPX_ENTITY AS entity
    INNER JOIN VPX_VM_CONFIG_INFO AS configinfo
    ON entity.id = configinfo.id
    WHERE ENTITY.NAME != CONFIGINFO.NAME

    此查询返回 VPX_VM_CONFIG_INFO与VPX_ENTITY 表之间存在不匹配的所有虚拟机名称。如果没有不匹配,则查询不会返回任何行。

  2. 如果存在不匹配且您未手动进行修复,请停止 vCenter Server 服务并运行这些 SQL 更新语句,使这两个表重新匹配:

    UPDATE
    VPX_ENTITY
    SET
    name = configinfo.name
    FROM
    VPX_ENTITY AS entity
    INNER JOIN VPX_VM_CONFIG_INFO AS configinfo
    ON entity.id = configinfo.id
    WHERE configinfo.name != entity.name

  3. 启动 vCenter Server 服务,虚拟机名称将显示在 vCenter 清单列表上。

注意:如果嵌入式 Postgres 数据库出现此问题(具有嵌入式 Postgres 数据库的 vCenter Server Appliance 和适用于 Windows 的 vCenter Server),则向 VMware 技术支持提出支持请求,然后在问题描述中记录此知识库文章 ID (2146168)。有关详细信息,请参见 How to File a Support Request.



Additional Information

注意:截至 2016 年 8 月 26 日,上述链接正确无误。如果您发现某个链接已损坏,请提供反馈,VMware 员工会更新该链接。
Virtual machines names appear as ds:///vmfs/volumes/datastore/vm_name

Impact/Risks:
  • 在执行此过程前,请确保对数据库进行完全备份。
  • 此过程的风险较低,但是可以通过还原备份进行恢复。