これは VMwareの既知の問題 vmotionやスナップショットの作成/削除などの特定の操作中に「スタン」と呼ばれるものを実行することです。このスタンの間、ゲストOSはフリーズするため、戻ってくるとシステムクロックが遅れます。現在、スタンは通常、人間の観点からはかなり高速(1秒未満)ですが、機械の観点からはかなり長く、数百ミリ秒です。また、ディスクが大きい、またはメモリが多いVMでは、状況が悪化します。VMは、多くの場合、より重要なVMです。相互に通信するシステムでは、これらの時差が問題を引き起こす可能性があります。
しかし、いずれにせよ、私が取り組もうとしている問題は時計です。最終的な要件は、スタンが発生した後、すぐにシステムクロックを同期に戻すことです。 「即時」という用語はあいまいな場合があるため、1秒以内に時計の同期を取り戻す必要があるとします。
クロック同期にはntpを使用しますが、ntpは何が起こったのかを理解していないため、システムを同期に戻すのに数分(またはそれ以上)かかります。時間が再び安定していること(ドリフト率が急上昇していないこと)を確認してから、ゆっくりと修正するのにしばらく時間がかかります。したがって、十分な速度ではありません。
私が得た最善のアイデアは、スタンが発生したときにすぐにntpdate
を実行することですが、ゲストOSがスタンが発生したことを検出する方法がわかりません。
問題のシステムはLinux(CentOS/7)です。
この問題に関するVMWareの公式記事と解決策は、次の場所にあります。 https://kb.vmware.com/s/article/2108828
NTPの調整では、仮想マシンの移行による時差の影響を軽減するには不十分であることが判明した場合は、VMwareツールの1回限りの時刻同期をより低いしきい値に設定します。
Vmxオプション
pref.timeLagInMilliseconds
を使用するコマンドを実行し、デフォルトの時間は1000(1秒間)に設定します。たとえば、ゲストクロックをホストと同期させたい場合は、移行後100ミリ秒を超えて時間が遅れるたびに、これをvmxファイルに追加します。
pref.timeLagInMilliseconds = 100
vmx
ファイルの編集に関するドキュメントはここにあります: https://kb.vmware.com/s/article/1714
したがって、私の状況では、値を10
に設定して、スタン後10ミリ秒以上時間がずれている場合、VMwareによって同期されるようにします。次に、NTPにそこからのより詳細な調整を処理させます。
VMホストもゲストと同じNTPソースを使用しますか?
これらの[timesyncdisable]オプションは、ツールの起動、スナップショットの取得、スナップショットからの再開、サスペンドからの再開、vMotionなどのイベントに対してVMwareToolsによって実行される1回限りの同期を無効にしません。これらのイベントは、ゲストオペレーティングシステムの時刻をホストオペレーティングシステムの時刻と同期させるため、ホストオペレーティングシステムの時刻が正しいことを確認することが重要です。 Linuxゲストの時間管理のベストプラクティス
より小さなNTPステップしきい値を設定することは可能ですが、データベースは特に時間の逆戻りをうまく処理しません。