VMware Esxi7 仮想マシンが起動中でもコピーする方法

Esxiで仮想マシンのコピーを作成することはよくあることかと思います。しかし仮想マシンが起動中でvmdkファイルにロックがかかりコピーできません。今回は仮想マシンが起動中でもコピーする方法を記載したいと思います。
環境
- VMware Hypervisor (ESXi) 7.0 u1
ESXi へ SSH ログインを実施しますので、事前に SSH
と ESXi Shell
のサービスを起動しておきましょう。
作成の流れ
ESXi へ SSH 接続
Teratermを起動し対象のesxiのIPアドレスを入力し、SSHでOKを選択します。

ユーザー名(今回はroot)を入力後、”キーボードインタラクティブ認証を使う”のラジオボタンを選択し”OK”を押します。パスワードを入力してログインします。

ログイン後に対象の仮想マシンがある階層まで移動します。(datastore1内のcenos7を今回は対象にしています)
cd /vmfs/volumes/<データストア名>/<仮想マシン名>

スナップショットを取得(ロックを外す)
仮想マシンのスナップショットを取得するために、仮想マシンのID、vmidを以下のコマンドで取得します。(今回はgrepでcentosのみを表示させています)
vim-cmd vmsvc/getallvms

確認したvmidを指定して、スナップショットを作成します。スナップショット名は任意です。(スナップショット名をtest123としています)
vim-cmd vmsvc/snapshot.create <仮想マシン ID (vmid)> <スナップショット名>


スナップショット作成後、”centos7-000001.vmdk”と”centos7-000001-sesparse.vmdk”が作成されます。仮想マシンはこのディスクで稼働していることになるため、”centos7.vmdk”のロックが外れるためコピーできる状態となります。

仮想ディスク (vmdk)のコピー
以下のコマンドで仮想ディスク (vmdk) をバックアップします。-d thin
でシンプロビジョニングままコピーします。
vmkfstools -i コピー元.vmdk -d thin コピー先.vmdk
実際に使用したコマンド
vmkfstools -i /vmfs/volumes/datastore1/centos7/centos7.vmdk -d thin /v
mfs/volumes/USB-Datastore/copy/centos7.vmdk

スナップショットを削除
バックアップが完了したらスナップショットは不要になるので、スナップショットを削除し、仮想ディスクを統合します。(スナップショットを削除せずvmxファイルをコピーして起動しようとするとcentos7-000001.vmdkがありませんとエラーが発生します)
スナップショットを削除するためにスナップショット ID を確認します。
vim-cmd vmsvc/snapshot.get <仮想マシン ID (vmid)>

確認したスナップショット ID を指定し、スナップショットを削除します。
vim-cmd vmsvc/snapshot.remove <仮想マシン ID (vmid)> <スナップショット ID>

仮想ディスク(vmdk)以外のファイルのバックアップ
find コピー元ディレクトリ -not -name “*.vmdk” -exec cp {} コピー先ディレクトリ \;
今回使用したコマンド
centos7以下のvmdkファイル以外のものをcopy以下にコピーしています。(スワップファイル (vswp) やロックファイル (vmx.lck) などがコピーされませんが問題ありません)
find /vmfs/volumes/datastore1/centos7/* -not -name “*.vmdk” -exec cp {
} /vmfs/volumes/USB-Datastore/copy/ \;

最後に
copy以下にコピーされたvmxファイルを登録後に起動すれば問題なく立ち上がると思います。(以下出てきてもコピーしましたで大丈夫です)

-
前の記事
tar ~アーカイブファイルの作成/展開を行う~【Linuxコマンド集】 2021.06.08
-
次の記事
VMware Esxi 7に自動ログインするマクロ 2021.06.14