Webエンジニア向けプログラミング解説動画をYouTubeで配信中!
▶ チャンネル登録はこちら

chrony(クロニー)とは | 意味や読み方など丁寧でわかりやすい用語解説

chrony(クロニー)の意味や読み方など、初心者にもわかりやすいように丁寧に解説しています。

作成日: 更新日:

読み方

日本語表記

クロニー (クロニー)

英語表記

chrony (クロニー)

用語解説

chronyは、Network Time Protocol(NTP)というネットワークプロトコルを実装したプログラムの一つであり、コンピュータのシステム時刻を正確に維持するために使用されるデーモン(バックグラウンドで動作するプログラム)である。システムエンジニアを目指す上で、コンピュータの時刻が正確であることは、単なる時計の正確さ以上の意味を持つ。例えば、ログファイルのタイムスタンプがずれていると問題発生時の原因究明が困難になったり、分散システムやデータベースにおけるトランザクションの整合性が失われたり、セキュリティ認証が正しく機能しなかったりするなど、様々な問題を引き起こす可能性があるため、高精度な時刻同期は現代のITシステムにおいて不可欠な要素となっている。chronyは、既存のNTPデーモンであるntpdと比較して、より現代的な要件に対応し、特に不安定なネットワーク環境や仮想環境において優れた性能を発揮するよう設計されている。

詳細に入ると、時刻同期の基盤となるNTPプロトコルは、世界中の標準時刻サーバーから時刻情報を取得し、自身のシステム時刻を調整する仕組みを提供する。NTPサーバーは階層構造(Stratum)を持ち、原子時計などの高精度な時刻源に近いほど低いStratumレベル(例:Stratum 1)となり、信頼性が高いとされる。NTPクライアントは、これらのサーバーから時刻情報を受け取ることで、自身のシステムクロックを調整する。しかし、ネットワークの遅延やコンピュータの内部時計(システムクロック)が時間の経過とともにわずかにずれていく現象であるクロックドリフトなどにより、正確な時刻を維持することは容易ではない。

chronyがこのような課題に対して持つ主な特徴とメリットは多岐にわたる。まず、chronyは高精度な同期を実現する。マイクロ秒オーダーでの時刻調整が可能であり、クロックドリフトを精密に学習して補正することで、極めて高い精度でシステム時刻を維持できる。次に、迅速な同期も大きな強みである。システムの起動直後や、何らかの理由でシステム時刻が大幅にずれてしまった場合でも、chronyは短時間で正確な時刻に修正できる。これは特に、頻繁に再起動されるサーバーや、スナップショットからの復元が行われる仮想マシン環境で重要となる。

また、chronyは安定した運用を可能にする。ネットワーク接続が一時的に途切れたり、帯域幅が制限されたりするような不安定な環境でも、chronyは効率的に動作し、時刻の精度を維持しようと試みる。これは、クロックドリフトの学習能力が高いため、参照サーバーからの情報が一時的に途絶えても、自身の内部時計のずれを予測して補正し続けることができるからである。この特性は、特に仮想マシンで発生しやすいクロックドリフトに対して非常に有効である。リソース効率も優れており、CPUやメモリの消費が少ないため、リソースに制約のある組み込みシステムや多数の仮想マシンが稼働するサーバー環境でも安心して利用できる。セキュリティ面では、NTPv4で提供される認証機能に対応しており、時刻情報の改ざんや偽装を防ぐための対策が講じられている。さらに、オフライン時の動作にも配慮されており、一度正確な時刻に同期された後であれば、参照サーバーとの接続が失われても、学習したドリフト情報に基づいて高精度な時刻をしばらくの間維持しようとする。

chronyは主に二つのコンポーネントで構成される。一つはバックグラウンドで動作し、実際の時刻同期処理を行うデーモンプログラムであるchronydである。もう一つは、chronydの状態を確認したり、設定を変更したりするためのコマンドラインツールであるchronycである。

chronyの設定は、通常/etc/chrony.confというファイルで行われる。このファイルには、主に以下の重要なディレクティブ(設定項目)が含まれる。serverまたはpoolディレクティブは、時刻同期の参照元となるNTPサーバーやNTPサーバーのプール(複数のサーバーの集合体)を指定するために使用される。driftfileディレクティブは、システムのクロックドリフト情報が保存されるファイルを指定する。chronyはこのファイルに前回の同期で学習したドリフト情報を書き込み、システム再起動時にそれを読み込むことで、より迅速かつ正確な同期を可能にする。rtcsyncディレクティブは、システムクロックとハードウェアクロック(RTC: Real Time Clock)の間で時刻を同期させる機能を有効にする。ハードウェアクロックは、電源がオフになっても時刻を維持する独立した時計である。makestepディレクティブは、システム時刻と参照サーバーの時刻との間に大きなずれがある場合に、時刻をどのように修正するかを制御する。例えば、指定された閾値以上のずれがある場合に、時刻を一気に修正(ステップ同期)するか、段階的に調整(フェーズロックループ)するかを設定できる。allowおよびdenyディレクティブは、chronycコマンドによる外部からのアクセスを制御するために使用され、セキュリティを向上させる。

chronyの動作の仕組みは以下のようになる。chronydは設定された参照サーバーから定期的に時刻情報を受け取る。受け取った情報と自身のシステムクロックとの差分(オフセット)を計算し、さらにシステムクロックが進む速度(ドリフト率)を継続的に学習する。この学習したドリフト率に基づいて、自身のシステムクロックを微調整し続ける(これは時刻の位相を合わせ続けるための制御技術であるフェーズロックループによって行われる)。もし、オフセットがmakestepで指定された閾値を超えた場合、chronydはシステム時刻を直ちに正しい時刻に調整する(ステップ同期)。このように、chronyは高精度なドリフト学習と柔軟な調整メカニズムを組み合わせることで、多様な環境下でシステム時刻を正確に維持する役割を担っている。

関連コンテンツ

関連IT用語