web-dev-qa-db-ja.com

オンライン時にNTPと、およびオフライン時にRTCとクロックを同期しますか?

Linuxシステムをオンライン中にNTPと同期し、オフライン中にRTCを予測どおりにドリフトさせる既存のメカニズムはありますか?


私たちはリモートの「コレクター」を操作します。センサーデータを収集してタイムスタンプを記録する組み込みLinuxシステムです。 5秒未満など、クロックエラーをかなり小さく保つ必要があります。通常、NTPを使用してクロックを同期します。システムがオンラインである限り、これは正常に機能します。

問題は、一部のコレクターに非常に悪いアップリンクがあり、数時間、数日、または数週間もダウンする可能性があることです。ローカルデータの収集が停止することはありませんが、NTPがなければ、Linuxシステムクロックは大きく、非常に予測不可能にずれます。

OTOH、ハードウェアのRTCも大きく変動しますが、一定の速度で変動します。 RTCドリフトレートはボードごとに異なりますが、ボードごとに一定であり、測定することができます。

私たちが必要としているのは、以下を実行するメカニズムだと思います。

  • 展開前にボードのRTCドリフトレートを測定する
  • 可能な場合はNTPを使用して継続的/定期的にシステム時間を調整します
  • RTCが使用できない場合は、NTPから定期的にシステム時間を調整してください。既知のRTCドリフト率を考慮に入れてください。
  • オプション:オンライン中のRTCドリフト率の測定と記録(1)

「メカニズム」とは、「オンライン」と「オフライン」の2つの状態を処理できる、よく管理され、文書化されたソフトウェアや構成の一部を意味します。システムクロックがタイムソース(ntp対rtc)を修正し、状態の変化を検出し、RTCドリフトを修正します。特別なntpd構成/プラグインとして実装されているかどうかは問題ではありません、別のデーモンとして、cronジョブとして、またはその他。

私は Chrony を調べましたが、その documentation によれば、システムクロックのドリフトを予測しようとします。私たちの場合、RTCよりもはるかに予測不能なドリフトが発生します。 ChronyはRTCを使用していて、再起動後も時間を維持しているようです。


(1)注意ntpdはカーネルの「11分モード」をアクティブにします(システムクロックからrtcを11分ごとに更新します)。現在のカーネルとntpdでは、11分のモードを防ぐ方法はないようです。したがって、rtpドリフト情報は、ntpdの実行中に失われます(thx @billthor)。


更新/編集:

  • USBまたはシリアル経由でMSFまたはDCF77信号(ヨーロッパを本拠地とする)に外部無線クロックを追加することを検討しています。ただし、ハードウェアの無駄を省きます。
  • 私たちのコレクターは、多くの場合地下室の屋内に配置されています。したがって、GPSクロックを追加しても効果はありません。
  • 私たちはDebian 7を使用しています。つまり、util-linux-2.20.1からのhwclock、ntpdate-4.2.6p5、ntp-4.2.6.p5からのntpd、chrony-1.24(潜在的には1.30)です。
  • 私たちの問題は、ntpdate(8)hwclock(8)date(1)などの使用方法がわからないことではないことに注意してください。italics「メカニズム」の意味について。
  • 「11分モード」についての脚注を追加
  • ここ は、オフライン同期とRTCドリフトに関する非常に興味深い議論です
11
Nils Toedtmann

あなたの状況は珍しいです、そしてあなたが望むことをするために誰かが標準のntpdベースの設定を思いついたら私は驚くでしょう。とは言っても、私は驚かれることを好みます、そしてそれはこれらの部分の周りでかなり頻繁に起こります。

しかし、誰かがより良いアイデアを思いつくまで、このようなcrontabエントリを検討しましたか?

_*/5 * * * *   ntpdate 0.pool.ntp.org || ( hwclock --adjust; hwclock --hctosys )
_

IEでは、5分ごとにntpdateを介してクロックの同期を試み、失敗した場合(および失敗した場合のみ)、_/etc/adjtime_ファイル(_man hwclock_、およびその特定のRTCレートの知識を使用して適切に入力した最初の行)、次にRTCからシステムクロックを設定します。

このようなソリューションを採用し、これらのシステムのかなりの数を展開している場合、プールで作業し、使用量に比例してサーバーを提供することは礼儀正しいと見なされます。詳細については http://www.pool.ntp.org/en/vendors.html を参照してください。

4
MadHatter