2013年9月29日日曜日

ESXiでゲストOSのスナップショットを利用する

VMWare ESXではゲストOSのスナップショットを作成したり、復帰させたりが簡単にできる。

大きなシステム変更をする場合は、スナップショットを作成しておくと、安心して作業することができる。

以下、スナップショットの利用方法。

バージョンは以下のとおり。
~ # esxcli system version get
   Product: VMware ESXi
   Version: 5.1.0
   Build: Releasebuild-799733
   Update: 0

まずは、ゲストOSのvmidを確認する。
~ # vim-cmd vmsvc/getallvmsVmid     Name                    File                    Guest OS      Version   Annotation
16     ssh        [datastore1] ssh/ssh.vmx             rhel6Guest      vmx-07            
32     www        [datastore1] www/www.vmx             rhel6_64Guest   vmx-07            
48     db         [datastore1] db/db.vmx               rhel6_64Guest   vmx-07            
64     rdfstore   [datastore1] rdfstore/rdfstore.vmx   rhel6_64Guest   vmx-07            
80     ubuntu     [datastore1] ubuntu/ubuntu.vmx       ubuntuGuest     vmx-07            
81     db2        [datastore1] db2/db2.vmx             centos64Guest   vmx-09 
ゲストOSのスナップショットを作成するコマンド。

vim-cmd vmsvc/snapshot.create

~ # vim-cmd vmsvc/snapshot.create
Insufficient arguments.
Usage: snapshot.create vmid [snapshotName] [snapshotDescription] [includeMemory] [quiesced]
Creates a snapshot for the vm.

コマンドではsnapshotNameはオプションだけど省略すると失敗する。
~ # vim-cmd vmsvc/snapshot.create 16
Create Snapshot:
Create snapshot failed
なのでsnapshotNameを付けてスナップショットを作成する。

~ # vim-cmd vmsvc/snapshot.create 16 "ssh"
Create Snapshot:
作成したスナップショットを確認する。
~ # vim-cmd vmsvc/snapshot.get 16
Get Snapshot:
|-ROOT
--Snapshot Name        : ssh
--Snapshot Id        : 1
--Snapshot Desciption  :
--Snapshot Created On  : 9/25/2013 5:4:59
--Snapshot State       : powered off
スナップショットで復元する場合は以下のコマンドを使う。
~ # vim-cmd vmsvc/snapshot.revert
Insufficient arguments.
Usage: snapshot.revert vmid snapshotId suppressPowerOff
Revert to a snapshot on the vm.
スナップショットは差分だけとはいえディスク容量は食う。不要になったスナップショットは削除していったほうがいい。
~ # vim-cmd vmsvc/snapshot.remove
Insufficient arguments.
Usage: snapshot.remove vmid snapshotId [removeChildren]
Remove a snapshot on the vm.
スナップショットは階層状に管理される。ツリーにできるかどうかはまだ未確認。
~ # vim-cmd vmsvc/snapshot.create 16 "ssh"
Create Snapshot:
~ # vim-cmd vmsvc/snapshot.get 16
Get Snapshot:
|-ROOT
--Snapshot Name        : ssh
--Snapshot Id        : 1
--Snapshot Desciption  :
--Snapshot Created On  : 9/25/2013 5:4:59
--Snapshot State       : powered off
--|-CHILD
----Snapshot Name        : ssh
----Snapshot Id        : 2
----Snapshot Desciption  :
----Snapshot Created On  : 9/27/2013 23:22:10
----Snapshot State       : powered off
とりあえず便利な機能なので使ったほうがいい(反省も込めて)。