Linuxシステム時間が一時的にジャンプします。

Linuxシステム時間が一時的にジャンプします。

一部の(ハードウェア)サーバーでは、奇妙なシステム時間変更の動作が表示されます。で、/var/logs/syslog各ログメッセージの前の日付/時刻は、次のようにランダムな日付に変わり、次のメッセージでは正常に戻ります。

Feb 22 2018 09:09:30 ...  
Feb 22 2018 09:09:32 ...  
Jan 13 2610 15:37:42 ...  
Feb 22 2018 09:09:33 ...  
Feb 22 2018 09:09:34 ...  

例に示すように、日時の急激な変更は数百年にわたって発生する可能性があります。

奇妙なタイムスタンプを持つログメッセージが特定のプロセスからのものではないことを確認できます。すべてのプロセスでランダムに発生する可能性があります。

2つの異常な時間変化の間の持続時間は、数分から数時間まで変化する可能性があります(ただし、異常な時間変化がより頻繁に発生する可能性があると思いますが、1秒ごとに記録されないため、システムログに表示されない場合もあります。多い)ログに)。

そして、複数のサーバーで発生するため、ハードウェアの問題ではないようです。

サーバーに関する追加情報:コントローラと一部のコンピューティングノードを含むOpenStackのインストール。各サーバーはntpサービスを実行します。コントローラは独自のハードウェアクロックから時間を取得するように構成され、コンピューティングノードサーバはコントローラの時間を同期させる。各サーバーには固有の時間変化があります。 「間違った時間」がコントローラのntpを介して同期されていないようです。

コンピューティングノードのゲストシステム(仮想マシン)がホストシステムの時間に影響を与えると疑われます。ただし、仮想マシンを実行しなくてもコントローラに同じ問題が発生する理由は説明されていません。

検出する方法が必要です。誰がシステム時間を変更し、どのように変更されましたか?

ベストアンサー1

関連する側面は、カーネルバージョンと起動プロセスの初期の次の行です。

kernel: Fast TSC calibration using PIT
...
kernel: Calibrating delay loop (skipped), value calculated using timer frequency..
...
kernel: Switching to clocksource tsc

YMMV および TSC または PIT を使用しないことがあります。

AFAIK これは、少なくとも1つのCPUクロックが同期していないために発生するバグで、あなたの場合はあまりにも速く実行することができます。

次のコマンドを実行すると簡単に確認できます。

for cpu in {0..8} ; do taskset -c $cpu date ; done

これはdate各CPUに対して実行されます(最大8つのコア/スレッドがあると仮定)。私の推測が正しい場合、CPUの1つは常に間違った時間を持っています。

この場合は、まずカーネルのアップグレードを試みる必要がありますが、それでも機能しない場合は、Clocksource起動パラメータを変更してください(と仮定してくださいx86-64)。

clocksource=    Override the default clocksource
                Format: <string>
                Override the default clocksource and use the clocksource
                with the name specified.
                Some clocksource names to choose from, depending on
                the platform:
                [all] jiffies (this is the base, fallback clocksource)
                [ACPI] acpi_pm
                ...
                [X86-64] hpet,tsc

次の出力も参照してください。

cat /sys/devices/system/clocksource/clocksource*/available_clocksource

おすすめ記事