NTP関連ですが、ntpqというコマンドがあります。
これは、ntpデーモンを起動しているときに、自分のサーバーがどの時刻サーバーと同期をとっているのか、どれくらい時刻差があるのかを確認できるコマンドです。
maxpoll 16で同期するにはどれくらい時間がかかるのか実験しているのですが、pollingが12になってから表示が変化しました。when列とpoll列です。
polling 11まではこれらの数値は秒数で2の4乗(16)から11乗(2048)まで表示されるのですが、polling 12からは分数が表示されるようになりました。数字の後ろについている"m"はminuteのmです。上記では、polling間隔が68分で、前回同期をとってから61分経過していることを表しています。whenの値ははじめは秒数でカウントされていましたが、あるところから分でのカウントに変わっていました。境目はどこなんだろう?
ちなみに、2行目のLOCALは64秒間隔での同期です。
polling 16は約18時間なので18hと表示されるのでしょうか?現場のサーバーに仕込んであるので明日が楽しみです。
RHEL4で確認してあります。
これは、ntpデーモンを起動しているときに、自分のサーバーがどの時刻サーバーと同期をとっているのか、どれくらい時刻差があるのかを確認できるコマンドです。
maxpoll 16で同期するにはどれくらい時間がかかるのか実験しているのですが、pollingが12になってから表示が変化しました。when列とpoll列です。
# ntpq -p
remote refid st t when poll reach delay offset jitter
==============================================================================
*123.456.789.098 123.98.1.90 2 u 61m 68m 377 0.110 0.281 0.142
LOCAL(0) LOCAL(0) 11 l 24 64 377 0.000 0.000 0.008
polling 11まではこれらの数値は秒数で2の4乗(16)から11乗(2048)まで表示されるのですが、polling 12からは分数が表示されるようになりました。数字の後ろについている"m"はminuteのmです。上記では、polling間隔が68分で、前回同期をとってから61分経過していることを表しています。whenの値ははじめは秒数でカウントされていましたが、あるところから分でのカウントに変わっていました。境目はどこなんだろう?
ちなみに、2行目のLOCALは64秒間隔での同期です。
polling 16は約18時間なので18hと表示されるのでしょうか?現場のサーバーに仕込んであるので明日が楽しみです。
RHEL4で確認してあります。
先月、サーバーの時刻設定を行う作業を行い、手動で時刻サーバーと同期を取る手順を入れていた。
本番サーバーでの作業は作業手順書を書いて、オペレーターに引き継いで行わなければならないので、時刻調整の所で下記メッセージを確認するように手順を書いた。
"
DD MMM hh:mm:ss ntpdate[xxxxx]: step time server 123.456.789.098 offset -xx.xxxxxx sec
"
実際に作業をお願いしたらntpdateコマンドを実行したところで問い合わせの電話が鳴った。
"
DD MMM hh:mm:ss ntpdate[xxxxx]: step time server 123.456.789.098 offset -xx.xxxxxx sec
"
ではなく
"
DD MMM hh:mm:ss ntpdate[xxxxx]: adjust time server 123.456.789.098 offset -xx.xxxxxx sec
"
だけれども正常に作業が出来ているのか?と。
"step"か"adjust"かの違いなので大丈夫ですと答えた後にソースを調べてみた。
すると、調整した秒数が0.5秒以上か未満かで出力メッセージが変わることがわかりました。
調整幅が0.5秒未満の場合にはメッセージ"adjust time server・・・"が、0.5秒以上の場合にはメッセージ"step time server・・・"が表示されます。
"
[root@TESTSERVER root]# ntpdate -q 123.456.789.098
server 123.456.789.098, stratum 2, offset -0.000586, delay 0.02568
15 Sep 16:59:32 ntpdate[20923]: adjust time server 123.456.789.098 offset -0.000586 sec
[root@TESTSERVER root]# date
Tue Sep 15 16:59:36 JST 2009
[root@TESTSERVER root]# date 09151700
Tue Sep 15 17:00:00 JST 2009
[root@TESTSERVER root]# ntpdate -q 123.456.789.098
server 123.456.789.098, stratum 2, offset -15.117865, delay 0.02570
15 Sep 17:00:04 ntpdate[20926]: step time server 123.456.789.098 offset -15.117865 sec
[root@TESTSERVER root]# ntpdate 123.456.789.098
15 Sep 16:59:55 ntpdate[20927]: step time server 123.456.789.098 offset -15.117872 sec
[root@TESTSERVER root]# ntpdate -q 123.456.789.098
server 203.214.181.109, stratum 2, offset -0.000139, delay 0.02568
15 Sep 17:01:32 ntpdate[20932]: adjust time server 123.456.789.098 offset -0.000139 sec
[root@TESTSERVER root]# ntpdate 123.456.789.098
15 Sep 17:01:32 ntpdate[20932]: adjust time server 123.456.789.098 offset -0.000139 sec
"
上記のように、-qオプションをつけたときにもstepかadjustかを確認することが出来ます。
勉強になりました。
RHEL3/4で確認(ソースはRHEL5の物)
本番サーバーでの作業は作業手順書を書いて、オペレーターに引き継いで行わなければならないので、時刻調整の所で下記メッセージを確認するように手順を書いた。
"
DD MMM hh:mm:ss ntpdate[xxxxx]: step time server 123.456.789.098 offset -xx.xxxxxx sec
"
実際に作業をお願いしたらntpdateコマンドを実行したところで問い合わせの電話が鳴った。
"
DD MMM hh:mm:ss ntpdate[xxxxx]: step time server 123.456.789.098 offset -xx.xxxxxx sec
"
ではなく
"
DD MMM hh:mm:ss ntpdate[xxxxx]: adjust time server 123.456.789.098 offset -xx.xxxxxx sec
"
だけれども正常に作業が出来ているのか?と。
"step"か"adjust"かの違いなので大丈夫ですと答えた後にソースを調べてみた。
すると、調整した秒数が0.5秒以上か未満かで出力メッセージが変わることがわかりました。
ntpdate.h(64)
#define NTPDATE_THRESHOLD (FP_SECOND >> 1) /* 1/2 second */
ntpdate.c(1295)
if (always_step) {
dostep = 1;
} else if (never_step) {
dostep = 0;
} else {
absoffset = server->soffset;
if (absoffset < 0)
absoffset = -absoffset;
dostep = (absoffset >= NTPDATE_THRESHOLD || absoffset < 0);
}
if (dostep) {
if (simple_query || l_step_systime(&server->offset)) {
msyslog(LOG_NOTICE, "step time server %s offset %s sec",
stoa(&server->srcadr),
lfptoa(&server->offset, 6));
}
} else {
#if !defined SYS_WINNT && !defined SYS_CYGWIN32
if (simple_query || l_adj_systime(&server->offset)) {
msyslog(LOG_NOTICE, "adjust time server %s offset %s sec",
stoa(&server->srcadr),
lfptoa(&server->offset, 6));
}
調整幅が0.5秒未満の場合にはメッセージ"adjust time server・・・"が、0.5秒以上の場合にはメッセージ"step time server・・・"が表示されます。
"
[root@TESTSERVER root]# ntpdate -q 123.456.789.098
server 123.456.789.098, stratum 2, offset -0.000586, delay 0.02568
15 Sep 16:59:32 ntpdate[20923]: adjust time server 123.456.789.098 offset -0.000586 sec
[root@TESTSERVER root]# date
Tue Sep 15 16:59:36 JST 2009
[root@TESTSERVER root]# date 09151700
Tue Sep 15 17:00:00 JST 2009
[root@TESTSERVER root]# ntpdate -q 123.456.789.098
server 123.456.789.098, stratum 2, offset -15.117865, delay 0.02570
15 Sep 17:00:04 ntpdate[20926]: step time server 123.456.789.098 offset -15.117865 sec
[root@TESTSERVER root]# ntpdate 123.456.789.098
15 Sep 16:59:55 ntpdate[20927]: step time server 123.456.789.098 offset -15.117872 sec
[root@TESTSERVER root]# ntpdate -q 123.456.789.098
server 203.214.181.109, stratum 2, offset -0.000139, delay 0.02568
15 Sep 17:01:32 ntpdate[20932]: adjust time server 123.456.789.098 offset -0.000139 sec
[root@TESTSERVER root]# ntpdate 123.456.789.098
15 Sep 17:01:32 ntpdate[20932]: adjust time server 123.456.789.098 offset -0.000139 sec
"
上記のように、-qオプションをつけたときにもstepかadjustかを確認することが出来ます。
勉強になりました。
RHEL3/4で確認(ソースはRHEL5の物)