timed —
タイムサーバデーモン
timed
[
-M]
[
-t]
[
-d]
[
-i
network]
[
-n
network]
[
-F
host1 host2 ...]
これはタイムサーバデーモンであり、
通常はブート時に
rc(8)
ファイルから起動される。
このサーバは、ホストの時刻と、
ローカルエリアネットワーク内で
timed 8
を実行している他のホストの時刻を同期させる。
これらのタイムサーバは、マシンの時刻を遅らせたり進ませたりすることで、
マシンの時刻を平均ネットワーク時刻にする。
平均ネットワーク時刻は、
ICMP
タイムスタンプリクエストメッセージを使って、
時刻差を計測することにより計算される。
timed
が提供するサービスは、マスタースレーブの考えに基づいている。
がマシンで起動されると、マスターにネットワーク時刻を問い合わせ、
ホストの時刻をその時刻に合わせる。
その後、マスターが定期的に送る同期メッセージを受け取り、
ホスト時刻に必要な修正を加えるために
adjtime(2)
を呼び出す。
このサーバは、
日付を大域的に設定するために
date(1) と通信し、
timed
制御プログラムである
timedc(8)
とも通信する。
マスターとして実行されているマシンがクラッシュすると、
スレーブは、
-M
フラグで実行されているスレーブの中から、新しいマスターを選ぶ。
-M や
-F
フラグなしで実行されている
timed
を実行しているマシンはスレーブのままである。
-t
フラグを指定した場合、
timed
は、受信したメッセージをファイル
/var/log/timed.log
の中でトレースするようになる。
トレースの有効・無効は、
timedc(8)
プログラムを使って切替えることができる。
-d
フラグは、このデーモンをデバッグするためのものである。
このフラグを指定した場合、デーモンをバックグラウンドにさせない。
通常
timed
は、接続されている各ネットワークのマスタータイムサーバをチェックする。
ただし、以下で説明するオプションで変更されている場合は例外である。
timed
は、見付けた最初のマスターサーバに対して、同期サービスを要求する。
その時点でマスターサーバが接続されているネットワークで検知できない場合、
-M
フラグを指定すると、
同期サービスをそのネットワークに提供することが許可される。
このようなサーバは、トップレベルマスターが計算した時間を提供する。
-n
フラグは、その後にホストが接続されているネットワーク名
(
networks(5) を参照)
を続けることにより、
プログラムが決定するネットワークアドレスのデフォルトの選択を上書きする。
-n
フラグが表れる度に、そこで指定されているネットワーク名は、
有効なネットワークのリストに追加される。
他のネットワークは無視される。
-i
フラグは、その後にホストが接続されているネットワーク名
(
networks(5) を参照)
を続けることにより、
プログラムが決定するネットワークアドレスのデフォルトの選択を上書きする。
-i
フラグが表れる度に、そこで指定されているネットワーク名は、
無視するネットワークのリストに追加される。
他のネットワークはタイムデーモンによって使われる。
-n と
-i
フラグを同時に使うと、何も意味を持たなくなる。
timed
は、接続されている各ネットワーク上のマスタータイムサーバをチェックする。
ただし、上で説明した
-n と
-i
オプションで変更されている場合は例外である。
2
つ以上のネットワークでマスターサーバが見つかった場合、
「スレーブ」となるべきネットワークを選択する。
そして、定期的に各ネットワークでマスターが消えたかどうかをチェックする。
マシンの同期をとるための
1 つの方法として、 NTP
デーモンを用いてマシンの時刻を
遠距離の標準時刻やラジオ受信機の時刻に同期させ、
かつ、信頼できるマシンが自分自身のみであることを
timed デーモンに
-F
hostname
によって通知する、といったものがある。
カーネルによるシステムコンソールへのメッセージ出力は、
割り込みを禁止して行われる。
これは、メッセージが出力されている間は
システムのクロックが停止することを意味する。
ディスクやネットワークハードウェアに多くの問題を抱え、
その結果としてメッセージを出力するマシンは、
正確な時間を保持できない。
それぞれのメッセージは、出力される毎に
10ms
程度の時刻遅延を引き起こす。
タイムデーモンは、この結果を補正する。
マシンが応答しないというシステムログメッセージは、
通常、そのクラッシュまたは電源が切れていることを意味する。
マシンが初期時刻設定時に応答に失敗してエラーが出るのは、
大抵の場合、「
“マルチホーム”
のマシン
(ネットワークインターフェースが複数あるマシン)
が
複数のネットワークでタイムマスターを探した後、
別のネットワークでスレーブになることを選択した」ということに関連している。
timed や
ntp
といった複数のタイムデーモンが同じ時計を調整しようとした場合、
一時的に時刻がおかしくなる可能性がある。
timed
と別のタイムデーモンが同じマシンで稼働している場合、
-F
フラグが指定されていることを確認すること。
このようにすれば、
timed
はローカルマシンの時計を調整しようとしなくなる。
このプロトコルは、UDP/IP
ブロードキャストに基づいたものである。
ブロードキャストの範囲内で
TSP
プロトコルを用いている
全てのマシンは、協調しあわなければならない。
ブロードキャストパケットが到達するマシンの間では、
-F
フラグを使用する管理ドメインを
2
つ以上持つことはできない。
このルールに従わない場合は、通常、
“信頼できない”
マシンに関連するエラーがシステムログに書き込まれる。
- /var/log/timed.log
- timed
のトレースファイル
- /var/log/timed.masterlog
- マスター timed
のログファイル
date(1),
adjtime(2),
gettimeofday(2),
icmp(4),
timedc(8)
R. Gusella and
S. Zatti, TSP: The Time
Synchronization Protocol for UNIX 4.3BSD.
timed デーモンは
4.3BSD
で登場した。
この man
ページの翻訳にあたり、
FreeBSD jpman project <
http://www.jp.freebsd.org/man-jp/>
による翻訳を参考にさせていただいた。