CentOS5.0でntpを使用して時刻を合わせる

なんか時計がずれると思っていたら、ntpdが自動起動になっていなかった。ntpはnetwork time protocolの略でネットワーク越しに正確な時刻同期を実現するためのプロトコルで、世界中に時刻を提供するサーバが立っている。ntpdの設定はデフォルトのままではRedHatのタイムサーバが記述されているので、より近いサーバや自分のISPが提供しているサーバに変えた方がいいかもしれない。

[root@ml115 ~]# cat /etc/ntp.conf
...
server 0.rhel.pool.ntp.org
server 1.rhel.pool.ntp.org
server 2.rhel.pool.ntp.org
...
...
server ntp1.jst.mfeed.ad.jp
server ntp2.jst.mfeed.ad.jp
server ntp3.jst.mfeed.ad.jp
...

ntpでは、タイムサーバの時刻と自サーバ上の時刻が違いすぎると、うまく同期できなかったり同期に時間がかかることがある。なので最初はntpdateコマンドで強制的に時刻を合わせるとよい。

[root@ml115 ~]# ntpdate ntp1.jst.mfeed.ad.jp
26 Nov 22:55:39 ntpdate[7371]: adjust time server 210.173.160.27 offset -0.034191 sec

また、デフォルトではntpで取得した時刻はサーバ内のハードウェアクロックを更新させない。これを更新させるように変更する。

[root@ml115 ~]# vi /etc/sysconfig/ntpd 
# Drop root to id 'ntp:ntp' by default.
OPTIONS="-u ntp:ntp -p /var/run/ntpd.pid"
# Set to 'yes' to sync hw clock after successful ntpdate
SYNC_HWCLOCK=no
# Drop root to id 'ntp:ntp' by default.
OPTIONS="-u ntp:ntp -p /var/run/ntpd.pid"
# Set to 'yes' to sync hw clock after successful ntpdate
SYNC_HWCLOCK=yes

そしてntpdを起動する。

[root@ml115 ~]# service ntpd start
Starting ntpd:                                             [  OK  ]

ntpdを自動起動するように設定する。

[root@ml115 ~]# chkconfig ntpd on

ntpの同期状態を確認する。

[root@ml115 ~]# ntpq -p
     remote           refid      st t when poll reach   delay   offset  jitter
==============================================================================
 ntp1.jst.mfeed. 210.173.160.86   2 u    7   64    1    6.880  -20.108   0.001
 ntp2.jst.mfeed. 210.173.160.86   2 u    6   64    1    7.355  -20.016   0.001
 ntp3.jst.mfeed. 210.173.160.86   2 u    5   64    1    6.685  -19.913   0.001
 LOCAL(0)        .LOCL.          10 l    4   64    1    0.000    0.000   0.001

システムの時刻を確認する。

[root@ml115 ~]# date
Mon Nov 26 23:07:33 JST 2007

CPUの使用する時刻を確認する。

[root@ml115 ~]# clock
Mon 26 Nov 2007 11:07:40 PM JST  -0.064814 seconds

ハードウェアクロックを確認する。

[root@ml115 ~]# hwclock 
Mon 26 Nov 2007 11:09:15 PM JST  -0.201409 seconds

ちなみにタイムゾーンは/etc/localtimeにて設定される。このファイルはバイナリなので直接編集することは出来ず、/usr/share/zoneinfo/Japanへのリンクもしくはコピーとして作成する。