Hyper-V 仮想マシンのパフォーマンスをトラブルシューティング

概要

Hyper-V は、Windows Server 環境での仮想化のコア コンポーネントです。 これにより、単一またはクラスター化されたホスト インフラストラクチャ上の複数の仮想マシン (VM) の管理が可能になります。 ただし、管理者は、さまざまな VM の起動エラーや、ビジネス操作を妨げる可能性のあるパフォーマンスの問題に頻繁に遭遇します。 このような問題は、ハードウェアの制限、構成の変更、更新プログラム、ネットワーク、ストレージ、ソフトウェアまたはファイル システムの破損によって発生する可能性があります。 ダウンタイムを最小限に抑え、データの整合性を維持するには、迅速かつ包括的なトラブルシューティングが不可欠です。 この記事は、管理者が Hyper-V VM の問題を解決し、一般的な障害モードとその解決策に対処し、データ収集と原因分析のベスト プラクティスを提供できるように設計されています。

トラブルシューティング チェックリスト

体系的なトラブルシューティングには、次のチェックリストを使用します。

  • エラー メッセージとイベント ログを確認する
    • 正確な文言、イベント ID、タイミングに注意してください。
  • 使用可能なホスト リソースを評価する
    • CPU、メモリ、ストレージ、およびネットワークの可用性。
  • 最近変更された内容を確認する
    • 更新、構成、ハードウェア、またはファームウェアの変更。
  • VM とホストの構成を確認する
    • 起動 RAM、CPU 数、ディスク、ネットワーク設定。
  • ストレージ接続と可用性を確認する
    • ディスクの正常性、クラスターの状態、ネットワーク ストレージ パス。
  • VM ログインとドメイン信頼をテストする
    • ドメイン接続システムの場合は、信頼が壊れていないことを確認します。
  • フェールオーバー クラスタリングとクォーラムを確認します。
    • ノードの状態、クラスター ログ、およびネットワーク構成。
  • ウイルス対策とセキュリティの干渉を確認する
    • 最近の AV/EDR の変更またはスキャン活動。
  • レジストリとファイルとフォルダーのアクセス許可を確認する
    • 特に、Hyper-V プロセス関連のサブキーとフォルダーを確認します。
  • 既知のバグまたは修正プログラムを確認する
    • Microsoft のドキュメントと最近のリリース ノートを確認します。

一般的な問題と解決策

次のセクションでは、最も一般的な障害モードについて詳しく説明し、詳細な解決策を提供します。

VM が起動せず、メモリとリソースが不足している

症状

  • エラー: "メモリの初期化に失敗しました: メモリ不足 (0x8007000E)。"
  • エラー: "メモリ不足のため、仮想マシンの起動に失敗しました。"
  • 更新または再起動後、ホストまたは VM が応答しなくなります。

解決策

  1. Hyper-V Manager またはタスク マネージャーでホスト メモリの使用量を確認します。
  2. VM のスタートアップ メモリ値 (Hyper-V Manager>VM>Settings>Memory) を減らします。
  3. ホスト上の物理 RAM を増やします。
  4. 動的メモリを使用する場合は、割り当て超過を避けるために適切な最小値と最大値を設定します。
  5. VM を再起動します。

VM が失敗し、"データが無効です" (0x8007000D) または証明書またはレジストリエラーが返される

症状

  • エラー: "データが無効です。 (0x8007000D)"
  • イベント ログ: レジストリ キーにアクセスするときにアクセスが拒否されました。
  • VM は最近の更新後に起動しません (たとえば、KB5051979)。

解決策

  1. ProcMon を使用して、vmwp.exeの ACCESS DENIED レジストリ イベントを識別します。
  2. 関連するキーに対する正しいアクセス許可 (HKU など)。DEFAULT\Software\Policies[Vendor]\SystemCertificates\CA): - regedit を管理者として開きます。
    • [アクセス許可] > 右クリック > 、必要なユーザーとグループを追加または調整します。
  3. Sysinternals sigcheck を使用して、キー DLL のデジタル署名を検証して修復します。
  4. 必要なウイルス対策/EDR 除外が Hyper-V ディレクトリで使用できることを確認します。
  5. ディスクとネットワーク アダプターの構成を確認します。必要に応じて、削除して再追加します。
  6. ホストを再起動し、VM の起動をテストします。

アップグレード後の CPU とメモリの削減を示す VM

症状

  • デバイス マネージャーには CPU が表示されますが、タスク マネージャー/MSinfo の表示は割り当て済みよりも少なくなります。
  • VMまたはHyper-Vホストを更新した後のパフォーマンスの大幅な低下
  • 古い OS バージョンからアップグレードされた VM にのみ影響します。

解決策

  1. BCD から numproc 値を削除します。

    bcdedit /deletevalue {default} numproc
    
  2. 投機的実行の修正のためのレジストリ サブキーを設定します。

    reg add "HKLM\SYSTEM\CurrentControlSet\Control\Session Manager\Memory Management" /v FeatureSettingsOverride /t REG_DWORD /d 72 /f
    reg add "HKLM\SYSTEM\CurrentControlSet\Control\Session Manager\Memory Management" /v FeatureSettingsOverrideMask /t REG_DWORD /d 3 /f
    
  3. VM をリアートします。

  4. タスク マネージャーと PowerShell を使用して CPU とメモリの認識を確認します。

ディスクまたはファイル システムの破損、ディスクの起動、削除、接続ができない

症状

  • エラー: "エラーのため開けませんでした。 ファイルまたはディレクトリが破損しており、読み取りできません。"
  • エラー: ファイルを削除するときに0x80070570。
  • イベント ID: ディスク障害またはリセットの場合は 8、153、129。

解決策

  1. ファイル システムの修復を試す:

    chkdsk [drive]: /f
    
  2. 可能であれば、修復する前にすべての重要なデータをバックアップしてください。

  3. VM 構成/VHD の破損の場合:

    • 新しい VM を作成し、既存の (修復された) VHD/VHDX をアタッチします。
    • 必要に応じて回復メディアから起動し、Windows を修復します (sfc /scannow、startrec /fixstart を使用)。
  4. 古いストレージまたはネットワーク ドライバーとファームウェアを更新します。

  5. クラスター クォーラムとストレージ パスを確認します。

クラスターと CSV の問題: 一時停止状態、再起動、予期しないフェールオーバー

症状

  • イベント ID 5120 (クラスター共有ボリュームの一時停止状態)
  • イベント ID 1135 (クラスターからのノードの削除)
  • リソースエラー、ハートビートの不足のクラスター ログ
  • VM が予期せず再起動またはフェールオーバーする

解決策

  1. すべてのクラスター ノード上のすべての記憶域およびネットワーク アダプター ドライバーとファームウェアを更新します。

  2. 必要に応じて、クラスター クォーラム設定を確認して調整します。

  3. Microsoft のガイダンスに従って、サードパーティのウイルス対策/EDR を削除するか、クラスター、Hyper-V、ストレージ ディレクトリを除外します。

  4. 最近のハードウェアとネットワークの変更 (スイッチ モジュール、ケーブル、ファイアウォール) を調査します。

  5. クラスター ノード間で VM ワークロードを再調整します。

  6. 次のコマンドを使用して、クラスター ログを生成および収集します。

    Set-ClusterLog -UseLocalTime -Level 5 -Destination C:\temp
    
  7. ハードウェアの問題または繰り返し発生するエラー ID がログに見つかった場合は、ストレージおよびネットワーク ベンダーと連携します。

ドメインの信頼と認証またはログインの失敗

症状

  • エラー: "このワークステーションとプライマリ ドメインの間の信頼関係が失敗しました。"
  • Hyper-V Manager 経由ではログインできませんが、RDP は機能します。
  • VM が "お待ちください" で停止しているか、ログインできません。

解決策

  1. ドメインから VM を削除した後、再びドメインに参加させます。
  2. Active Directory でコンピューター アカウントの状態を確認して修正します。
  3. サインイン エラーの場合は、古いプロファイルをクリーンアップするか、GPO またはプロファイルの破損を確認します。
  4. ドメイン コントローラーが正常であり、VM/ハイパーバイザーから到達できることを確認します。

パフォーマンスの問題: VM の低速、待機時間の長さ、アプリの応答の停止

症状

  • ジョブまたはバックアップには、通常の 2 ~ 3 倍の時間がかかります。
  • ディスクのアイドル時間が短く、平均ディスク待機時間が 25 ミリ秒を超えている。
  • イベント ログには、"I/O 要求が XXXXX ミリ秒で完了しました" というエントリが繰り返し表示されます。
  • VM が応答しない (特に I/O が多い場合)。

解決策

  1. ディスクとネットワーク パフォーマンスの監視を実行します。

    logman create counter PerfLog-Short-Interval -f bincirc -si 00:00:01 -o c:\Temp\ percentComputerName percent_PerfLog-Short-Interval.blg -c \Memory\\* \Network Interface(\*)\\* \Processor(\*)\\* \PhysicalDisk(\*)\\* \LogicalDisk(\*)\\*
    logman start PerfLog-Short-Interval
    logman stop PerfLog-Short-Interval
    
  2. ストレージとネットワークのボトルネックを特定します。 ドライバーとファームウェアを更新します。

  3. 負荷の高いワークロードを別々のホストとストレージ アレイに分散します。

  4. 特定のワークロードでのみ問題が発生する場合は、アプリケーション ベンダーと連携します。

  5. ネットワークの構成ミスを確認して排除します (VMQ、RSS などを無効または有効にします)。

  6. ハードウェアまたはドライバーのロックアップをクリアするには、必要に応じて VM またはホストを再起動します。

一般的な問題のクイック リファレンス 表

症状 根本原因 解決策
"メモリ不足" / (0x8007000E) ホストに無料の RAM、オーバーサブスクリプションがない ホストに RAM を追加するか、VM の起動メモリを減らす
"データが無効です" (0x8007000D);VMwp.exe アクセスがログで拒否されました レジストリまたは証明書のアクセス許可エラー レジストリのアクセス許可の修正、署名の検証、AV の除外の設定
一部の CPU のみが認識され、アップグレード後にパフォーマンスが 50% 未満低下する 構成またはレジストリの制限を開始する BCD numproc の削除、レジストリ FeatureSettingsOverride/Mask の追加、再起動
ファイル システム エラー (例: 0x2;chkdsk エラー;ファイルを削除できない NTFS メタデータまたは VM ファイルが破損している chkdsk /f の実行、バックアップ、新しい VM への VHD のアタッチ、修復または復元
CSV が一時停止 (イベント 5120);ノードの削除 (イベント 1135);再起動 ネットワーク、ドライバー、またはストレージの問題、AV ドライバーとファームウェアの更新、クラスター構成の確認、AV の削除または調整
"ドメイン信頼に失敗しました";Hyper-V Manager ログインのみが失敗する 信頼関係の破損または AD/GPO の問題 ドメインに再参加し、AD アカウントを確認し、キャッシュされた資格情報をクリアする
パフォーマンスの低下 (ディスクのアイドル状態が 95% 未満、待機時間が 25 ミリ秒を超える、イベント 9、153 など) ストレージ/ネットワークのボトルネックまたはキャッシュの構成 ファームウェアの更新、VM の移動、ワークロードのバランスの調整、キャッシュの確認

データ コレクション

Microsoft サポートに問い合わせる前に、問題に関する次の情報を収集できます。

  • イベント ログ: C:\Windows\System32\winevt\logs\system.evtx, application.evtx
  • クラスター ログ: Set-ClusterLog を使用して診断情報をエクスポートする
  • パフォーマンス ログ: Perfmon/logman を使用する
  • ストレージ/ネットワーク ドライバーとファームウェア のインベントリ: デバイス マネージャーまたは Get-WmiObject Win32_PnPSignedDriver を使用してプルする
  • レジストリのエクスポート: regedit を使用して、疑わしいキーを保存および分析します (例: [メモリ管理] の下)
  • スクリーンショット: エラー、設定ダイアログ、デバイス マネージャーなど
  • Active Directory ログ: ドメインの信頼と認証に関する問題

References