ゲストはどういうわけかホストのシステム時間を継承できませんでしたか?
同じデーモンを実行して同じマシンで同じ結果を複数回取得するのは無意味なようですが、KVMまたはXenの記事を読んだとき、時間に関連するものは何も見つかりませんでした。私の理解はゲストはブート時にホスト時間を取得しますが、その後ドリフトする可能性があります。
これは正しいです。時間はドリフトする可能性があるだけでなく、willドリフトすることにも注意してください。これは、タイマー割り込みの間隔(OSのタイムキーピングは多くの場合、この基準に基づいています)が、ハイパーバイザーが適していると思います。
ほとんどの仮想化プラットフォーム(Hyper-V統合サービス、VMWareツール)で一般的に行われる回避策は、ゲストでデーモンを実行して、VMホストと定期的にクロックを同期します。あなたの質問に、KVMは、ゲストOSにロードされたそれぞれのドライバーが機能する必要がある準仮想化クロックを追加で提供します。
完璧な世界では、VMゲストは完璧な時間を保つか、少なくともホストが提供するのと同じくらい完璧です。残念ながら私たちは完璧な世界に住んでいません。
人が知っている事実上すべてのハイパーバイザーに関する私の経験に基づいて、私は例外なく、常にNTP仮想マシンでクライアントを実行します。私の通常の設定は-gオプションを指定したntpd、または古いシステムの場合はその直前に開始するntpdateで、クロックをステップします(システムのブート時に同期がずれる可能性があります)。
KVMは 準仮想化リアルタイムクロック ;を使用して、ほぼ完璧なセットアップになっています。適切なドライバー(少なくとも最近のすべてのLinux)を使用するゲストは、ホストだけでなく時間も保持します。しかし、ここでも問題が発生します。たとえば、ホストがNTPを実行していない、ホストのタイムゾーンが正しく設定されていない、ホストのクロックが明らかに間違っているなどの可能性があります。
VMwareとHyper-Vは中間に位置します。それぞれにゲストで実行するツールがあり、定期的にホストとクロックを同期しますが、これもホストクロックの既存の問題に対して脆弱です。
テストHyper-Vサーバー上のゲストもいくつかの奇妙な動作を示しました:統合サービスがあっても、ゲストクロックは500 ppmより速くドリフトし、ntpdが機能しなくなります( これより速くドリフトすると、異常なクロックと見なされます )。これらのゲストを chrony に切り替える必要がありました。これにより、 this value を調整できます。
Xenはこの点で最悪です。 絶対に同期なし であり、NTPゲストで実行することはかなり必要です。非常に最近のバージョンのXenには何らかの同期があると言われていますが、 t個人的にはまだ使っていました。)
ホストハイパーバイザーがパブリッククラウドなどの制御下にない場合、事態はさらに悪化します。あなたはホストクロックに関してプロバイダーのなすがままです、そして、彼らがそれを同期させておくのに熱心でなければ、あなたは負けます。
以上のことを踏まえて、正確なクロックが必要な場合は、仮想マシンでNTPクライアントを実行する必要があります。NB:Windows仮想マシンを実行する場合は、サードパーティを入手してくださいNTPクロックを継続的に調整するクライアント。Windowsに付属するクライアントの悪い言い訳は、クロックを調整するだけです 1週間に1回 、これはまったくとんでもないことです。
NTPを使用することをお勧めします。これはよく知られており、長い間使用されてきたためです。クロックを調整することは簡単ではありません。NTPでこの問題は解決しました。
VMwareの公式の行は、1つのメカニズムを使用することです。NTP推奨 の方が粒度が細かく、時間を調整するために小さなステップを実行するためです。内部のVMwareソリューション大きなステップを踏みます。両方を実行すると、互いに戦う可能性があります。内部のVMwareソリューションでは大きなステップを踏んでから、NTP調整して少し戻します。
ただし、実際には両方を同時に実行しているため、まだ問題は発生していません。
$ ntpq
ntpq> peers
remote refid st t when poll reach delay offset jitter
==============================================================================
something.org 172.2.1.5 2 u 57 64 377 1.597 -2.409 5.952
$ vmware-toolbox-cmd timesync status
Enabled
$ vmware-toolbox-cmd help timesync
timesync: functions for controlling time synchronization on the guest OS
Usage: vmware-toolbox-cmd timesync <subcommand>
Subcommands:
enable: enable time synchronization
disable: disable time synchronization
status: print the time synchronization status