从 vmware.log 重新构建虚拟机的 .vmx 文件
search cancel

从 vmware.log 重新构建虚拟机的 .vmx 文件

book

Article ID: 301447

calendar_today

Updated On:

Products

VMware vSphere ESXi

Issue/Introduction

免责声明:本文为 Rebuilding the virtual machine's .vmx file from vmware.log (1023880) 的翻译版本。尽管我们会不断努力为本文提供最佳翻译版本,但本地化的内容可能会过时。有关最新内容,请参见英文版本。


本文提供了可从 vmware.log 文件重新构建 .vmx 文件的 Shell 脚本。

如果 .vmx 丢失或丢失其配置,您可能希望重新构建虚拟机的 .vmx 文件,并恢复其内容。



Environment

VMware ESX 4.1.x
VMware vSphere ESXi 5.5
VMware vSphere ESXi 5.0
VMware ESX Server 3.0.x
VMware vSphere ESXi 5.1
VMware ESX 4.0.x
VMware ESX Server 3.5.x
VMware vSphere ESXi 6.0
VMware vSphere ESXi 6.5

Resolution

要使用从 vmware.log 文件解析信息的 Shell 脚本重新构建虚拟机的 .vmx 文件,请执行以下操作:

注意

  • VMware 不保证此脚本将恢复每个 .vmx 文件。如果该操作有必要,这仅仅是可供尝试的一个选项。例如,如果在上次打开虚拟机电源后已更改其配置,则信息可能不会记录在 vmware.log 中,因而 .vmx 文件可能并不准确。
  • 确保在继续之前先备份 .vmx 文件。
  • 确保运行虚拟机工作目录中的命令或脚本。要确定工作目录,右键单击虚拟机,单击编辑设置,然后单击选项 > 虚拟机工作位置
  1. 运行以下命令以使用文本编辑器创建新文件,并赋予其执行权限:

    touch vmxrebuild.sh && chmod +x vmxrebuild.sh


    注意:有关使用文本编辑器的信息,请参见 Editing files on an ESX host using vi or nano (1020302)

  2. 将以下脚本插入文件中:

    VMXFILENAME=$(sed -n 's/^.*Config file: .*\/\(.\+\)$/\1/p' vmware.log)
    echo -e "#\041/usr/bin/vmware" > ${VMXFILENAME}
    echo '.encoding = "UTF-8"' >> ${VMXFILENAME}
    sed -n '/DICT --- CONFIGURATION/,/DICT ---/ s/^.*DICT \+\(.\+\) = \(.\+\)$/\1 = "\2"/p' vmware.log >> ${VMXFILENAME}

    注意:在 ESXi 6.5 中执行此脚本时,将最后一行更改为
    sed -n '/DICT --- CONFIGURATION/,/DICT ---/ s/^.*DICT \+\(.\+\) = \(.\+\)$/\1 = \2/p' vmware.log >> ${VMXFILENAME}

  3. 保存该文件,确保格式为 .sh
  4. 如果 uuid.location 由于克隆或 Storage vMotion 等操作已更改,请运行以下命令获取新 UUID:

    NEWUUID=$(sed -n "s/^.*UUID: Writing uuid.location value: '\(.\+\)'.*$/\1/p" vmware.log)

    注意:尽可能使用最新的 vmware.log 文件。

  5. 运行以下命令将 .vmx 文件中的旧 UUID 替换为新 UUID:

    if [ "${NEWUUID}" ] then sed -i "s/uuid.location = .*$/uuid.location = \"${NEWUUID}\"/" ${VMXFILENAME} fi

  6. 使用以下命令运行脚本:

    ./vmxrebuild.sh

有关详细信息,请参见 Recovery of a lost or deleted virtual machine configuration file .vmx on an ESXi/ESX host (1002294)


Additional Information

要在更新本文时收到提醒,请在“Actions”框中单击 Subscribe to Article。