VMware ESXi 仮想マシンのクローンを作成する

このページの内容は、VMware ESXi 6で行った内容です。

事前準備

ホストマシンから直接操作するか、もしくは、SSH接続できるようにしておきます。

対象の vmdk ファイルの確認

データのあるディレクトリは分かったけど、いざ開いてみたら vmdk がたくさん。いったいどれ?ってなったときは仮想マシンのプロパティから確認できます。

注意事項

vmdk だけは特別扱いします。
※vmkfstoolsを使うって意味です。vmdk以外は普通に cp 。

手順

# 場所の確認
ls -la /vmfs/volumes/ディスク/

# .vswp がある場合は仮想マシンを起動してシャットダウンすると消える。残しておいても良いけど容量が無駄に増える。

# 移動
cd /vmfs/volumes/ディスク/

データストアブラウザからシェルスクリプトファイルをアップロードして実行する

#!/bin/sh

# 開始時間
ST=`date +%s`

# 移動
cd /vmfs/volumes/ディスク/仮想マシン

# コピー
vmkfstools -i ディスク.vmdk ディスク-thin.vmdk -d thin

# 古い vmdk はリネーム
mv ディスク.vmdk old_ディスク.vmdk

# 経過時間
END=`date +%s`
SS=`expr ${END} - ${ST}`
echo " ${SS} seconds."

アップロードしてから

# 実行権限を付ける
chmod +x /vmfs/volumes/ディスク/clone.sh

# 実行する
/vmfs/volumes/ディスク/clone.sh

vmdk が2つある状態なので、入れ替えて古い方を削除

# 実行権限を付ける
vi /vmfs/volumes/ディスク/仮想マシン/ファイル.vmx

# scsi0:0.fileName = "ファイル.vmdk"
# ▲を探して、新しいファイルに書き換える

書き換え後、vSpere Client から「仮想マシン設定の編集」で確認しても変わってない。
けど、起動してから確認すると変わってる。

もともとの vmdk は削除してOK
不安な場合は、古いvmdkのファイル名を変更したり別の場所に移動して仮想マシンを起動できればOK。
それでも不安な場合は削除せず置いておく

使用できるコマンドに制限がある

ls -la /bin/sh

▲これがすべてなんですが、使えるコマンドはwikipediaをご覧ください。

function example(){   }
# ▲とか

find /vmfs/volumes/ディスク/仮想マシン -maxdepth 1 -type f ! -name '.vmdk' ! -name '.log' -print0 | xargs -0 cp -p {} /vmfs/volumes/ディスク/backup/仮想マシン
# ▲とか

こういうことをシェルスクリプトに書いてまとめて実行したいと思ったのですが、ダメっぽいです。