Windows Server 2003 時刻同期

好きなモビルスーツ百式F91 です。
どうも久々の更新です。

最近は、Windows Server 2003 でのシステム時刻の問題に取り組んでいます。
サーバを安定稼働されるには、システム時刻が逆進しないことが前提となりますよね?
例えば、システム時刻が逆進した時の影響について、少し考えただけでも次のような影響が考えられます。

 ・ログ等のタイムスタンプが入れ子になり、矛盾が生じたり・・・('A`)
 ・スケジューリングされたジョブが重複して動いてしまったり・・・('A`)
 ・ミドルウェア等で使用しているDBに矛盾が生じ、業務に影響も・・・('A`)

等々、他にも実際にシステム時刻が逆進してことに発生する影響は数多くあるでしょう。
そのため、サーバ構築者はシステム時刻が逆進しないよう、予めNTP等で時刻同期をするように構築します。

Windows Server 2003 の W32time によるNTP時刻同期の仕様としては以下。

 1)OS起動時
    BIOS時刻から、システム時刻へ時刻同期。

 2)OS稼働中
    NTP時刻から、システム時刻へゆるやかに時刻同期。(*1)

 3)OSシャットダウン時
    システム時刻のみで、時刻同期せず。

 4)OS停止中
    BIOS時刻のみで、時刻同期せず。


 (*1)ドメイン環境下であれば、時刻差が300秒未満であれば時刻が逆進しないようゆるやかに同期。でなければ即時に同期。

上記より Windows Server 2003BIOS時刻については、外部と時刻同期しないスタンドアロンな時刻であることを意味しています。

つまり、いくらNTPで時刻同期したとしても、BIOS時刻がNTP時刻と300秒以上ずれていると、システム時刻が逆進してしまう可能性があるのだ。 キリッ

この影響を未然に回避するには、定期的に以下のコマンドを実行することで、システム時刻からBIOS時刻へ時刻同期することができるので Windows Server 2003 を使っている人はシャットダウンスクリプトに組み込む等、考えてみるのもいいかもしれませんね。

time %time%

最近無性に砂漠に行きたい ('A`)・・・