Linuxの時刻同期まとめ。chronyの設定とntpdateコマンドの使い方
インフラ構築においてシステム間の時刻同期は必須です。時刻同期を行っていないサーバーでは、クラスタやデータベースがクラッシュする可能性があります。
この記事では、Linuxの時刻同期を1本にまとめて解説します。
- chrony — RHEL/CentOS 7以降の標準。常駐して継続的に同期する(推奨)
- ntpdate — 従来からのワンショット同期コマンド。古い環境や手動同期で使用
chronyを使用した時刻同期(推奨)
RHEL/CentOS 7以降ではchronyが標準の時刻同期デーモンです。
インストールと起動
yum install chrony
systemctl start chronyd
systemctl enable chronyd
同期先NTPサーバーの設定
/etc/chrony.conf に同期先を追記します。国内なら情報通信研究機構(NICT)の公開NTPサーバーが定番です。
server ntp.nict.jp iburst
設定後にchronydを再起動します。
systemctl restart chronyd
同期状態の確認
chronyc sources
即時反映
時刻のずれをすぐに補正したい場合は makestep を使います。
chronyc makestep
ただしタイムスタンプが重要なシステム(DBサーバーなど)では、時刻が一気に飛ぶことでデータの整合性が取れなくなる可能性がある点に注意してください。稼働中のシステムでは徐々に補正(slew)されるのを待つのが安全です。
ntpdateコマンドの使い方
ntpdateはNTPサーバーと時刻をワンショットで同期するコマンドです。RHEL、CentOS、Debian、Ubuntu、Solarisなど多くのUnix/Linux系OSで利用されてきました(現行OSではchronyへの移行が進んでおり、非推奨扱いです)。
基本構文
ntpdate [オプション] <NTPサーバー>
主要オプション
| オプション | 意味 |
|---|---|
-B | slewモードを強制(徐々に時刻を補正する) |
-b | stepモードを強制(時刻を一気に合わせる) |
-q | 同期せず、問い合わせ結果の表示のみ行う |
-v | 詳細情報を表示する |
-d | デバッグモード(同期は行わない) |
オプション未指定の場合、ずれが大きいときはstep、小さいときはslewで補正されます。
稼働中のシステムでは、slewモードで徐々に時刻同期を行いましょう。 stepモードで強制的に時刻が過去へ巻き戻ると、クラスタやデータベースがクラッシュする恐れがあります。
使用例
slewモードで時刻同期する:
ntpdate -B ntp.nict.jp
詳細情報を表示しながら同期する:
ntpdate -Bv ntp.nict.jp
同期はせず、NTPサーバーへ時刻の問い合わせだけ行う(動作確認に便利):
$ ntpdate -qv ntp.nict.jp
15 Aug 12:18:17 ntpdate[2097]: ntpdate 4.2.6p5@1.2349-o Tue Feb 6 03:08:09 UTC 2018 (1)
server 133.243.238.164, stratum 1, offset -0.000843, delay 0.03593
server 133.243.238.163, stratum 1, offset -0.001520, delay 0.03654
server 133.243.238.244, stratum 1, offset -0.000989, delay 0.03465
server 133.243.238.243, stratum 1, offset -0.000673, delay 0.03610
15 Aug 12:18:24 ntpdate[2097]: adjust time server 133.243.238.244 offset -0.000989 sec
デバッグモードで問い合わせの詳細(stratum、delay、offsetなど)を確認する:
ntpdate -dv ntp.nict.jp
まとめ
| 環境 | 方法 |
|---|---|
| RHEL/CentOS 7以降の常時同期 | chrony(chronyd + /etc/chrony.conf) |
| ずれの即時補正 | chronyc makestep(DBサーバーでは注意) |
| 手動のワンショット同期 | ntpdate -B <NTPサーバー>(slewモード推奨) |
| 同期前の動作確認 | ntpdate -qv <NTPサーバー> |
Windows環境(Active Directory)の時刻同期はActiveDirectoryでのNTPサーバ時刻同期手順を参考にしてください。