完璧な世界では、VMゲストは完璧な時間を維持するか、少なくともホストが提供するのと同じくらい完璧です。残念ながら、私たちは完璧な世界に住んでいません。
人に知られているほぼすべてのハイパーバイザーでの経験に基づいて、例外なく、常に仮想マシンでNTPクライアントを実行しています。私の通常のセットアップは、-gオプションを指定したntpd、または古いシステムの直前に開始するntpdateで、クロックをステップします(システムのブート時に同期がとれなくなる可能性があります)。
KVMは準仮想化されたリアルタイムクロックを備えたほぼ完璧なセットアップを備えています。適切なドライバー(少なくとも最近のすべてのLinux)を持つゲストは、ホストと同様に時間を保持します。ただし、ここでも問題が発生します。たとえば、ホストでNTPが実行されていない、ホストのタイムゾーンが正しく設定されていない、ホストのクロックが単純に間違っているなどです。
VMwareとHyper-Vは中間に位置します。それぞれに、ホストでクロックを定期的に同期するゲストで実行されるツールがありますが、これもホストクロックの既存の問題に対して脆弱です。
私のテストHyper-Vサーバー上のゲストも奇妙な動作を示しました:統合サービスを使用しても、ゲストクロックは500ppmより速くドリフトし、ntpdが動作しなくなります(これよりも速くドリフトするとクロックの異常を考慮します)。これらのゲストをchronyに切り替える必要がありました。これにより、この値を調整できます。
この点でXenは最悪です。同期は絶対に行われず、ゲストでNTPを実行することはほとんど必要です。(Xenのごく最近のバージョンには何らかの同期がありますが、個人的にはまだ動作していません。)
パブリッククラウドなど、ホストハイパーバイザーが制御できない場合、事態はさらに悪化します。ホストクロックに関してプロバイダーの容赦があり、同期を維持することに熱心でなければ、負けになります。
それだけで、準正確なクロックが必要な場合は、仮想マシンでNTPクライアントを実行することが非常に必要です。注意:Windows仮想マシンを実行している場合は、クロックを継続的に調整するサードパーティのNTPクライアントを入手してください。Windowsに付属しているクライアントの貧弱な言い訳は、週に一度だけ時計を調整するだけで、これはまったくばかげています。