検索
連載

第3回 w32tmコマンドとレジストリによるWindows Timeサービスの制御Windowsネットワーク時刻同期の基礎とノウハウ(改訂版)(3/4 ページ)

Windows OSでの時刻同期処理は、すべてWindows Timeサービスで行われている。これを制御するw32tmコマンドとレジストリ設定を詳しく解説する。

PC用表示 関連情報
Share
Tweet
LINE
Hatena

●w32tmの/resyncオプション

w32tm /resync [/rediscover|/nowait|/soft] [/computer:<コンピュータ名>]



 w32tm /resyncオプションは、任意のタイミングで時刻同期を行うためのものである。基本的にはほかのオプションを必要とせず、そのまま実行すれば時刻同期が行える。

w32tm /resync



w32tm /resyncの実行例
w32tm /resyncの実行例

 なお、参照先NTPサーバから取得した時刻サンプルが古いなどの理由で信頼性がない場合、同期に失敗することがある。このようなときは、参照先NTPサーバの時刻サンプルをリセットして再同期するために/rediscoverオプションを追加で指定する。

w32tm /resync /rediscover



w32tm /resync /rediscoverの実行例
w32tm /resync /rediscoverの実行例

 また/computerオプションを使ってほかのWindowsコンピュータにネットワーク接続し、時刻同期を行わせることもできる。

w32tm /resync /computer:dc01



w32tm /resync /computerの実行例
w32tm /resync /computerの実行例

 上記以外にも、非同期でコマンドを実行する/nowaitオプション、以前の参照先NTPサーバをリセットせずにそのまま使って実行する/softオプションがあるが、いずれもあまり利用されないオプションである。

●w32tmの/configオプション

w32tm /config [/update] [/manualpeerlist:<NTPサーバ名>] [/syncfromflags:<同期のタイプ>] [/localclokdispersion:<秒>] [/releable:<YES|NO>] [/largephaseoffset:<ミリ秒>]



 w32tm /configオプションは、Windows Timeサービスの設定を変更するためのものである。関連するレジストリ値を変更するため、このコマンドを実行した後は、Windows Timeサービスの再起動が必要である。/updateオプションを追加する事で、Windows Timeサービスを再起動しなくても、レジストリ値が反映されるが、/queryオプションで反映された動作にならないことがあるので、/updateオプションの有無にかかわらず、再起動をした方がいいだろう。

 /manualpeerlistオプションは「(NTPピアとなる)参照先NTPサーバのリスト」を、/syncfromflagsオプションでは「同期のタイプ(通常のNTP階層かドメイン環境での階層か)」を、/localclockdispersionオプションは「ローカル・クロックの分散の値」を、/reliableオプションは「権限のある時刻サーバがどうか」をそれぞれ指定する。詳細については、前回の記事を参照していただきたい。

w32tm /config /update /manualpeerlist:ntp.nict.jp /syncfromflags:manual /localclockdispersion:0 /reliable:YES /largephaseoffset:5000



w32tm /config /update /manualpeerlistの実行例
w32tm /config /update /manualpeerlistの実行例

 前回の記事で取り上げなかった/largephaseoffsetオプションだが、これはNTPクライアントとNTPサーバ間の時刻差が「十分に縮まらない」ことで信頼できない状態を検出するためのものである。

 通常NTPサーバから時刻同期を行えば以後の時刻は一致するはずだが、NTPサーバが連続的な時刻ずれを起こしている場合や、複数のNTPサーバが異なる時刻を持っているような場合、NTPクライアントは安定した時刻同期を得られない。

 これを検出するため、一定の間隔(SpikeWatchPeriodレジストリ値で設定)でNTPサーバの時刻サンプルとローカル・クロックの時刻差を確認し、largephaseoffsetの値より縮まっていなければ、Windows Timeサービスは信頼できない時刻同期の状態として認識する。この値については原則的に変更する必要はなく、障害が起こっているときだけ(イベント・ログに記録される)、調整を行うべきである。

●w32tmの/stripchartオプション

w32tm /stripchart /computer:<NTPサーバ名> [/period:<秒>] [/dataonly] [/samples:<サンプル数>] [/packetinfo] [/ipprotocol:<4|6>]



 w32tm /stripchartオプションは、指定したNTPサーバ間との時刻差を、数字やキャラクタ絵図で表示する、というユニークなものである。基本的には次のように、/computerオプションを指定するだけで、時刻差を数値データやキャラクタ絵図で表示する(「*」文字の位置で確認できる)。なお、Windows Timeサービスに設定された参照先NTPサーバの情報とは無関係に、任意のNTPサーバを設定できる。

w32tm /stripchart /computer:ntp.nict.jp



w32tm /stripchart /computerの実行例
w32tm /stripchart /computerの実行例
時刻のずれがチャートで表示される。

 /periodオプションで表示の間隔を変更したり(デフォルトは2秒ごと)、/samplesオプションで取得するデータ数を制限(デフォルトは制限なし)できる。/dataonlyオプションでキャラクタ絵図を非表示に設定することも可能だ。

w32tm /stripchart /computer:ntp.nict.jp /period:1 /dataonly /samples:10



w32tm /stripchart /dataonlyの実行例
w32tm /stripchart /dataonlyの実行例

 Windows Vista/Server 2008で追加された機能として、/packetinfoオプションがある。これは(NTPクエリの結果)受け取ったNTPパケットの情報を直接表示するので、NTP同期のデバッグなどで役に立つ。

w32tm /stripchart /computer:ntp.nict.jp /dataonly /packetinfo



w32tm /stripchart /packetinfoの実行例
w32tm /stripchart /packetinfoの実行例
パケットを受信するたびにその内容が表示される。

 なお上記以外に、同期を行うIPプロトコル(IPv4かIPv6か)を指定する/ipprotocolオプションが存在する。

●w32tmの/debugオプション

w32tm /debug {{/enable /file:<デバッグ・ログのパス> /size:<ログのバイト数> /entries:ログのエントリ [/truncate]}|/disable}



 Windows timeサービスの時刻同期で問題が起こった場合、詳細な調査が必要なケースではw32timeデバッグ・ログを有効にして、Windows timeサービスの動作をデバッグする。いままでは関連するレジストリ値をレジストリ・エディタから設定していたが、/debugオプションを使うことで、w32timeデバッグ・ログを簡単に設定できる。

 /enableオプションと、サブオプションである/fileオプション(ログ・ファイルのフルパス)、/sizeオプション(ログ・ファイルのサイズ)、/entriesオプション(ログの取得エントリ)を指定することで、w32timeデバッグ・ログを自動的に動作させることができる。このオプションを実行したあと、Windows Timeサービスを再起動させる必要はない。

w32tm /debug /enable /file:C:\Windows\Temp\w32time.log /size:1000000 /entries:0-300



w32tm /debug /enableの実行例
w32tm /debug /enableの実行例

 w32timeデバッグ・ログの動作を停止させたい、と思った場合、/disableオプションを指定して実行するだけで、デバッグ・ログへの書き込みは停止する。

w32tm /debug /disable



w32tm /debug /disableの実行例
w32tm /debug /disableの実行例

 なお/disableオプションを実行した場合、デバッグ・ログは削除されることはなく、次回/enableオプションで再設定した際も、以前の内容は残ったまま追記される。ただし/enableオプション実行時に/truncateオプションを追加することで、以前のデバッグ・ログの内容をクリアできる。

Copyright© Digital Advantage Corp. All Rights Reserved.

ページトップに戻る