Xen 仮想マシンの時刻がずれる

社内で使用している仮想マシンの時刻がずれる現象が発生中です。調べた結果、

まず、Xen仮想マシンが準仮想化を使用している場合、デフォルトでは時刻は自動的にホストと同期するようになっています。ntpdなどで仮想マシンの時刻を修正しょうとするとエラーになりできません。

仮想マシンの時刻を独立して設定するようにするには、/etc/sysctl.conf で下記のカーネルパラメータを設定します

xen.independent_wallclock = 1

今回問題が出ている仮想マシンは、完全仮想化を使用しています。この場合、ホストとは時刻が同期されません。ではなぜ時刻がずれるか、ですが、Linuxは時刻補正にタイマー割り込み Time Stamp Counterを使用しており、2.6以降のSMPカーネルの場合、1GHzx(プロセッサ数+1)の間隔で割り込みが発生するため、とくに仮想環境の場合、取りこぼしが発生して時刻ずれることがあるようです。

参考: COMPUTERWORKD 【仮想化の教室 第3回】 仮想マシンの限界 〜Linuxゲストの時計が狂う!?〜

解決策として、/boot/grub/grub.conf のカーネルのブートパラメータに divider=10 を追加することで、割り込みが1/10の100MHzになり、時刻のずれを回避できる可能性があります

参考: VMWare - Timekeeping best practices for Linux guests