server-memo.net

再起動で時間がずれる場合の対処方法

      2016/01/22

再起動で時間ずれる場合の対処方法

NTPで時刻を同期をしているのにもかかわらず、サーバを再起動すると時間ずれてしまう場合の対処方法。

サーバを再起動すると時間がずれる

サーバの再起動を行うとntpで時刻同期を取っていたはずなのに、時刻がずれるということはありませんか? それは、ハードウェアで設定されている時間がずれているために起きているという原因が考えられます。

他の原因だったらごめんなさい:-p

時刻ずれ対策(linux編)

Linuxはサーバ起動時にハードウェアに設定してある時刻を参照してこれをシステムの時間として起動していきます このことによって、サーバを再起動すると時刻がずれるという現象が発生するのです。

システムとハードウェアの時間確認方法

hwclockはハードウェアの時刻を、date でシステムの時刻を表示させてます。

# hwclock ; date
2007年04月02日 13時50分38秒  -0.742973 秒
2007年  4月  2日 月曜日 15:34:10 JST

私の環境では、結構ずれていました・・・

システムとハードウェアの時刻同期

早速このズレを修正したいと思います。
システムとハードウェアクロックの同期には「 hwclock -w 」か「 hwclock --systohc 」 コマンドを使用します。
※今回の例ではhwcock -wを使用しています。

# hwclock -w ; hwclock ; date
2007年04月02日 15時34分52秒  -0.198647 秒
2007年  4月  2日 月曜日 15:34:52 JST

こんな感じで、ハードウェアの時間とシステムの時間を同期させます。

crontabへの登録

手動でハードウェアとシステム時刻の同期をとっても、ハードウェアの時間は放置しておくと徐々にずれていってしまうので、 crontabコマンドで、定期的にシステムとの時刻を同期するようにしたほうがよいと思います。

# crontab -e
追加内容

毎朝AM5時にhwclockが実行されるという内容です。

0 5 * * * /sbin/hwclock -w

内容確認
# crontab -l
0 5 * * * /sbin/hwclock -w

これで、毎日AM5時にhwclockコマンドが実行されてシステムとハードウェア時刻の同期がとれるようになります。

以上

 - ntp