ntpdateコマンドによるslewモードでの時刻合わせ

はじめまして、松野です。
今回はLINUXサーバの時刻同期についてです。

サーバ内の時間がずれていると、さまざまな問題が発生します。

ログに書かれた時間が実際の時間と異なってしまったり、大きくずれていると正常に起動しないミドルウェアがあったりします。

時刻同期を行うコマンドのひとつにntpdateコマンドがあります。

ntpdateコマンドによる時刻同期には、一気に合わせるstepモードと、徐々に合わせるslewモードがあります。

一気に合わせたい場合(stepモード)

徐々に合わせたい場合(slewモード)

一気に合わせても問題ない場合は、stepモードで時刻合わせを実行した後にNTPDを起動すればOKです。

時間が進んでしまっている場合、過去に戻ることになるので注意が必要です。

サーバ内時間が過去に戻ってしまうと困るサーバの場合には、slewモードを利用して徐々に合わせていくことになります。
修正するスピードは「1秒間につき最大で0.0005 秒」とのこと。

今回はslewモードでの時刻合わせを実際に行い、どれくらい時間が掛かるのかを調べました。

slewモードの動作について検証

サーバの時刻を10秒進め、slewモードによる時刻合わせを行います。
1秒間に最大0.0005秒修正されるので、計算上では最短5時間30分で修正完了となります。

まずはサーバの時間を10秒ほど未来に進めます。

約10秒早い状態になりました。

slewモードによる時刻合わせを開始します。

slewモードでの時刻合わせが開始されました。

実行後、念のため一気に時刻合わせがされていないかを確認。

10秒早い状態のままです。
この状態でしばらく(一晩)放置します。

一晩たってから、ログを確認します。

約5時間30分後、もっとも時刻差異が小さくなりました。
計算上の完了予定時刻と近いですね。

その後のログを追ってみます。

このサーバはNTPDが起動していない状態だと徐々に時間が遅れていくようです。
ただ、00:20~00:30の間に遅れた時間が、その後より明らかに大きいです。
これは、slewモードの時刻合わせが未だ動いていたものと思われます。
slewモードの時刻あわせは、少し行き過ぎてしまうようですね。

結果

slewモードを利用することで、徐々に時刻合わせを行うことができました。
注意点としては

1.時刻の差異がなくなった時点で丁度止まる訳ではなく、若干行き過ぎる
2.時刻合わせが終わったあとは再び時刻がずれ始める

の二点でしょうか。
実際に行う場合には、何度かに分けて時刻合わせをし、差異をなくした上でNTPDを
起動させる必要がありそうです。

投稿者プロフィール

matsuno
基本を大事にしていきたいサーバーエンジニアです。

コメントを残す

メールアドレスが公開されることはありません。 が付いている欄は必須項目です

Time limit is exhausted. Please reload CAPTCHA.