Skip navigation

地味にスナップショットのサイズ確認をするKBを見つけました。

スナップショットを削除しているときの様子を確認できます。


Commands to monitor snapshot deletion in ESX 2.5/3.x/4.x and ESXi 3.x.x/4.x.x/5.x
http://kb.vmware.com/kb/1007566

 

 

ためしにスナップショットを削除して見てみました。環境は、ESXi 5.1 です。


lsコマンドで見ているだけだとVMDKの見た目のサイズは変わらず
「-delta.vmdk」がなくなることで、どのファイルまで適用されたかがわかります。
たとえば、「-000002-delta.vmdk」の適用が完了すると「-000002-delta.vmdk」が削除されます。

 


方法1: lsコマンドをwatchコマンドでループ実行する。

 

この方法では、数秒ごとに最新の状態だけが画面に表示されます。

 

lsコマンドでwin2008sv1というVMの構成ファイルを表示し、

「grep -E "delta|flat"」でスナップショットに関係あるファイルだけフィルタ表示しています。

watch -n 10 を付けると指定した秒数ごとに画面が更新されます。デフォルトは2秒ごとです。

 

終了するときは、 Ctrl + C を押します。

~ # watch -n 10 'ls -luth /vmfs/volumes/datastore1/win2008sv1 | grep -E "delta|flat"'


Every 10s: ls -luth /vmfs/volumes/datastore1/win2008sv1 | grep -E "delta|flat"

-rw-------    1 root     root         7.5G Dec 24 09:10 win2008sv1-000001-delta.vmdk
-rw-------    1 root     root        32.1M Dec 24 09:10 win2008sv1-000002-delta.vmdk
-rw-------    1 root     root        40.0G Dec 24 09:09 win2008sv1-flat.vmdk

 

(10秒ごとに画面更新)


Every 10s: ls -luth /vmfs/volumes/datastore1/win2008sv1 | grep -E "delta|flat"
-rw-------    1 root     root         7.5G Dec 24 09:11 win2008sv1-000001-delta.vmdk
-rw-------    1 root     root        32.1M Dec 24 09:10 win2008sv1-000002-delta.vmdk
-rw-------    1 root     root        40.0G Dec 24 09:09 win2008sv1-flat.vmdk

 

(10秒ごとに画面更新)

 

Every 10s: ls -luth /vmfs/volumes/datastore1/win2008sv1 | grep -E "delta|flat"

-rw-------    1 root     root        32.1M Dec 24 09:11 win2008sv1-000002-delta.vmdk
-rw-------    1 root     root         7.5G Dec 24 09:11 win2008sv1-000001-delta.vmdk
-rw-------    1 root     root        40.0G Dec 24 09:09 win2008sv1-flat.vmdk

 

 

方法2: lsコマンドをwhileでループ実行する。

 

「while true」で、lsコマンドを無限ループしています。

この方法だと、これまでの表示結果も画面上に残ります。

head -10 を付けると、最初の10ファイルだけ表示されます。
sleep 3 で、表示間隔(秒)を指定しています。

こちらも終了するときは、 Ctrl + C を押します。

~ # while true;do date;ls -lt /vmfs/volumes/datastore1/win2008sv1/*vmdk |head -10;echo ________;sleep 3;done
Mon Dec 24 08:48:17 UTC 2012
-rw-------    1 root     root           16863232 Dec 24 08:48 /vmfs/volumes/datastore1/win2008sv1/win2008sv1-000002-delta.vmdk
-rw-------    1 root     root        42949672960 Dec 24 08:46 /vmfs/volumes/datastore1/win2008sv1/win2008sv1-flat.vmdk
-rw-------    1 root     root                344 Dec 24 08:45 /vmfs/volumes/datastore1/win2008sv1/win2008sv1-000002.vmdk
-rw-------    1 root     root                530 Dec 24 08:45 /vmfs/volumes/datastore1/win2008sv1/win2008sv1.vmdk
-rw-------    1 root     root         8069926912 Dec 24 08:45 /vmfs/volumes/datastore1/win2008sv1/win2008sv1-000001-delta.vmdk
-rw-------    1 root     root                337 Oct 14 13:21 /vmfs/volumes/datastore1/win2008sv1/win2008sv1-000001.vmdk
________
Mon Dec 24 08:48:21 UTC 2012
-rw-------    1 root     root           16863232 Dec 24 08:48 /vmfs/volumes/datastore1/win2008sv1/win2008sv1-000002-delta.vmdk
-rw-------    1 root     root        42949672960 Dec 24 08:46 /vmfs/volumes/datastore1/win2008sv1/win2008sv1-flat.vmdk
-rw-------    1 root     root                344 Dec 24 08:45 /vmfs/volumes/datastore1/win2008sv1/win2008sv1-000002.vmdk
-rw-------    1 root     root                530 Dec 24 08:45 /vmfs/volumes/datastore1/win2008sv1/win2008sv1.vmdk
-rw-------    1 root     root         8069926912 Dec 24 08:45 /vmfs/volumes/datastore1/win2008sv1/win2008sv1-000001-delta.vmdk
-rw-------    1 root     root                337 Oct 14 13:21 /vmfs/volumes/datastore1/win2008sv1/win2008sv1-000001.vmdk
________
Mon Dec 24 08:48:24 UTC 2012
-rw-------    1 root     root           16863232 Dec 24 08:48 /vmfs/volumes/datastore1/win2008sv1/win2008sv1-000002-delta.vmdk
-rw-------    1 root     root        42949672960 Dec 24 08:46 /vmfs/volumes/datastore1/win2008sv1/win2008sv1-flat.vmdk
-rw-------    1 root     root                344 Dec 24 08:45 /vmfs/volumes/datastore1/win2008sv1/win2008sv1-000002.vmdk
-rw-------    1 root     root                530 Dec 24 08:45 /vmfs/volumes/datastore1/win2008sv1/win2008sv1.vmdk
-rw-------    1 root     root         8069926912 Dec 24 08:45 /vmfs/volumes/datastore1/win2008sv1/win2008sv1-000001-delta.vmdk
-rw-------    1 root     root                337 Oct 14 13:21 /vmfs/volumes/datastore1/win2008sv1/win2008sv1-000001.vmdk
________

 

 

lsだけだとわかりにくいので、

ついでに duコマンド でも試してみました。
もとのVMDKにどんどん適用されていく様子が見えます。(サイズが増加していく)

※たぶんThin形式だから見えています。Thick形式だと固定サイズになりそうです。

 

方法1-2: duコマンドをwatchで実行

 

~ # watch 'du /vmfs/volumes/datastore1/win2008sv1/*vmdk | grep -E "delta|flat"'


Every 2s: du /vmfs/volumes/datastore1/win2008sv1/*vmdk | grep -E "delta|flat"

7881728 /vmfs/volumes/datastore1/win2008sv1/win2008sv1-000001-delta.vmdk
17408 /vmfs/volumes/datastore1/win2008sv1/win2008sv1-000002-delta.vmdk
14405632 /vmfs/volumes/datastore1/win2008sv1/win2008sv1-flat.vmdk

 

(画面更新)

 

Every 2s: du /vmfs/volumes/datastore1/win2008sv1/*vmdk | grep -E "delta|flat"

7881728 /vmfs/volumes/datastore1/win2008sv1/win2008sv1-000001-delta.vmdk
17408 /vmfs/volumes/datastore1/win2008sv1/win2008sv1-000002-delta.vmdk
14416896 /vmfs/volumes/datastore1/win2008sv1/win2008sv1-flat.vmdk

 

(画面更新)

 

Every 2s: du /vmfs/volumes/datastore1/win2008sv1/*vmdk | grep -E "delta|flat"

7881728 /vmfs/volumes/datastore1/win2008sv1/win2008sv1-000001-delta.vmdk
17408   /vmfs/volumes/datastore1/win2008sv1/win2008sv1-000002-delta.vmdk
14426112        /vmfs/volumes/datastore1/win2008sv1/win2008sv1-flat.vmdk

 

方法2-2: duコマンドをwhileで実行

~ # while true;do date;du -h /vmfs/volumes/datastore1/win2008sv1/*vmdk |head -10;echo ________;sleep 30;done
Mon Dec 24 08:56:23 UTC 2012
7.5G    /vmfs/volumes/datastore1/win2008sv1/win2008sv1-000001-delta.vmdk
64.0k   /vmfs/volumes/datastore1/win2008sv1/win2008sv1-000001.vmdk
17.0M   /vmfs/volumes/datastore1/win2008sv1/win2008sv1-000002-delta.vmdk
0       /vmfs/volumes/datastore1/win2008sv1/win2008sv1-000002.vmdk
14.3G   /vmfs/volumes/datastore1/win2008sv1/win2008sv1-flat.vmdk
64.0k   /vmfs/volumes/datastore1/win2008sv1/win2008sv1.vmdk
________
Mon Dec 24 08:56:53 UTC 2012
7.5G    /vmfs/volumes/datastore1/win2008sv1/win2008sv1-000001-delta.vmdk
64.0k   /vmfs/volumes/datastore1/win2008sv1/win2008sv1-000001.vmdk
17.0M   /vmfs/volumes/datastore1/win2008sv1/win2008sv1-000002-delta.vmdk
0       /vmfs/volumes/datastore1/win2008sv1/win2008sv1-000002.vmdk
14.5G   /vmfs/volumes/datastore1/win2008sv1/win2008sv1-flat.vmdk
64.0k   /vmfs/volumes/datastore1/win2008sv1/win2008sv1.vmdk
________
Mon Dec 24 08:57:24 UTC 2012
7.5G    /vmfs/volumes/datastore1/win2008sv1/win2008sv1-000001-delta.vmdk
64.0k   /vmfs/volumes/datastore1/win2008sv1/win2008sv1-000001.vmdk
17.0M   /vmfs/volumes/datastore1/win2008sv1/win2008sv1-000002-delta.vmdk
0       /vmfs/volumes/datastore1/win2008sv1/win2008sv1-000002.vmdk
14.6G   /vmfs/volumes/datastore1/win2008sv1/win2008sv1-flat.vmdk
64.0k   /vmfs/volumes/datastore1/win2008sv1/win2008sv1.vmdk
________

 

すべてのスナップショットを削除すると、

最終的には.vmdkと、-flat.vmdk だけが残ります。

 


以上、スナップショットのモニタリングでした。

サポートされていないLinuxOSをインストールしたVMの

仮想マシン(仮想ハードウェア)のバージョンを 8 から vmx-09 にバージョンアップしたところ、

運悪くOSが起動できなくなってしまいました。(OS起動途中でpanicになったり・・・)

 

そこで、あえて
「仮想マシンバージョンのバージョンダウン」 をやってみました。

例では、「vm1」というVMを使用しています。

 

※VMware的には、おそらくサポートされないはずなので、
 自己責任 & どうしてもというときだけ実行するようにしましょう。

 


1. まず、VM設定ファイル (.vmxファイル)を編集します。

 

vi で設定ファイルを編集しています。

~ # vi /vmfs/volumes/datastore1/vm1/vm1.vmx
virtualHW.version = "9"

virtualHW.version = "8"


2. 既存のVMを登録解除します。

うまくいった場合は、とくに何も表示されません。

~ # vim-cmd vmsvc/unregister /vmfs/volumes/datastore1/vm1/vm1.vmx
~ #

 

3. 設定編集したvmxファイルで、VMを再登録します。


うまくいくと、数字が表示されます。
この数字は内部的に使用されるVMの名前で、毎回変わります。(下の例だと81です)

~ # vim-cmd solo/registervm /vmfs/volumes/datastore1/vm1/vm1.vmx
81

 

ちなみに、すでに登録されているVMを重複登録しようとすると、
下記のようなエラーが出ます。

そのため、vmxを登録するときは、既存のVMを登録解除してから登録する必要があります。

~ # vim-cmd solo/registervm /vmfs/volumes/datastore1/vm1/vm1.vmx
(vim.fault.AlreadyExists) {
dynamicType = <unset>,
faultCause = (vmodl.MethodFault) null,
name = "81",
msg = "The specified key, name, or identifier already exists.",
}

 


登録後のVMをvSphere Client等で確認すると、
バージョンが 8 に戻っているはずです。

 

この後、VMを起動したら問題なく起動できました。

VMの登録解除や再登録は、データストアブラウザ経由でもOKだと思います。

 

 

以上、むりやり仮想マシンバージョンを下げる方法でした。