vmware.log から仮想マシンの .vmx ファイルを再作成する
search cancel

vmware.log から仮想マシンの .vmx ファイルを再作成する

book

Article ID: 436992

calendar_today

Updated On:

Products

VMware vCenter Server

Issue/Introduction

この記事では、シェルスクリプトを使用して vmware.log ファイルから .vmx ファイルを再作成する手順を説明します。
仮想マシンの .vmx ファイルが見つからない場合、または構成情報が失われている場合は、.vmx ファイルを再作成し、その内容を復元します。

Environment

VMware vSphere ESXi

Resolution

(vCenter Server VM の場合のみ、 Re-creating vCenter VM's vmx file when vmware.log is missing を参照してください。

vmware.log ファイルから情報を解析するシェルスクリプトを使用して仮想マシンの .vmx ファイルを再構築します:

Notes

  • VMware は、このスクリプトがすべての .vmx ファイルを復元できることを保証するものではありません。これは、操作が必要になった場合に試すオプションにすぎません。たとえば、仮想マシンの構成が前回の電源投入後に変更された場合、その情報は vmware.log に記録されないため、.vmx ファイルが正確でない可能性があります。
  • 作業を進める前に、必ず.vmxファイルのバックアップを取ってください。
  • 仮想マシンの作業ディレクトリからコマンドまたはスクリプトを実行します。作業ディレクトリを確認するには、仮想マシンを右クリックして 設定の編集 をクリックし、仮想マシン オプション仮想マシンの動作場所 をクリックします。
  1. SSHでESXiホストに接続します。
  2. 仮想マシンの作業ディレクトリに移動します。
  3. テキストエディタを使用して新しいファイルを作成するには、次のコマンドを実行し、実行権限を付与します。

    touch vmxrebuild.sh && chmod +x vmxrebuild.sh
     
  4. viエディタを使用してvmxrebuild.shファイルを編集し、以下のスクリプトをファイルに挿入してください。
    1. エディタを実行します。

      vi vmxrebuild.sh

    2. insert を押して、以下のスクリプト(ESXiホストのバージョンに応じて)をコピー&ペーストします。その後、ESC を押して :wq! と入力し保存/書き込みを行い、エディタモードを終了します。 

      テキストエディタの使用方法については、 Adding/Deleting/Editing a host entry on vCenter server or ESXi host using vi editorを参照してください。
ESXi 6.5/6.7/7.0/8.0
 
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 5.0/5.1/5.5/6.0

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}

  1. クローン作成や Storage vMotion などの操作によって uuid.location が変更された場合は、このコマンドを実行して新しい UUID を取得してください。それ以外の場合は、手順 3 と手順 4 をスキップしてください。

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

    : 可能な限り、最新の vmware.log ファイルを使用してください。
     
  2. .vmx ファイル内の古いUUIDを新しいUUIDに置き換えるには、次のコマンドを実行してください。

    if [ "${NEWUUID}" ] then sed -i "s/uuid.location = .*$/uuid.location = \"${NEWUUID}\"/" ${VMXFILENAME} fi
     
  3. 以下のコマンドを使用してスクリプトを実行してください。

    ./vmxrebuild.sh
注:このスクリプトは軽量で、ほぼ瞬時に完了します。スクリプトが完了すると、プロンプトは次の行に戻ります。完了を示すメッセージは表示されません。 
  1. VMの作業ディレクトリに新しい.vmxファイルが作成されていることを確認してください。

詳細については、Recreating a lost or deleted vmx file参照してください。

Additional Information

このドキュメントが更新されたときに通知を受け取るには、[Subscribe] ボタンをクリックします。

Recreating a lost or deleted vmx file

Rebuilding the virtual machine's .vmx file from vmware.log