ITよろづや

ITの参考になる情報を備忘録代わりに残していきます

仮想マシンをvMotionすると、ゲストOSの時刻が実際よりも遅れる問題

VMwareの仮想化環境で稼働する仮想マシンの中で、サーバーによっては時刻がずれると問題になるサーバーもいると思います。例えば、勤怠関連のサーバーだと数秒くらいだといいですが、数分ズレると、勤怠に影響がでたりします。


また、そういった場合は、NTPサーバーに時刻同期をするケースが多いと思いますが、運用で発生する動作によって時刻がズレる場合があります。


それは、仮想マシンをvMotionすると、ゲストOSの時刻が実際よりも遅れる場合があるそうです。こちら。

>>仮想マシンを移行すると、ゲスト OS の時刻が実際よりも遅れる場合がある (2110088)


この時刻のズレの原因として、仮想マシンが移行(vMotion)される際、その仮想マシンサスペンドされ、移行先ホストにコピーされた上で再開されます。このため、その処理を行う間時刻管理の機構が一時的に停止します。


これにより、ゲスト OS のシステム時刻が実際の時刻よりも数十ミリ、場合によっては数百ミリ秒遅れることがあります。大したズレではありませんが、時刻のズレが問題になるケースもあると思います。基本は、メンテナンス時以外はvMotionしない運用をすればいいと思いますが、KBに対処法があります。


NTPの設定は、ゲストOS側で設定する必要がありますが、それで対応できない場合は、VMware側でも設定できるようです。

仮想マシンの移行による時刻のずれを影響を緩和するのに NTP による調整では不十分である場合は、VMware Tools の "ワンタイム同期" のしきい値をより低く設定してください。

このしきい値は、vmx のオプションである pref.timeLagInMilliseconds で定義でき、デフォルトでは 1000 ミリ秒 (1 秒) に設定されています。

例えば、移行後の時刻の遅れが 100 ミリ秒以上になった場合にゲスト OS の時刻をホストと同期したい場合は、次の行を vmx ファイルに追加してください。vmx ファイルの編集については .vmx ファイルの編集のヒント (2092649) を参照してください。
pref.timeLagInMilliseconds = 100

基本はNTPサーバーを指定すれば、問題ないと思いますが、時刻のずれが 1 秒以上になった場合、ゲスト OS 上で動作している VMware Tools が移行プロセスにおける仮想マシンの再開時にその仮想マシンが動作している ESXi ホストの時刻にゲスト OS の時刻を即座に同期してくれるそうです。