❄︎
Amazonでクリスマスギフトを贈ろう!

【VMware】仮想マシンのスナップショット有無をコマンドで確認する方法

どーも。あいしんくいっと(@ithinkitnet)です。

スナップショットの持ちすぎは仮想マシンのパフォーマンス劣化に繋がります。
どの仮想マシンがスナップショットを持っているか。
vSpherePowerCLIが使えると、仮想マシンが保持するスナップショットの一覧が取得出来て大変便利なのですが、PowerCLIを別途導入してないと使えません。
残念ながら、PowerCLIが導入されていないことが意外と多い。。。

WebClientやHostClientでひとつひとつ確認してもいいのですが、結構面倒くさい!
なので、「仮想マシンがスナップショット保持しているかどうか」をコマンドで確認する方法について書いておきたいと思います。
1コマンドとは行かないまでも、2コマンドで確認出来ます。

仮想マシンのスナップショット有無をコマンドで確認する方法

ちなみに今回の確認方法はESXiホスト単位でしか確認出来ません。
ひと手間かかりますが、WebClientやHostClientでひとつひとつ確認するよりはたぶん楽・・・。

注意
ESXiにSSH接続する必要がありますので予め設定しておいてください。
スナップショット取得有無確認の流れ
  • STEP.1
    仮想マシンのID(Vmid)取得
    vim-cmd vmsvc/getallvms
  • STEP.2
    スナップショット取得の確認
    vim-cmd vmsvc/get.snapshot <仮想マシンのVmid>

仮想マシンIDの取得

ESXiにSSH接続し、以下のコマンドで仮想マシンごとのIDを取得します。

コマンド
vim-cmd vmsvc/getallvms
ID列だけ抽出する場合は以下でもよいでしょう。
コマンド
vim-cmd vmsvc/getallvms | awk '{print $1}'
コマンド実行例
[root@ithinkitnet:~] vim-cmd vmsvc/getallvm
Vmid Name File Guest OS Version Annotation
1 Win2016 [SSD-DataStore] Win2016/Win2016.vmx windows9Server64Guest vmx-13 192.168.11.250
2 Win2012r2 [SSD-DataStore] Win2012r2/Win2012r2.vmx windows8Server64Guest vmx-11 192.168.11.200
4 Win2016-2 [SSD-DataStore] Win2016-2/Win2016-2.vmx windows9Server64Guest vmx-13 192.168.11.251
5 cent75-wordpress [SSD-DataStore] cent75-wordpress/cent75-wordpress.vmx centos7_64Guest vmx-14 192.168.11.155
6 esxi67 [SSD-DataStore] esxi67/esxi67.vmx vmkernel65Guest vmx-14

上記、それぞれ先頭の番号が仮想マシンIDになります。
(例:1 Win2016 )

スナップショットの保持確認

前項で取得した仮想マシンIDを引数にして以下のコマンドを実行します。

コマンド
vim-cmd vmsvc/get.snapshot <仮想マシンのVmid>

スナップショットが存在する場合、以下のように表示されます。
下だと「OSインストール直後」という名前のスナップショットがあリます。

コマンド実行例
[root@ithinkitnet:~] vim-cmd vmsvc/get.snapshot 1
(vim.vm.SnapshotInfo) {
   currentSnapshot = 'vim.vm.Snapshot:1-snapshot-1', 
   rootSnapshotList = (vim.vm.SnapshotTree) [
      (vim.vm.SnapshotTree) {
         snapshot = 'vim.vm.Snapshot:1-snapshot-1', 
         vm = 'vim.VirtualMachine:1', 
         name = "OSインストール直後", 
         description = "", 
         id = 1, 
         createTime = "2018-07-14T13:26:52.985542Z", 
         state = "poweredOff", 
         quiesced = false, 
         backupManifest = , 
         childSnapshotList = , 
         replaySupported = false
      }
   ]
}

全仮想マシンのスナップショット有無を確認したい場合はこんな感じで。

コマンド
for i in $(vim-cmd vmsvc/getallvms | awk '{print $1}'|sed '1d') ; do vim-cmd vmsvc/get.snapshot $i ;done

ちなみにHostClient上から確認すると以下の通り。

コマンド実行例)スナップショットが存在しない場合
[root@ithinkitnet:~] vim-cmd vmsvc/get.snapshot 4

[root@ithinkitnet:~]
このように仮想マシンIDを取得し、IDを引数にしてコマンド実行することによってスナップショットの有無を確認することが出来ます。vCenter経由かつワンコマンドで一覧が取得出来るPowerCLIには劣りますが、それでもWebClientやHostClientで一つ一つ確認するよりは楽かなーと思います。

以上、あいしんくいっとでした( ..)φメモメモ

コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です

*

日本語が含まれない投稿は無視されますのでご注意ください。(スパム対策)