仮想マシンのコピーをバックアップとして保存するには、OVA形式でエクスポートする方法と、vmkfstools コマンドで仮想マシンファイルをコピーする方法がある。
OVA
・コマンド入力ではなく、Clientの操作でクローンが作成できるので、簡単でわかりやすい。
・入力ミスによる、誤作業(本番を誤って上書き、コピー漏れ、等)が起きにくい。
・shの作成・修正の手間が不要
vmkfstools
・早い(FCストレージ⇔R120b間で、20Gの仮想OSのクローン作製に、vmkfstools 1~3分/Client 10~15分)
・vCenterServerが無くてもクローンが作成できる。
同じ構成の仮想マシンを他のESXi ホストに多数展開する、テスト環境構築のためセットアップ初期状態の仮想マシンを保存しておく、等の用途であれば OVA、
運用フェーズでの定期バックアップなら、スクリプトで実行可能な vmkfstools を使う、など用途で適切に使い分けると良い。
※ そもそも OVA は仮想マシンのエクスポート/インポート用のものなので、運用でのバックアップに利用するのは適していない。
vmkfstoolsでバックアップを取得しようとしてエラーが出力される件
以前、仮想マシンのバックアップを実行した際、以下のメッセージが出力されました。意味不明です。
DiskLib_Check() failed for source disk The file specified is not a virtual disk (15).
調査の結果、このメッセージは、<XXX-flat.vmdk>に対するもので、以下のように直接ファイルを指定してコピーすることはできないそうです。
vmkfstools -i /仮想マシンフォルダのパス/<仮想マシン名>.vmdk /バックアップフォルダのパス/<仮想マシン名>.vmdk
vmkfstools -i /仮想マシンフォルダのパス/<仮想マシン名>-flat.vmdk /バックアップフォルダのパス/<仮想マシン名>-flat.vmdk
結論として、<XXX-flat.vmdk>は指定しない、が正解です。
1行目の無印vmdkの指定だけで、-flatもセットで取得されます。
この方法で取得した仮想マシンデータのコピーを、他のESXi ホストに追加して起動してみましたが、問題ありませんでした。
ためしに、こんなshをつくりまして、
/var/script # cat vm_backup3.sh
#env
PATH=/usr/sbin/:/bin/orgdir=/vmfs/volumes/FC-datastore1/
bkdir=/vmfs/volumes/datastore1_bk/vm1=VM-w2008R2_clone
mkdir $bkdir$vm1
vmkfstools -i $orgdir$vm1/$vm1.vmdk $bkdir$vm1/$vm1.vmdk
cp $orgdir$vm1/*nvram $bkdir$vm1/
cp $orgdir$vm1/*vmsd $bkdir$vm1/
cp $orgdir$vm1/*vmx $bkdir$vm1/
cp $orgdir$vm1/*vmxf $bkdir$vm1/
/var/script #
実行してみます。
/var/script # sh vm_backup3.sh
Destination disk format: VMFS zeroedthick
Cloning disk '/vmfs/volumes/FC-datastore1/VM-w2008R2_clone/VM-w2008R2_clone.vmdk'...
Clone: 100% done.
/var/script #
ノーリアクションで完了しました。
バックアップ元のフォルダを見てみます。
※ log は仮想マシンの構成ファイルでは無いので、バックアップ対象外。
/var/script # ls -la /vmfs/volumes/FC-datastore1/VM-w2008R2_clone/
drwxr-xr-x 1 root root 2380 Mar 7 04:14 .
drwxr-xr-t 1 root root 1820 Mar 2 06:00 ..
-rw-r--r-- 1 root root 76 Feb 27 09:36 VM-w2008R2_clone-0ddff29c.hlog
-rw------- 1 root root 7382 Feb 17 00:27 VM-w2008R2_clone-1.png
-rw------- 1 root root 42949672960 Mar 7 04:14 VM-w2008R2_clone-flat.vmdk
-rw------- 1 root root 8684 Mar 7 04:14 VM-w2008R2_clone.nvram
-rw------- 1 root root 526 Mar 7 04:07 VM-w2008R2_clone.vmdk
-rw-r--r-- 1 root root 0 Feb 13 01:44 VM-w2008R2_clone.vmsd
-rwxr-xr-x 1 root root 3190 Mar 7 04:14 VM-w2008R2_clone.vmx
-rw-r--r-- 1 root root 2852 Feb 29 00:35 VM-w2008R2_clone.vmxf
-rw-r--r-- 1 root root 38095 Feb 27 09:19 vmware-43.log
-rw-r--r-- 1 root root 38095 Feb 27 09:24 vmware-44.log
-rw-r--r-- 1 root root 38095 Feb 27 09:30 vmware-45.log
-rw-r--r-- 1 root root 38095 Feb 27 09:36 vmware-46.log
-rw-r--r-- 1 root root 176034 Feb 29 00:49 vmware-47.log
-rw-r--r-- 1 root root 173564 Mar 1 01:24 vmware-48.log
-rw-r--r-- 1 root root 173799 Mar 7 04:14 vmware.log
/var/script #
/var/script #
取得したクローンのフォルダを見てみます。
/var/script # ls -la /vmfs/volumes/datastore1_bk/VM-w2008R2_clone/
drwxr-xr-x 1 root root 1120 Mar 7 04:22 .
drwxr-xr-t 1 root root 1540 Mar 7 04:18 ..
-rw------- 1 root root 42949672960 Mar 7 04:18 VM-w2008R2_clone-flat.vmdk
-rw------- 1 root root 8684 Mar 7 04:22 VM-w2008R2_clone.nvram
-rw------- 1 root root 526 Mar 7 04:22 VM-w2008R2_clone.vmdk
-rw-r--r-- 1 root root 0 Mar 7 04:22 VM-w2008R2_clone.vmsd
-rwxr-xr-x 1 root root 3190 Mar 7 04:22 VM-w2008R2_clone.vmx
-rw-r--r-- 1 root root 2852 Mar 7 04:22 VM-w2008R2_clone.vmxf
/var/script #
/var/script #
flat.vmdkが取れてるので、大丈夫のようです。