Windowsの時刻同期 †
- Windowsの時刻同期は、ワークグループ環境の場合、「604,800秒(=7日)」ごとにtime.windows.comというNTPサーバに同期を行うよう設定されている。
- おそらくは「必要以上にネットワークを利用しない」と「ある程度正確な時刻に合わせる」を両立しようとした実装であると思われ、NTPクライアントとしての実用上に大きな問題はない。
W32Time †
動作モード †
- 0x8 ... RFC 1305に準拠した時刻同期
- 最小16(2の4乗)秒から16→32→64→128→256→512→1024→...→32768秒まで(2の15乗)のように暫時変わっていく
- 0x9 ... 一定間隔での時刻同期 (default)
サマータイム †
動作確認 †
NTPサーバ化 †
桜時計 †
トラブルシューティング †
イベントID †
- 35 ...(受け取った)時刻サンプルを使って実際にシステム時刻を変更した
- 37 ... 参照先NTPサーバから時刻情報(時刻サンプル)を受け取った
- 12 ... PDCエミュレータ役割のドメイン・コントローラが外部から時刻同期を行うよう設定されていない
- 36 ... 長時間時刻同期を行うことができずに時刻が不正確な状態になっている
- RFC 1305では、有効(正確)な状態の時刻サンプルは「86,400秒(=1日)」の間に同期を行っていなければならず、それを超えた場合長時間同期を行っていないものとして、不正確なサンプルとみなされる
- 47 ... NTP問い合わせに対する応答がなかった
- 50 ... 一定間隔(900秒)の間にNTPサーバとの時刻ずれが縮まらない
- 134 ... DNS名前解決が原因でアクセス先が指定できない
- 158 ... 【無視して良い】
- タイム プロバイダー 'VMICTimeProvider?' は、現在のハードウェアおよび操作環境がサポートされないことを示して停止しました。非 HyperV ゲスト環境の VMICTimeProvider? では、これは予期された動作です。現在のプロバイダーにとっても、これが現在の操作環境での予期された動作である場合があります。
イベントログ調査 †
- 現在のログをフィルターで、イベントID「12,35,36,37,47,50,134」でフィルタをかける
注意点 †
- イベントID 37が記録されただけでは「時刻同期が行われた」ということにならない点に注意
- イベントID 37が記録されているのに、イベントID 35が記録されていない場合、受け取った時刻サンプルが有効でない、といった理由でWindows Timeサービスが同期を行わなかったことが考えられる
- 同期に失敗した場合はID 35とは異なるIDのイベントが記録されるため、実際にはこのイベントの内容で判断することになる
w32timeデバッグ・ログ †
- w32timeデバッグ・ログはデフォルトでは設定されておらず、「w32tm /debug」オプションか、「HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet?\services\W32Time\Config\FileLogName?」レジストリ値などで設定できる。
1時間ずれる †
タイムゾーンや夏時間の扱い †
- RTCにはタイムゾーンや夏時間を扱う仕組みは「一般には」ないので、OS側でタイムゾーンや夏時間を管理することになる
- 実はRTCに夏時間を扱う仕組みがあって誤発動するケースがあるという...
- MacやLinuxでは、RTCにはUTC(協定世界時)を設定しておき、OS側でタイムゾーンや夏時間の時差を足し引きしてローカルタイムを表示する
- Windowsでは、タイムゾーンを変更したり夏時間をまたいだ時に、RTCにローカルタイムを設定しなおすという方法を取っている
RTC の Daylight Savings Enable (DSE) †
- DSEの設定値はOS上の夏時間の設定とは無関係
- 現代のパソコンではDSEは無効になっているのが正しい
原因 †
- (A)NTPサーバーからずれた時刻を取得したため
- (B)そのパソコンのDSEが有効になっているため