はじめに
Azure(Hyper-V) Virtual Machine上のWindowsは、デフォルトだと仮想マシン統合サービスによって、ホストの時刻と同期が取れています。
これだと、Azure上でActive Directoryのドメインコントローラ(DC)を設定する際などに差し支えがあるので、ホストの時計を参照せずに、外部のNTPサーバーと同期させる方法です。
手順
- 外部のNTPサーバーを設定する
- 仮想マシン統合サービスの時刻同期を止める
- NTP同期を開始
1. 外部のNTPサーバーを設定する
w32tm /config /update /manualpeerlist:"ntp.nict.jp,0x8 jp.pool.ntp.org,0x8" /syncfromflags:MANUAL /reliable:YES
- 参照するNTPサーバーは状況や時代によって変わりますので適宜ご確認ください。
- 0x8とかの意味はこちらを参照: Active Directoryおよびワークグループ環境での時刻同期
2. 仮想マシン統合サービスの時刻同期を止める
reg add HKLM\SYSTEM\CurrentControlSet\Services\W32Time\TimeProviders\VMICTimeProvider /v Enabled /t reg_dword /d 0
デフォルトの値は1(有効)です。これを0(無効)に設定すると、ゲストOS側からHyper-V統合サービスの時刻同期を無効にできます。
regedit等でも設定できます。
- キー: HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\W32Time\TimeProviders\VMICTimeProvider
- 名前: Enabled
- 種類: REG_DWORD
- データ: 0
3. NTP同期を開始
# w32tmを再起動
net stop w32time
net start w32time
# NTP同期を開始
w32tm /resync /force
関連するイベントログ
ソース: Time-Service
イベントID: 12
タイム プロバイダー NtpClient: このコンピューターは、ドメイン階層を使ってタイムソースを決定するように構成されていますが、フォレストのルートにあるドメイン用の AD PDC エミュレーターであるため、ドメイン階層のその上にはタイム ソースとして使用するコンピューターがありません。ルート ドメインの信頼できるタイム サービスを構成するか、または手動で AD PDC を構成して外部のタイム ソースと同期させることをお勧めします。そうでない場合、このコンピューターはドメイン階層内の権限のあるタイム ソースとして機能します。外部のタイム ソースが構成できない場合、またこのコンピューターで使用できない場合は、NtpClient を無効にすることをお勧めします。