CentOS KVMホストのDebianゲストの時間ドリフトを防ぐ方法は?

CentOS KVMホストのDebianゲストの時間ドリフトを防ぐ方法は?

ntpゲストにインストールできることはわかっていますが、これまでに検索した内容を混乱させることで、これは必要ないことがわかります。

ホストはCentOS 6.3で、ゲストはDebian Wheezyで、kvmクロックをタイムソースとして使用しているようです。

# cat /sys/devices/system/clocksource/clocksource0/current_clocksource
kvm-clock

ゲストがホスト時計を使用できるようにするには、特別な措置を講じる必要がありますか?

答え1

ゲストなし直接ホスト時計にアクセスします。代わりに、ホストクロックに基づいてホストの更新されたメモリ領域を指すkvm-clockを使用します。そうです。はいホスト時計を使用してください。問題は、このメモリ領域が絶えず更新されず、仮想マシン「イベント」が発生したときにのみ更新されるため、ゲストがドリフトして正しい時間に戻ることができることです。

私が知る限り、一般的なアドバイスは、仮想マシンが定期的にタスクを実行し、ホストクロックを定期的に読み直すことです。

いくつかのソース、

答え2

前述のように、ホストはゲストが読み取ることができるメモリページに時間を書き込みます。これは、通常、ホストが重要なイベント(CPU速度の調整など)中にそのページにエラーを記録しない限り、仮想マシンのハードウェアクロックがホストのハードウェアクロックと一致することを意味します。問題は通常、オペレーティングシステムがハードウェアクロックが変更/調整されていることを認識していないことです。一般的な「hwclock --hctosys」は、現在のハードウェアクロックに基づいてOSを更新し(私の考えでは)、NTPデーモンを実行するよりもきれいです。

kvm-clock guestで同様のコマンドを実行して、実際にそれを確認できます。

date && hwclock --hctosys && date
Sun Jan  5 23:40:44 MST 2014
Sun Jan  5 23:40:06 MST 2014

答え3

kvm-clockについて説明した内容に加えて、標準的なベストプラクティスを試すことができます。チックレスカーネルを避け、カーネルチックを約10に下げてアクティブにし、ntpclientホストが過負荷になっていないことを確認してください。時間ドリフトがたくさん発生します。 CPUがひどく過度に使用されています。仮想マシンに多くの仮想CPUが割り当てられている場合は、この数字も数レベル下げてください。

関連情報