• ベストアンサー

上位サーバーを用いない時刻あわせ

複数のサーバーから構成されるネットワークにおいて,1台のサーバー(A)で他のサーバーから参照されるntpdを動かしています. このネットワークはインターネットからは切り離されており,Aが参照することのできるntpサーバーはありません. また,GPS等を用いて,ntp以外の手段で正しい時刻を供給するというオプションも,とりあえず検討の対象外とします. このような条件で,Aが正しい時刻に対し1日あたり約4秒遅れるのをなるべく人手を介さずに,概ね正しい時刻に保つ方法が無いか考えています. Aのntpdで,driftファイルに1日あたり4秒の遅れに対応するようなdrift値を設定すれば良いのではないかと考えてみたのですが,Webを調べてもそのような用い方をしている例はなく,果たしてこのようなことが可能なのか,また,可能だとして,具体的に設定すべき値などがわかりません. 類似の条件での解決事例やアイディアなどありましたら,フォロー頂ければ幸いです.

質問者が選んだベストアンサー

  • ベストアンサー
  • qaaq
  • ベストアンサー率36% (146/404)
回答No.2

driftファイルは、固定した時刻のずれを記すファイルではないですね。 どんな状況でも必ず1日4秒の遅れがあり、マシンAがローカルクロック をntpのリファレンスクロックにしているのなら、 date コマンドの"-v"オプションとその出力をdateの引数にして、 ローカルクロックを強制的に修正すればよさそうです。 このときに、ntpdが動いていると(たぶん)まずいので、 ntpdをkillして、時間をずらして、ntpd再起動する、事になるでしょう 下記の例では、10秒進めて、10秒後に、10秒遅らせています。 # date ; date `date -v +10S "+%H%M.%S"` ; sleep 10 ; date ; date `date -v -10S "+%H%M.%S"` 2007年 5月11日 金曜日 00時03分19秒 JST (始めの時間) 2007年 5月11日 金曜日 00時03分29秒 JST (10秒進めた(+10S)時間) 2007年 5月11日 金曜日 00時03分39秒 JST (10秒sleepした後の時間) 2007年 5月11日 金曜日 00時03分29秒 JST (10秒戻した時間) 誤差を±1秒含みますが、こんなんでどうでしょ。 これを1日1回cronで実行して4秒ずらせば『一応』目的は達成できそうです。 まあ、PCの内部時計は誤差が大きく、高負荷になったり設置場所の温度変化があると、 累積誤差が拡大しやすく、結局週1回程度は『人が直す』ことになると思いますが・・・・。

astronaut
質問者

お礼

だめもとで、テスト環境で、時刻サーバーを参照しないようにした上で、driftファイルに適当な値を設定してみました。 結果としては、ある程度の時間は時刻の修正がなされるようですが、サーバーが利用できない状態が長く続くと、drift値をゼロクリアしてしまうようです。 お二方のアドバイスのとおり、cronによる修正を設定したいと思います。 ありがとうございました。

astronaut
質問者

補足

ありがとうございます。 >driftファイルは、固定した時刻のずれを記すファイルではないですね。 はい、そうなんですよね。 ただ、driftファイルは、上位サーバーが一時的に参照できなくなった場合などに、このファイルの情報を元に、ある程度の時刻補正が保たれるようにするものだと理解していたので、そもそも上位サーバーが設定されていなくても、一応はこのファイルが参照されるのではないかと想像したのです。 #1さんも指摘されたとおり、とりあえずcronで修正するのが良いようですね。検討してみます。 後は、前任が1年以上もほったらかしにしていたので、20分もずれちゃってて、これを修正しなきゃならないのも悩みどころです。 こちらも、cron使って、毎日ちょっとずつ修正するというところでしょうか。

その他の回答 (1)

noname#39970
noname#39970
回答No.1

cronで1日1回 4秒ずらす

関連するQ&A