VMware Server 上の仮想マシン (以下 VM) にインストールしたカーネル 2.6 系 Linux のタイマー割り込みクロックの関係で、ゲスト OS のシステム時刻が狂ってしまう問題は 2年以上前から巷を賑わせていて、カーネルのリビルドだとか、起動時のカーネル・パラメーター指定 (clock=pit nosmp noapic nolapic 等のいずれかまたは併用) だとかの回避策が、広く知られていた。僕も自宅の VMware ESXi/Server でシステム時刻が狂う (=大抵遅れる) VM はカーネル・パラメーターを指定して平穏な日々を送っていたが、先日ふと気付くと、ESXi 4.0 上の 1台の VM (CentOS 5.5) でこの現象が再発し、システム時刻が大幅に遅れていた。

それまでこの VM は VMware Tools の時刻調整機能を使わず、カーネル・パラメーターの指定と LAN 内 NTP サーバーの参照だけで正常な時を刻んでいたので、アップデート等、何かの拍子で再発してしまったのか。同じ ESXi や Server 上で動く他の CentOS VM はとりあえず問題ないが、1台で遅延が再発した以上、安心はできない。かつて 「これで OK」 とされていた対策も、環境が変わった今では時代遅れになっていた (と言うか不完全だった?) ようなので、これを機に根本解決を図るべく、対策を探ってみた。

この問題は個人的には既に 「一件落着」 扱いだったため、最近は全く情報収集をしていない。改めて探してみると、これまたずいぶん前から VMware Knowledge Base (以下 KB) で次の有益な情報が公開され、その後も随時更新されていたことを知った。

・VMware KB: Timekeeping best practices for Linux guests

今回唐突に具合が悪くなった CentOS 5.5 は上記 KB に未掲載だが、カーネル・パラメーターは不要とされている 5.4 と同じだろうと考え、grub.conf で今まで付加され続けていた余計なパラメーターを削除。VM を再起動後にシステム時刻を調整すると、見事にズレは解消された (KB ページ下部の "Note on RHEL 5.4 or CentOS and divider=10" 項も参照のこと)。

ちなみに VMware Server 2.0 上で動く VM の Debian GNU/Linux 5.0 ではもともとシステム時刻が狂わず、カーネル・パラメーターは特に指定していなかったが、前述の KB でも "No additional kernel parameters required" とあるので、問題なかったようだ。

やれやれ、今度こそ完全決着か。

Comments are closed.