サーバの時間を補正する
サーバ(コンピュータ)の時計は実にいい加減。たまに全然狂わないサーバ機器にも当たるのだが、基本的に毎日少しずつ狂うものと考えてまず間違いない。 ただサーバの時間の狂いは、通常運用のみならず、障害時にログを見たりするときに分析できない自体を招きかねない。
なので、最低でも1日1回は補正することを絶対に必要ということになる。
サーバの時間を補正するには、インターネットマルチフィード(MFEED) 時刻情報提供サービスを使うのが一番
ntpdateコマンドを使って、時間を管理しているサーバに問い合わせれば、正しい時間をセットできる仕組みだ。
# apt-get install ntpdate
(2)cronにて1日1回は実行するように設定する。# vi /etc/cron.d/set_ntpdate
----------------------------------------------0 2 * * * root /usr/sbin/ntpdate -s ntp.jst.mfeed.ad.jp > /dev/null 2>&1
1 2 * * * root /sbin/hwclock -r
(3)cronを再起動する。# /etc/init.d/cron restart
● システム時間の補正
ntpdateコマンドは、インターネットマルチフィード(MFEED)のサーバntp.jst.mfeed.ad.jp(ラウンドロビンのNTPサーバー)にアクセスさせれば、時間がセットされる。ntp.jst.mfeed.ad.jpは、ラウンドロビンになっていて、実際は分散されてアクセスしている。○ ntp.jst.mfeed.ad.jpの実サーバ
ntp1.jst.mfeed.ad.jp (210.173.160.27)
ntp2.jst.mfeed.ad.jp (210.173.160.57)
ntp3.jst.mfeed.ad.jp (210.173.160.87)
● ハードウェア時間の補正
ハードウェア時間も結構狂っているもの。 電池切れなんか起こしているとサーバの電源を一度落としてしまうと、とんでもない時刻がセットされてしまうことになる。そうならないためにも、電池も必ずチェックしよう。
ハードウェア時間(CMOSクロック)を補正するには、hwclockコマンドを使用する。
hwclock -w →システム時刻をCMOSクロックに書き込むhwclock -r →CMOSクロックを表示する
カーネル2.6.10系以降、でrtcドライバでタイムアウトする現象が発生する機種がある。
DELLのサーバではPowerEdge1850や、SC1425などで、この現象が発生していた。 同じ時期にリリースされているPE750では起きないため、おそらくマザーボードと rtcドライバのマッチングによる問題だと思われる。
# hwclock -r
select() to /dev/rtc to wait for clock tick timed out
○ 対処方法(CMOS レジスタを直接操作するように強制する:RTCドライバを使わない)
システム時刻→CMOSクロックに書き込む# hwclock --directisa --systohc --localtime
CMOSクロック→システム時刻に書き込む# hwclock --directisa --hctosys --localtime
CMOSクロックを表示する# hwclock --directisa --show