このページではLinuxサーバーの時刻をNTPと同期させるntpdの動作をntpqでチェックする方法について初心者/ビギナー向けに解説します。
お便利サーバー.com+相互リンクサイト内をキーワードで検索
NTP SSH DHCPサーバーの構築

NTPサーバーについて

ntpdの設定(WBEL3,CentOS3)

ntpdの設定(WBEL4,CentOS4)

ntpdの設定(CentOS5)

ntpdのコントロール

ntpdの動作チェック


SSHサーバーについて

sshdの設定(WBEL3,CentOS3)

sshdの設定(WBEL4,CentOS4)

sshdの設定(CentOS5)

sshdのコントロール

sshdの動作チェック

ポートフォワーディングの設定


DHCPサーバーについて

DHCPのインストールと設定

DHCPのコントロール

DHCPの動作チェック


ntpdの動作チェック

ntpd は、例えば参照する上位の NTP サーバー がダウンしていても、"/var/lib/ntp/drift"の値を参照して見かけ上は正常に動作します /etc/ntp.confのdriftfileの設定(WBEL3,CentOS3) /etc/ntp.confのdriftfileの設定(WBEL4,CentOS4) /etc/ntp.confのdriftfileの設定(CentOS5) 。

従って 構築中のLinuxサーバー のntpdがきちんと設定されていて、"/etc/init.d/ntpd status"や ps コマンド で動作確認 ntpdの動作チェック を行っても、NTP クライアント としてきちんと機能しているかどうかは確認できません。

ntpdの実際の動作状態を確認するには、 "ntpq" コマンドを "-p" オプション付きで実行します。実行はroot アカウント から行います。

ntpdは直ぐには安定動作に入りませんから、ntpdを起動したら適当に間隔をおいて "ntpq -p" を実行してみてください。以下のような感じになるはずです。

[tanaka@web1 ~]$ su -Enter
Password: "root"のパスワードを入力します。 Enter
[root@web1 ~]# /etc/init.d/ntpd startEnter
ntpd:時間サーバと同期中:                 [ OK ]
ntpdを起動中:                      [ OK ]
[root@web1 ~]# ntpq -pEnter  ←ntpd起動後すぐに実行
   remote      refid   st t when poll reach  delay  offset jitter
==============================================================================
ntp1.jst.mfeed. 0.0.0.0     16 u  -  64  0  0.000  0.000 4000.00
ntp2.jst.mfeed. 0.0.0.0     16 u  -  64  0  0.000  0.000 4000.00
ntp3.jst.mfeed. 0.0.0.0     16 u  -  64  0  0.000  0.000 4000.00
[root@web1 ~]# ntpq -pEnter  ←ntpd起動から20秒後に実行
   remote      refid   st t when poll reach  delay  offset jitter
==============================================================================
ntp1.jst.mfeed. ote-ntp1.jpnap. 2 u  17  64  1  36.063  27.966  0.008
ntp2.jst.mfeed. fs-monntp1.mfee 2 u  18  64  1  35.643  27.438  0.008
ntp3.jst.mfeed. fs-monntp1.mfee 2 u  14  64  1  35.663  28.134  0.008
[root@web1 ~]# ntpq -pEnter  ←ntpd起動から20分後に実行
   remote      refid   st t when poll reach  delay  offset jitter
==============================================================================
+ntp1.jst.mfeed. ote-ntp1.jpnap. 2 u 124 128 377  36.528 -30.583  4.519
*ntp2.jst.mfeed. fs-monntp1.mfee 2 u 117 128 377  35.252 -31.144  4.763
+ntp3.jst.mfeed. fs-monntp1.mfee 2 u  50 128 377  35.810 -32.446  4.050
[root@web1 ~]#

"remote" 以下には、"/etc/ntp.conf"の"server"キーワード ntp.confのserverの設定(WBEL3,CentOS3) ntp.confのserverの設定(WBEL4,CentOS4) ntp.confのserverの設定(CentOS5) で設定したNTPサーバーのFQDNが表示されるはずです。

また、この問い合わせ先のNTPサーバーが独立したNTPサーバーではない場合(別の上位のNTPサーバーの情報を中継しているケース)は、 "refid" 以下に実際に参照されるNTPサーバーのFQDNが表示されます。

ntpdが安定動作に入ると、上の 赤 で示すような "*" 、 "+" の記号が表示行の左端に入ります。 "*" で始まるものが現在同期に使用しているNTPサーバーで、 "+" で始まるものが予備のNTPサーバーです。

もしも、インターネットへの接続が正常であるにも係わらず、ntpdの起動から一時間ほど待ってもこの記号が付かない場合は、ntpdが正常に機能していません。"ntpq -p"の結果から以下の点をチェックしてみてください。

1."refid"の表示が"0.0.0.0"のまま変わらない。

この場合、NTPサーバーとの接続が成立していません。

原因としては、"ntp.conf"の"restrict default ignore"が有効になっている ntp.confのrestrictの設定(WBEL3,CentOS3) ntp.confのrestrictの設定(WBEL4,CentOS4) ntp.confのrestrictの設定(CentOS5) 、NTPサーバーの指定 ntp.confのserverの設定(WBEL3,CentOS3) ntp.confのserverの設定(WBEL4,CentOS4) ntp.confのserverの設定(CentOS5) に誤りがある。などが考えられます。"/etc/ntp.conf"の設定をもう一度見直してください。

2."refid"には FQDN が表示されているが、いつまで経っても"*"、"+"の符号が付かない。

つまり、NTPサーバーへの接続は成立しているのに、時刻調整ができないケースです。

原因としては、接続先のNTPサーバーが込み合っていて安定した時刻情報が得られていないというケースが考えられますので、NTPサーバーの指定 ntp.confのserverの設定(WBEL3,CentOS3) ntp.confのserverの設定(WBEL4,CentOS4) ntp.confのserverの設定(CentOS5) を変更してみてください。

また稀なケースですが、ntpdが調整しようとしてる時刻と調整前の WBEL や CentOS のシステム時計の時刻が大幅に違っている場合、ntpdが補正値の計算をできずになかなか安定動作に入れない、ということもあり得ます。

こういう場合は、ntpdを一度停止してWBELやCentOSのシステム時計を ntpdate コマンドで手動調整し、 reboot コマンドでWBELやCentOSのシステムを再起動するときちんと動作するようになります。

[tanaka@web1 ~]$ su -Enter
Password: "root"のパスワードを入力します。 Enter
[root@web1 ~]# /etc/init.d/ntpd stopEnter
ntpdを停止中:                      [ OK ]
[root@web1 ~]# ntpdate ntp1.jst.mfeed.ad.jpEnter
         ↑手動でサーバーのシステム時計をNTPサーバーに合わせます。
2 Jan 09:33:42 ntpdate[10467]: adjust time server 210.173.160.27 offset -0.002358 sec
[root@web1 ~]# rebootEnter

なぜこの方法で問題が解消されるのかについては、次のパートをご覧ください。

このページの先頭へ↑

おまけ〜ホスト上の二種類の時計

WBEL や CentOS が動作している ホスト機 では二種類の時計が動作しています。

ハードウェアクロックは BIOS を呼び出して調整することができます。

ひとつは、通称 ハードウェア クロック と呼ばれる、 マザーボード 上に組み込まれているクウォーツ時計です。

ハードウェアクロックは、ホスト機の電源が入っていない間もバックアップ用の電池で動作しています。

もうひとつは一般に システムクロック と呼ばれるもので、これはWBELやCentOSが ソフトウェア 的に動作させている時計です。 ntpd や、前のパートの最後に説明した ntpdate コマンド などで調整され、WBELやCentOSのシステムや アプリケーション が参照するのはこのシステムクロックです。

具体的にいうと、WBELやCentOSの起動時に実行される スクリプト の中で、システムクロックをハードウェアクロックに合わせる "hwclock --hctosys" というコマンドが実行されます。

WBELやCentOSは OS の起動時に、一度だけハードウェアクロックを参照してシステムクロックの動作を開始し、次回の起動作業までハードウェアクロックを参照することはありません。

さて、ハードウェアクロックは要するに「ただの時計」ですから、放っておくと少しずつ狂ってきます。能力的には通常の時計と同等の精度で時刻を刻むことができるはずですが、ホスト機の内部は温度や振動、電磁波の影響もあって、同じ仕組みを持つ通常の時計に比べるとかなり狂いやすくなっているのが事実です。

ということは、ハードウェアクロックは普通の時計と同じように、時々時間を合わせてやる必要がありそうな気がするかもしれませんが、実際にはまずその必要はありません。

具体的にいうと、WBELやCentOSの終了時に実行されるスクリプトの中で、ハードウェアクロックをシステムクロックに合わせる "hwclock --systohc" というコマンドが実行されます。

なぜかというと、WBELやCentOSは poweroff や reboot コマンドが実行されるとき、システム終了時に実行されるスクリプトによって、ハードウェアクロックの時刻をシステムクロックの時刻に合わせるようになっているためです。

つまり、ntpdやntpdateコマンドなどでシステムクロックが正確に調整された後にWBELやCentOSの再起動を行えば、自動的にハードウェアクロックも正確に調整され、その調整されたハードウェアクロックによってシステムクロックがスタートすることになります。

これで、前のパートの最後に説明した時刻調整方法のプロセスがお解かりと思います。

さて、連続稼動を前提としている 構築中のLinuxサーバー でも、メンテナンスなどで数ヶ月に一度くらいは電源を切ることもあるでしょう。

という訳ですから、ntpdによってシステムクロックが常に正確に時刻を刻んでいるのであれば、特に意識することなく不定期にハードウェアクロックの調整も行われている、ということになるわけです。

解説書などで、定期的にシステムクロックとハードウェアクロックを同期させるような仕組みを設けるように勧めているケースがよく見られますが、それが必ずしも必要なことではないことはこれでお解かりと思います。

トラブルを避ける意味でも、余分な仕組みはできるだけ作らないようにしましょう。

このサイトは既に更新を終了していますが、今のところ店じまいの予定はありません。 リンクフリー ですので、趣味や勉強のためでしたら、引用、転用、コピー、朗読、その他OKです。このサイトへのリンクについては こちら をご覧ください。
Powered by Apache
”Linux”は、Linus Torvalds 氏の各国における登録商標です。”Red Hat”及びRed Hatのロゴおよび Red Hat をベースとしたすべての商標とロゴは、各国におけるRed Hat, Inc. 社の商標または登録商標です。その他のプログラム名、システム名、製品名などは各メーカー、ベンダの各国における登録商標又は商標です。
www.centos.org - The Community ENTerprise Operating System