感謝のプログラミング 10000時間

たどり着いた結果(さき)は、感謝でした。

VMware ESXiでスナップショットを作成したり、cloneを作成するときのロックについてのメモ。

<スポンサーリンク>

スナップショットとは

VMwareにおける、スナップショットとは、仮想マシンの状態を保存して、必要なときに仮想マシンの状態を元に戻すことができる機能のこと。
仮想マシンの設定変更後の動作確認、新規導入するハードウェアやソフトウェアのバッチ適用のテストを行うときなど、スナップショットをとっておけば、何かあっても元に戻すことができる。

これはけっこう重要なのだが、1つ目のスナップショットを作成した時点以降に変更した差分情報は、仮想マシンのvmdkファイルとは"別の"差分vmdkファイルに書き込まれることになる。
スナップショットを放置し過ぎると、仮想マシン(vmdkファイル)と差分を積み重ねる差分vmdkファイルの差がどんどん開いていって、あとでマージするのに時間がかかってしまう。
バックアップのときにスナップショットを取ったりするんだけど、スナップショットを取ることで、スナップショット側のvmdkファイルに差分が書き込まれるようになるから、元のvmdkファイルのロックが外れるというわけだ。

ESXiの仮想マシンのコピーを取得する

vim-cmd vmsvc/getallvmsコマンドは、仮想マシンのVMidなどを取得することができる。

/vmfs/volumes/test/mytest # vim-cmd vmsvc/getallvms
Vmid    Name                 File                  Guest OS     Version   Annotation
5      mytest   [mydatastore] mytest/mytest.vmx   centosGuest   vmx-08
/vmfs/volumes/test/mytest #

以下のvmkftools -iコマンドを使うと、仮想マシンのコピーを取得することができる。しかし・・・

/vmfs/volumes/test/mytest # vmkfstools -i /vmfs/volumes/mydatastore/mytest/mytest.vmdk /vmfs/volumes/mydatastore/bk/test.bk.vmdk
Failed to open '/vmfs/volumes/mydatastore/mytest/mytest.vmdk': Failed to lock the file (16392).

仮想マシンの起動中は仮想マシンの情報が書き込まれ続けるため、ロックされていてcloneを作成することができない。
なので、スナップショットを作成する。

/vmfs/volumes/test/mytest # vim-cmd vmsvc/snapshot.create 5 forbackup
Create Snapshot:

そうすると、変更分はスナップショットに記録されるため、ロックは開放される。
ちなみに「5」という数字はVmidである。
getallvmsで取得したよね。

ロックを開放したそのあとは・・・

/vmfs/volumes/test/mytest # vmkfstools -i /vmfs/volumes/mydatastore/mytest/mytest.vmdk /vmfs/volumes/
mydatastore/bk/test.bk.vmdk
Destination disk format: VMFS zeroedthick
Cloning disk '/vmfs/volumes/mydatastore/mytest/mytest.vmdk'...
Clone: 100% done.

上記のようにvmkfstoolsコマンドでcloneを作成することができる。

で、スナップショットを削除してみよう。

/vmfs/volumes/test/mytest # vim-cmd vmsvc/snapshot.remove 5
Insufficient arguments.
Usage: snapshot.remove vmid snapshotId [removeChildren]
Remove a snapshot on the vm.

このコマンドでは、snapshotIdを指定しなくてはならず、面倒なので、
以下を参考にして、すべてのスナップショットを削除する。
http://blue-red.ddo.jp/~ao/wiki/wiki.cgi?page=ESXi+%A4%CE%A5%B2%A5%B9%A5%C8%A5%DE%A5%B7%A5%F3%A4%CE%A5%D0%A5%C3%A5%AF%A5%A2%A5%C3%A5%D7

/vmfs/volumes/test/mytest # vim-cmd vmsvc/snapshot.removeall 5
Remove All Snapshots:

で、スナップショットを削除したら再度ロックされた!

/vmfs/volumes/test/mytest # vmkfstools -i /vmfs/volumes/mydatastore/mytest/mytest.vmdk /vmfs/volumes/
mydatastore/bk/test.bk2.vmdk
Failed to open '/vmfs/volumes/mydatastore/mytest/mytest.vmdk': Failed to lock the file (16392).

参考にした本

VMware設計・構築・運用プロフェッショナルガイド

VMware設計・構築・運用プロフェッショナルガイド


実践で使えるTipsが体系立ててまとめられています。
ネットと併用して手元に置くと安心する。