2015年3月14日土曜日

vmware.logが肥大化する不具合と確認方法 (VMware KB:2078823)

事の発端は以下のKBになる。最新パッチ当てれば直る不具合ではあるが、vmware.logに合計500文字程度のログが1秒に1回出力されるという不具合となる。

Virtual machine with multiple user login session fails with the error: GuestRpc: Channel X, conflict: guest application toolbox-dnd tried to register, but it is still registered on channel Y (2078823)
http://kb.vmware.com/selfservice/microsites/search.do?language=en_US&cmd=displayKC&externalId=2078823

この不具合自体は仮想マシンの動作に影響は無いようなので問題にはならないが、ログがそこそこ大きくて、500文字(Byte) x 3600秒 x 24時間 = 41MBが毎日vmware.logに出力されることになり、放っておくとデータストアの容量逼迫に繋がる可能性がある。

解決方法はKBに乗っているので割愛するとして、この事象の発生条件、確認方法などは調べたので記載する。

発生条件

vmtoolsdが3プロセス以上起動すると発生する。このvmtoolsdだが、OS起動時に1個プロセスが立ち上がり、さらにユーザーがOSのGUI画面にログインする毎に1個増えて、ログオフすると消える仕様のようである(Linuxのssh接続ではvmtoolsdは増えないようだ)。

GUI画面にログインするという条件から、特にWindowsで起きやすい。なぜかというと、通常Windows Serverでは、標準機能で2ユーザーの同時ログインを許可してしまうからである。なので、Windows Serverにログインした後、ログオフをきちんとしない(例えばRDPを「×」ボタンで閉じる)と、いつの間にか発生条件を満たしてしまい、そのまま長い期間放置してしまいログが肥大化してしまうことに繋がる。

確認方法

まずvmware.logの仕様だが以下の通り。ログを出力させないことや保存世代の変更はvmxファイルを修正すればできるようだ。
  • 仮想マシンのONのタイミングでローテートされる
  • デフォルトで6世代(vmware.log、vmware-xx.log x 5世代)保存

vmware.logは仮想マシンの保存ディレクトリ毎に作られるので、1つ1つデータストアブラウザで確認するのはとても手間なので、直接ESXi Shellにログインして、コマンドで確認すれば手っ取り早い。

単純なコマンドは以下の通り。
ls -lhS /vmfs/volumes/*/*/vmware*.log
データストアは /vmfs/volumes配下にUUID名のディレクトリが実体として存在するが、同ディレクトリにはシンボリックリンクでデータストア名ので名付けられたリンクも存在する。従って、上記コマンドで確認すると全てのログが2重で表示されて見づらくなる。

表示を絞りたければ以下の通りgrepすれば良い。

データストア名で表示

ls -lhSL /vmfs/volumes/*/*/vmware*.log | grep -v -e '/vmfs/volumes/.\{8\}-.*/'

-rw-r--r--    1 root     root     1006.2M Mar 11 07:14 /vmfs/volumes/DatastoreA1/VM1/vmware.log
-rw-r--r--    1 root     root      312.0M Mar 11 07:14 /vmfs/volumes/DatastoreA1/VM2/vmware.log
-rw-r--r--    1 root     root        6.8M Jan 15 09:10 /vmfs/volumes/DatastoreA1/VM3/vmware-8.log
-rw-r--r--    1 root     root        2.4M Jul  8  2014 /vmfs/volumes/Datastore01/VM4/vmware-27.log

UUIDで表示

ls -lhSL /vmfs/volumes/*/*/vmware*.log | grep -e '/vmfs/volumes/.\{8\}-.*/'
-rw-r--r--    1 root     root     1006.2M Mar 11 07:15 /vmfs/volumes/5243b476-8035a06c-582e-d89d6714f0b8/VM1/vmware.log
-rw-r--r--    1 root     root      312.1M Mar 11 07:14 /vmfs/volumes/5243b476-8035a06c-582e-d89d6714f0b8/VM2/vmware.log
-rw-r--r--    1 root     root        6.8M Jan 15 09:10 /vmfs/volumes/5243b476-8035a06c-582e-d89d6714f0b8/VM3/vmware-8.log
-rw-r--r--    1 root     root        2.4M Jul  8  2014 /vmfs/volumes/51d55cb3-dbe9bff0-0eeb-d89d6714e6d5/VM4/vmware-27.log

参考URL

VMware ESX/ESXi を操作するときのディスクの識別 (2078761)
http://kb.vmware.com/selfservice/microsites/search.do?language=en_US&cmd=displayKC&externalId=2078761

vmware.log のログ ローテーションとログ オプション (2077202)
http://kb.vmware.com/selfservice/microsites/search.do?language=en_US&cmd=displayKC&externalId=2077202