時計が5分ずれてしまう原因は何ですか?


8

私は、(物理的な)ボックスを取り除いたUbuntuを実行しています。時々(3か月に6回)、時計は正確に300秒(+-0.01秒、常に正確に300秒)だけ後方にジャンプします。これは1分ごとに発生します(外部マシンが1分ごとにポーリングしています)。

このボックスは2.6.26-generic(カスタムコンパイルカーネル)、Ubuntu 9.04を実行しています(私はそれを更新しようとしているのですが、それは半埋め込みです)。何が起こったかを示すログには何もありません。私はpool.ntp.org ntpサーバーを多数選択しています。しばらくすると問題が修正されます。

誰かがこれを引き起こす可能性があることを知っていますか?

追加1:

また、同じカーネル(同じバイナリ)を実行している他の多くのボックスと、同じソフトウェアのマイナーバリエーションがあり、これらにはこの問題はありません。ハードウェアも交換しました。

追加2(私の個人的なコメントの要約):

  • 9.04が古くなっていることはわかっています。更新する必要があることに同意します。この決定は私の制御の範囲外です。管理だから。
  • 私は多数のntpサーバーと少数のサーバーを試しました。それはどちらの場合でも起こります。私が多数のntpサーバーを持っている場合、それはそれ自身をより速く修正します。
  • ハードウェアを交換しました
  • 問題を示していない別のボックスで(同じハードウェアを使用して)同じカーネル/オペレーティングシステムを使用しています。
  • 再起動しても効果はありません。(この問題は約6か月間続いています)
  • アップタイムは約3か月です。ボックスは「常にオン」で、PBX(アスタリスク)を実行しています。
  • 現在、hwclockはソフトウェアクロックと正確に一致しています-0.000000秒
  • ハードウェアクロックを読み取るcronジョブを見つけることができませんでした。
  • 負荷関連のパターンはありません(とにかく負荷はかなり低いですが)。
  • それは昼と夜の間に起こります。
  • 定期的に発生するわけではありません。過去3か月に発生したもののうち、半分は過去9日間に発生しています。
  • これは「ドリフト」ではありません。99%の時間で、ほんの1秒未満であり、1分から次の分まで、正確に300秒逆方向にジャンプします。つまり、1分で3:07:03と言って、他のコンピューターを60秒後の1マイクロ秒以内に一致させると、3:04:03と表示されます。
  • ログには何も見つかりません。

1
Ubuntu 9.04のサポートは終了しました。さらに、カスタムカーネルを実行している場合、サポートは制限されます。半組み込みシステムは、さらに複雑なレイヤーを追加します。
パンサー

1
ねえ、それが簡単な質問だったら、私は今までにそれを修正したでしょう:)
AMADANON Inc.

ntpサーバーの数を3に減らしてみてください。接続が良好で地理的に近いサーバーを使用してください。
パンサー

良い考え-私はそれを試しました。唯一の違いは、ntpソースが少ないほど、ntpdが実行するクエリが少なくなり、通常に戻るまでに時間がかかるということです。
アマダノン株式会社2014

まあそれはntpではなく、除去のプロセスによってカスタムカーネルまたはハードウェアを残します。
パンサー

回答:


1

これは、故障したリアルタイムクロック(RTC)のように聞こえます。これが予備のハードウェアである場合は、ライブLinux CDのブートやPXEブートなど、別のOSを実行して問題を確認し、障害を再現できるかどうかを確認できます。別のOSでまったく同じ時刻のずれが発生する場合、問題はハードウェア障害であることを確認しています。

それがRTCであると仮定すると、重大度の順に次の解決策を試すことができます。

  • CMOSバッテリーを交換してください。マルチメーターで古いバッテリーの電圧をテストすることにより、それが故障したバッテリーであるかどうかを確認することができます。
  • RTCを変更します。運が良ければ、豪華なマザーボードを持っているなら、2つのRTCがあるかもしれません。デフォルトで使用される高精度クロック、および標準RTC。BIOS / EFI設定を確認し、障害のあるRTCの使用を回避するために代替RTCに変更できるかどうかを確認します。
  • RTCを交換してください。マザーボードの古さに応じて、RTCはおそらく金属缶またはボード上のチップです。電子工学のスキルがある場合は、このコンポーネントを自分で交換してみてください。
  • RTCまたは一部の電気部品、またはRTCとのインターフェースのリードのいずれかが故障しているため、マザーボードを交換してください。

1

実行中のプロセスを追跡し、同時にクロックを監視するスクリプトをボックスで実行できます。クロックが突然戻った場合、その時点でアクティブなプロセスのリストがログに記録されます。多分それはどのプロセスが時計を変えるかについてのヒントを与えます。

もちろん、これはソフトウェアの問題があることを前提としています。ハードウェアだけに障害が発生している場合、この方法では何も見つかりません。

/bin/bash

oldTime=$(date +%s)
oldPsOutput=$(ps faux)
while sleep 1
do
  currentTime=$(date +%s)
  currentPsOutput=$(ps faux)
  if [ "$currentTime" -lt "$oldTime" ]  # clock change detected?
  then
    echo '========='
    echo "$currentTime < $oldTime"
    echo "$oldPsOutput"
    echo ':::::::::'
    echo "$currentPsOutput"
  fi >> /tmp/clockChangeDetector.log
  oldPsOutput=$currentPsOutput
  oldTime=$currentTime
done

0

Michael Yasumotoの答えはすべての基盤をカバーしているようです-おそらくあなたはおかしなハードウェアを見ていることに同意します-しかし、これは実用的なアイデアです: NTPサーバー、次に「必要なこと」をすべて実行して、組み込みPBXボックスで実行されているNTPクライアントがこのローカルNTPサーバーにできるだけ頻繁に(たとえば、30秒ごとに)時間要求を送信するようにします。

次に、ボックスが最終的にアップグレードされたら、それを適切に脇に置き、何が問題かをAt Point(TM)で把握します。:P

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.