Linuxの時刻同期まとめ。chronyの設定とntpdateコマンドの使い方

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サーバー>

主要オプション

オプション意味
-Bslewモードを強制(徐々に時刻を補正する)
-bstepモードを強制(時刻を一気に合わせる)
-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サーバ時刻同期手順を参考にしてください。

技術ブログ一覧へ戻る