XEN 仮想化した Windows の時刻がずれる

※検索エンジンでご覧になった方へ- この現象は SUSE Enterprise Server 10sp1 での現象を解説しています。他のディストリビューションへの情報ではありませんのでご了承ください。

あわせて読みたい

仮想化環境でのWindowsの時刻同期の問題 こちらに Windows 用のオープンソースのNTPDの設定方法を説明しています。ご参考ください。

--

※こちらの記事を参考にしました
仮想マシンの限界 ~Linuxゲストの時計が狂う!?~

また、w32tm を使わないで時刻同期を行う方法も説明しています。
仮想化環境でのWindowsの時刻同期の問題

まず、結論から言うと「仕様上仕方ない」ということになります。通常PC/OSは立ち上がるとハードウェアに保存されたクロックから起動します。しかし、仮想マシン上ではこの操作は正しく行えないということです。

※しかもノートPCではサスペンドしただけで時刻が狂います。これも W32tm の仕様です。

VMware もそうらしいので XEN も仕方ないことでしょう。特に xen pause, xen unpause, xen save, xen restore などの操作を行うと、起動時にハードウェアクロックを拾って進んできたクロックが pause されてしまうので、 xen pause 中も「時間が凍ったまま」になるということなのですね。」

※追加補足 KVM でもハードウェアクロックと同期する機能があるようですが openSUSE のドキュメントではハードウェアクロックの同期とNTPとの併用は推奨していません。個人的にはハードウェアクロックは常に信用できるとは思わないのでNTPを推奨します。

したがって、現状では、ネットワークから強制的に時刻同期を行わなくてはいけません。SUSE Linux 11 以降の XEN でも Windows の Pause, Unpause ができるため、クロック同期先を正しく設定する必要があります。ハイパーバイザーが再起動しても Windows は pause. unpause してしまいます。

-Windows の場合 -

Windows の場合は毎度おなじみの time.windows.com に同期させます。何しろ世界何億台とある Windows PC のデフォルトですから、W32time がまともに動かないのは当たり前かも知れません。普通に ping すら返さない地球の反対側のサーバですから時刻がずれるのはあたりまえですね。しかもデフォルトのポーリング間隔が「8時間」という恐ろしい値なので、できれば、構内ネットワークにある NTP サーバを指定したいところです。通常他のシステムのデフォルトntpポーリング間隔は、同期中でも10分間隔でポーリングします。

タスクマネージャに

> net time \\MyNTPserver /set /yes
を設定する方法もあります。起動時と一定時間(数分おき)にランダムに実行させるのがよいでしょう。


XEN 仮想化した Windows の時刻がずれる_a0056607_21302710.gif


一番よい解決策はw32tmを止めて ntpd を導入することです。


-SUSE Linux の場合-

YaST > ネットワークサービス > NTP より NTP サービスを設定します。この画面は openSUSE の場合ですが、SLES 11, 10 も同様に設定できるでしょう。「公開サーバ」から Japan を選び ntp pool サーバを選びます。デフォルトでは福岡大学の NTP サーバを選択するようですが、かなり負荷が高いというウワサなので NTP プールから選ぶと良いでしょう。 TEST ボタンを押して、同期させることができます。

XEN 仮想化した Windows の時刻がずれる_a0056607_21201377.gif


http://www.pool.ntp.org/jp/


-キーワード-

SUSE, SLES10sp1, SLES11, XEN, Localtime, UTC, Domain-U, Windows, Time

My Website 非番のエンジニア

by islandcenter | 2010-06-05 05:56 | XEN | Comments(0)