ex B

ある意味新しい手法を用いた、はじめ男爵である(キリッ

サーバ管理 - 時刻と時間

時間と時刻は違うのだよ、ワトソン君。いや相対性理論とかのことじゃない。

時刻と時間───

時間を考える場合、仕事をしたりするときの基準にしている生活時間(「今何時?」ってやつだ)である時刻と時間経過の計測など(「遅い!15分遅刻だ!」ってほう)に用いる絶対時間の違いを考慮する必要がある。生活時間とは地球の自転を元にした時間の概念。専門用語では世界時(Universal Time)と呼ばれている。生活時間の基本は太陽が観測点に対し真南にくる、いわゆる南中するサイクルでこれを1日としてカウントしている。1938年の段階では季節による南中時刻バラツキを平均化し、1日の1/86400を1秒という天文秒を基準単位としていた。

正確な1日の時間は23時間56分4秒で、これが累積することで閏年が発生するのだが、その話は余談のところで。

地球の自転速度が未来永劫変化無しなら上記の方法でも別に構わないのかもしれないが、潮汐運動により自転の速度はわずか・・・平均して100年に2ms(1msは1/1000秒)ずつ遅くなっている。つまり南中時刻を観測する方法では、自転の遅れにより正確に1秒といった単位時間を求めることが困難って話。そこで1956年に地球の公転周期を元に、春分の日の南中から翌年の春分の日の南中まで(これを回帰年と呼ぶ)の1/31556925.9747を1秒とすることになった。

しかし統計値を取るのに数年、いや数十年がかりになってしまいちょっと実用的でない。そのため1967年に外因の影響を受けない正確な時間系、絶対時間の基準として、セシウム原子が9192631770回振動する時間(周波数)を1秒となり現在に至る(正確な定義は「セシウム133の原子の基底状態の2つの超微細構造準位の間の遷移に対応する放射の周期の9192631770倍の継続時間」だとさ)。このような原子時計によって表される時間標準を周波数標準と呼ぶ。このように時間には「時刻」と「周波数標準」の2つの側面を持つに至った。

7つあるSI単位長さのうち、本項で触れている時間の秒をはじめとして、長さのメートル、電流のアンペア、温度のケルビン、光度のカンデラ、物質量のモルは何らかの外因に影響を受けない普遍的な値が定義されているが、質量のキログラムだけはフランスの国際度量衡局に保管されている国際キログラム原器の質量となっている。理由はいろいろあるのだろうが、端的に言ってしまえば1kgという重さを厳密に普遍的に定義することが難しいのだろう。なお重さだけ“キロ”グラムとなっているのは、原器が軽すぎると誤差を減らすのがこれまた困難なためと思われる。1円玉にほこりひとつついただけで、それをもとに1tを正確に測ろうとすると無視できないズレになってしまう、ということ。

なお周波数標準を取得できる機器が周波数標準器で、一次標準器と二次標準器が存在する。

一次標準機
セシウムの周波数を基準にしたもの。周波数が安定しているため補正が不要。
二次標準器
ルビジウムや水晶の周波数を基準にしたもの。周波数がずれてしまうため補正が必要。

二次標準器は自作できるとかいう記事も見かける。いかん余計なことを考えるな。

様々な時間の標準

以下、時間の標準として利用される様々な基準。

JST(Japan Standard Time、日本標準時)・・・時刻標準
日本の生活時間の基準。時報はこれに基づいている。明石市の東経135度線が基準位置。
UTC(Coordinated Universal Time、協定世界時)・・・時刻標準
世界の生活時間の基準。各ロケーションの標準時(ロケーションは国とか地域ね)はUTCとの差分になるので、日本のJSTの場合UTCに9時間を加えたものになる(+0900(JST)と表記する)。
GMT(Greenwich Mean Time、グリニッジ標準時)・・・時刻標準
かつての世界標準時で天体観測結果より決定される。現在はTAIを元にしたUTCが採用されている。
TAI(International Atomic Time 、国際原子時)・・・周波数標準
世界標準時の基準となる、原子時計により求められる時間。TAIに閏秒を補正することでUTC、つまり時刻の基準としている。
EAL(Free Atomic Time、自由原子時)・・・周波数標準
世界中の原子時計の平均による時間。これに一次標準器と呼ばれる補正をかけることでTAIとなる。

同期の基準は

身の回りに電波時計がけっこう増えた。俺のGショックもそうだし。

コンピュータの時刻調整

では、コンピュータの時間同期を行う場合、何を基準とすべきなのか?恐らくそのコンピュータやシステムを運用する規模や目的に応じて変わるものとなってくるはずだが、大雑把にいえばJST/UTCかTAIのどちらか、つまり時刻に合わせるのか時間に合わせるかという選択である。

自身が何らかの基準となるようなものの場合、TAIと同期を取りつつ時刻用の補正値を加味するのが理想である。補正そのものが正確に行われなければ意味がない。ではUTC/JSTへの同期はどうか?NTPそのものの精度を無視できたとしても、今度は閏秒の調整が一定のタイミングでしか行われないことによるズレが生じる恐れがある。生活時間的にはまず問題なかろうが、通信業界では数msレベルでの正確さが求められることがあるため、運用目的によっては不十分。

閏秒はTAIとUTCのズレが0.8秒を超える場合、グリニッジ標準時の0時に調整を行う。日本の場合午前9時。ちなみにTAIによる周波数標準が確立されてから2003年現在までの累積差分は30秒ほどらしい(出典失念)。

結局1秒以下の正確さを求めるのであれば、JST/UTCによる時刻同期とTAIによる周波数標準との同期、両方を行う必要がある、ということだ。先に時刻標準を取得する方法にNTPがあることを紹介したが、NTPサーバそのものがズレていた場合にはどうしようもない(複数のstratum 1を利用できればベストですが数が少ないので負荷が集中し、レスポンスが悪化しますので利用には制限がかけられています)。実はNTPサーバ以外にも時刻や周波数標準を取得する方法は存在する。以下、JANOGのレポートから。

  • GPS衛星
  • JJY(標準電波*)、(40kHz, 旧JG2AS)
  • テレビの色同期信号(3.579545MHz)
  • NHKの時報(時刻標準のみ)
  • ISDNの網同期信号(NTTで実験中)
  • FM文字放送時刻情報(±18ms)

それぞれ扱っているのが時刻標準だけだったり周波数標準だけだったりという違いがあるが、標準電波は両方に対応し、かつほぼ日本全国をカバーしているためこれを受信するのが最も有効なのではないかと思われる。もちろん、受信器が必要。

*JJYは、無線局のコールサインであり、通信総合研究所の登録商標(10-107454)。

問題は、通常のサーバ運用などでどのくらいの精度が求められるかであるが・・・標準電波受信や二次標準器をご家庭レベルで利用するというのはちょっと想像がつかない。一般的にはメールの送受信におけるタイムスタンプの正確さやログの整合性、信頼性の確保が最もポイントになると考えると、1日の最大のズレがJST/UTCから1秒以内に収めたいもの。同期のサイクルにも依存するが、NTPを利用すればまあ1、2秒以内で済むのではないか。最悪でもメールの送信時間のほうが受信時間より前だったなんてことになるまい。

結論:通常の利用であればNTPで十分。但し同期タイミングには注意すべし。

余談:暦と閏年

生活時間の延長というか象徴が暦だろう。。暦は地球が太陽のまわりを1周する(公転)のを基本単位、1年としている。閏年を補正するのは公転周期の遅れによる差分よりも、自転周期が24時間を欠くことによる差分が原因。そのため公転周期の近似値(有理数近似というらしい)は365.2422日となり、現在の暦の標準であるグレゴリオ暦では、

365.2422日 ≒ 365 + 1/4 - 1/100 + 1/400 = 365.2425日

  • 4年に1回閏年を設けるが100年に1回閏年を省き、なおかつ400年に1回設ける
  • 西暦が4で割り切れる時には閏年<100で割り切れる時は閏年としない<400で割り切れる時は閏年とする

としている(これでも0.003日のズレがは生じる)。ご記憶に新しい、ミレニアムイヤーだった2000年はすべての条件で割り切れるため閏年である。閏年補正をきちんとしているプログラムはよいが、そうでない場合・・・いわゆる西暦2000年問題の餌食になってしまったのかもしれない。

参考資料

EE/CIS のntpd配布ページ
http://www.eecis.udel.edu/~ntp/
IPA ISECのntpdのインストールと設定
http://www.ipa.go.jp/security/awareness/administrator/secure-web/chap4/4_ntpd.html
ここだけでたいていのNTP話は済んでしまうと思います・・・ほかにもセキュリティの話題が豊富です。
インターネットマルチフィード株式会社(MFEED)のExperimental NTP Servers (Public Stratum 2)
Public Stratum 2としてNTPサーバを公開しています。
http://www.jst.mfeed.ad.jp/index.html
Kenji Ito 氏のFreeBSD 4.4 + date,ntpdate,ntpd
http://www.hayagui.com/ntp.html
松阪大学 奥村晴彦教授によるNTPのページ
http://www.matsusaka-u.ac.jp/~okumura/networking/ntp.html
九州工業大学 材料物性学研究室のntpdateコマンドマニュアル和訳
http://opt-1.matsc.kyutech.ac.jp/ntpdate.html
Masaaki Sato氏のサイトのntpのクライアントモード利用
http://masaaki.sato.nakano.tokyo.jp/gps/ntp-linux/ntp-client.html
UNO Shintaro氏のサイト(桜時計作者)
http://www.venus.dti.ne.jp/~uno/
IETFのRFC1305(英語)
NTPはRFC1305で定義されています。
http://www.ietf.org/rfc/rfc1305.txt
IETFのRFC2030(英語)
SNTPはRFC2030で定義されています。
http://www.ietf.org/rfc/rfc2030.txt
独立行政法人 通信総合研究所の日本標準時表示ページ
http://www2.crl.go.jp/cgi-bin/JST.cgi
通産省:工業技術院計量研究所の時間標準のページ
http://www.nrlm.go.jp/standard/time.html
JANOGのネットワーク時刻同期ワーキンググループ(ML)
http://www.janog.gr.jp/wg/timesync-wg.html
中間報告
MLへの参加はJANOGの趣旨をご理解の上、http://www.janog.gr.jp/wg/index.htmlよりどうぞ。
日本臨床工学技士会のコンピュータ西暦2000年問題における閏年問題の可能性
http://www.iijnet.or.jp/JACET/y2k/y2k29.htm
横浜こども科学館の閏秒のページ
http://www.city.yokohama.jp/yhspot/ysc/leapsec.html
  • 初稿:2002-12-31
  • 改訂:2003-05-14
  • 改訂:2007-10-11