web-dev-qa-db-ja.com

Hyper-VサーバーでのNTP

Hyper-VホストとクライアントでのNTPセットアップに問題があります。ドメインコントローラーを使用していません(使用していないDCについてはほとんどすべてのアドバイスがあります)。

すべてのサーバーで、Windowsクロックを使用してntpクライアント名を設定しました(右クリック、日付/時刻、インターネット時刻の調整、設定の変更、NTPサーバー名)の入力)。

これはうまくいかなかったようです。むしろ、毎晩から月曜日の01:00に、時刻が強制的に調整されました(データベースのバックアップが壊れているなど、あらゆる種類の問題が発生しました)。

私はw32tmを台無しにしました(ステータス、設定を読み、登録解除と再登録を試みました)。私はついにw32tm/query/configに、ntpサーバーを使用したことを確認させました。

私はw32tm/query/sourceにこれを言わせました:

ローカルCMOS Clock time.windows.com、0x9(実際には別のホストですが、このレポートには関係ありません)フリーランニングシステムクロックVM IC Time同期プロバイダー(Hyper-Vクライアントのみ)

私はついにw32tmレポート「time.windows.com、0x9」を受け取りましたが、後で自動的に「フリーランニングシステムクロック」に変更されました。理由がわかりません。フリーランニングは私が望むものではないと思います。

Hyper-Vホストとクライアントの両方での時間設定に関して完全に迷っていて、本当に助けが必要だと思います。私はいくつかのガイドを見つけましたが、それらは互いに矛盾しています(または単にドメインコントローラーのセットアップについて話します)。

hyper-Vクライアントのw32tmには、構成について次のように書かれています。

C:\Windows\system32>w32tm /query /configuration
[Configuration]

EventLogFlags: 2 (Local)
AnnounceFlags: 10 (Local)
TimeJumpAuditOffset: 28800 (Local)
MinPollInterval: 10 (Local)
MaxPollInterval: 15 (Local)
MaxNegPhaseCorrection: 54000 (Local)
MaxPosPhaseCorrection: 54000 (Local)
MaxAllowedPhaseOffset: 1 (Local)

FrequencyCorrectRate: 4 (Local)
PollAdjustFactor: 5 (Local)
LargePhaseOffset: 50000000 (Local)
SpikeWatchPeriod: 900 (Local)
LocalClockDispersion: 10 (Local)
HoldPeriod: 5 (Local)
PhaseCorrectRate: 1 (Local)
UpdateInterval: 360000 (Local)


[TimeProviders]

NtpClient (Local)
DllName: C:\Windows\system32\w32time.DLL (Local)
Enabled: 1 (Local)
InputProvider: 1 (Local)
AllowNonstandardModeCombinations: 1 (Local)
ResolvePeerBackoffMinutes: 15 (Local)
ResolvePeerBackoffMaxTimes: 7 (Local)
CompatibilityFlags: 2147483648 (Local)
EventLogFlags: 1 (Local)
LargeSampleSkew: 3 (Local)
SpecialPollInterval: 604800 (Local)
Type: NTP (Local)
NtpServer: time.windows.com,0x9 (Local)

VMICTimeProvider (Local)
DllName: C:\Windows\System32\vmictimeprovider.dll (Local)
Enabled: 1 (Local)
InputProvider: 1 (Local)
NtpServer (Local)
DllName: C:\Windows\system32\w32time.DLL (Local)
Enabled: 0 (Local)
InputProvider: 0 (Local)

上記の構成は、控えめに言っても奇妙だと思う「フリーランニングシステムクロック」になります。

WindowsTimeとHyper-V時刻同期サービスの両方が実行されています。

有効なタイムサービスを対象としたグループポリシーはありません。

この問題を解決する方法についての提案はありますか?

1
galmok

これは私がやったことであり、私が想定していることは健全です:

Hyper-Vホスト(物理サーバー)は、選択したタイムサーバーと同期するように設定され、各Hyper-Vゲストはホストのみと同期するように設定されます。以下の変更はデフォルトとの違いです。

ホストの設定

まず、次の方法でタイムサービスを停止します。

net stop w32time

レジストリの変更(ベースHKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\services\):

  • w32time\Config\AnnounceFlags = 10
  • w32time\Parameters\NtpServers = 0.dk.pool.ntp.org,0x1 1.dk.pool.ntp.org,0x1 2.dk.pool.ntp.org,0x1 3.dk.pool.ntp.org,0x1
  • w32time\TimeProviders\NtpClient\SpecialPollInterval = 900 (15分)
  • w32time\TimeProviders\NtpServer\Enabled = 1

AnnounceFlags = 5を使用するものもありますが、ドメインコントローラー(この場合はセットアップされていません)との相関により、ntpサーバーはそれ自体をアナウンスしません(観測;事実ではありません)。したがって、AnnounceFlagsは10に設定されます (AnnounceFlagsの詳細)

ntpserversの0x1 =(標準のntpポーリング間隔の代わりに)特別なポーリング間隔を使用します。 (0x1、0x2、0x4、0x8の詳細) 。 SpecialPollIntervalの使用は必須ではありませんが、推奨されているようです(おそらく、ほとんどの場合ゲスト向けであり、ホスト向けではありません)。 SpecialPollIntervalを使用しないことにした場合は、代わりにMinPollIntervalとMaxPollIntervalを制限する必要があります。デフォルトは10(1024秒)と15(32768秒)です。代わりに6(64秒)と10(1024秒))をお勧めします。

サーバーにネットワーク接続があるときにタイムサービスが開始されていることを確認します。

sc triggerinfo w32time start/networkon stop/networkoff

デフォルトでは、ドメインコントローラー(このセットアップには存在しません)でタイムサービスを開始(および停止)します。この手順を忘れると、起動のたびにタイムサーバーが停止します(自動的に起動された直後)。この問題は追跡が困難でした。

そして、サービスを再開します。

net start w32time

これで、ホストは15分ごとにntpタイムサーバーの1つをポーリングし、他のクライアントのntpサーバーになることを提案します。ゲストのみが許可されるように、udp:123をファイアウォールで保護しました。

サーバーは、信頼できるタイムサーバーとしての機能を世界(ゲスト)に発表するまで、最大15分(SpecialPollInterval)かかる場合があります。これは、ゲストがサービスの開始後15〜20分間フリーランニングできることを意味します。

ゲストのセットアップ

ゲストは(互いに比較して)ホストよりも(はるかに)ドリフトし、比較的短いポーリング間隔を必要とします。このため、リモートntpサーバーの使用は理想的ではなく、信頼性の高いntpサーバーが手元にあるため(構成したばかり)、これを使用します(これのみ)。ゲストは全員、仮想ネットワークを使用してホストにアクセスできます。

Hyper-V時間統合サービスがインストールされ、実行されていることを確認します。この設定では、仮想サーバーの起動時だけでなく、保存からの再開時にも使用されます。タイムソースとしては使用されません。

次の方法でタイムサービスを停止します。

net stop w32time

必要なレジストリの変更を行います(base HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\services\):

  • w32time\Config\AnnounceFlags = 10
  • w32time\Parameters\NtpServers = 192.168.0.100,0x9
  • w32time\TimeProviders\NtpClient\SpecialPollInterval = 300 (5分)
  • w32time\TimeProviders\NtpServer\Enabled = 0
  • w32time\TimeProviders\VMICTimeProvider\Enabled = 0

サーバーにネットワーク接続があるときにタイムサービスが開始されていることを確認します。

sc triggerinfo w32time start/networkon stop/networkoff

そして、サービスを再開します。

net start w32time

結論

この設定では、ホストとゲストの両方で時間を適切に制御する必要があります。

3
galmok

Hyper-Vゲストには2つのオプションがあります。時刻同期を有効にしてホストに同期する(NTPサーバーに同期できます)か、各ゲストをNTPに直接)します。

ホストと同期するには、Hyper-Vマネージャーに移動し、[統合サービス]で、[時刻の同期]がオンになっていることを確認します。ゲスト統合サービスがインストールされていることを確認し(おそらくこの時点でそれらを削除して再インストールします)、 w32timeをリセット

マイクロソフトは時刻同期をオフにすることをお勧めしませんが、問題が発生する可能性があるため、試してみます。 Hyper-Vマネージャーに移動し、時刻同期をオフにします。次に、スタンドアロンの物理ホストと同じようにw32timeを構成します。繰り返しになりますが、結局のところ、最初にw32timeをリセットするのがおそらく最善です。

Microsoftのブログ は、Hyper-Vで時間同期がどのように機能するかについてかなり適切に説明しています。まだ読んでいない場合は、読んでみます

0
Grant