PV ドライバーのトラブルシューティング - Amazon Elastic Compute Cloud

PV ドライバーのトラブルシューティング

以下は、古い Amazon EC2 イメージと PV ドライバで発生する可能性のある問題の解決策です。

Windows Server 2012 R2 でインスタンスの再起動後にネットワークおよびストレージとの接続が失われる

重要

この問題は、2014 年 9 月より前に利用可能になった AMI でのみ発生します。

2014 年 9 月 10 日より前に使用可能になった Windows Server 2012 R2 Amazon Machine Image (AMI) では、インスタンスの再起動後にネットワークおよびストレージとの接続が失われることがあります。AWS Management Console のシステムログに "Difficulty detecting PV driver details for Console Output" というエラーが見つかります。この接続損失は、プラグアンドプレイクリーンアップ機能によって発生します。これは、30 日ごとに非アクティブなシステムデバイスをスキャンして無効にする機能です。この機能は EC2 ネットワークデバイスを非アクティブと誤認して、システムから削除します。この状況になると、インスタンスの再起動後にネットワーク接続が失われます。

この問題の影響を受ける可能性のあるシステムに対して、インプレースドライバーアップグレードをダウンロードして実行できます。インプレースドライバーアップグレードを実行できない場合は、ヘルパースクリプトを実行できます。スクリプトはインスタンスがこの問題の影響を受けているかどうかを調べます。影響を受けていて、Amazon EC2 ネットワークデバイスが削除されていない場合、スクリプトはプラグアンドプレイクリーンアップスキャンを無効にします。ネットワークデバイスが削除されている場合、スクリプトはデバイスを修復し、プラグアンドプレイクリーンアップスキャンを無効にしてから、インスタンスを再起動して、ネットワーク接続を有効にします。

問題の解決方法の選択

この問題の影響を受けたインスタンスへのネットワークおよびストレージ接続を復元する方法は 2 つあります。次のいずれかの方法を選択します。

方法 前提条件 手順概要
方法 1 - 拡張ネットワーキング 拡張ネットワーキングは、C3 インスタンスタイプを必要とする Virtual Private Cloud (VPC) でのみ利用できます。サーバーが現在 C3 インスタンスタイプを使用していない場合は、一時的に変更する必要があります。 サーバーインスタンスタイプを C3 インスタンスに変更します。拡張ネットワーキングにより、影響を受けたインスタンスに接続して問題を修正できるようになります。問題を修正した後、インスタンスを元のインスタンスタイプに戻します。この方法は、通常は方法 2 よりすぐに終わり、ユーザーエラーが発生する可能性が低くなります。C3 インスタンスが実行されている限り追加料金が発生します。
方法 2 - レジストリ設定 2 番目のサーバーを作成したりアクセスしたりする知識。レジストリ設定を変更する知識。 影響を受けたインスタンスからルートボリュームをデタッチして別のインスタンスにアタッチし、接続してレジストリに変更を加えます。追加のサーバーが実行されている限り追加料金が発生します。この方法は、方法 1 より時間がかかりますが、この方法は方法 1 で問題が解決されない場合も効果がありました。

方法 1 - 拡張ネットワーキング

  1. Amazon EC2 コンソール (https://console.aws.amazon.com/ec2/) を開きます。

  2. ナビゲーションペインで、[インスタンス] を選択します。

  3. 影響のあるインスタンスを特定します。インスタンスを選択し、[インスタンスの状態] をクリックし、[インスタンスの停止] を選択します。

    警告

    インスタンスを停止すると、インスタンスストアボリューム上のデータは消去されます。インスタンスストアボリュームのデータを保持するには、データを永続的ストレージに必ずバックアップします。

  4. インスタンスの停止後、バックアップを作成します。インスタンスを選択し、[アクション]、[イメージとテンプレート] の順に選択し、[イメージの作成] をクリックします。

  5. インスタンスタイプを C3 インスタンスタイプに変更します。

  6. インスタンスを起動します。

  7. リモートデスクトップを使用してインスタンスに接続し、AWS PV ドライバーアップグレードパッケージをインスタンスにダウンロードします。

  8. フォルダの内容を展開し、AWSPVDriverSetup.msi を実行します。

    MSI の実行後、インスタンスは自動的に再起動され、ドライバーがアップグレードされます。インスタンスは最大 15 分間、使用できなくなります。

  9. アップグレードが完了し、インスタンスが Amazon EC2 コンソールの両方のヘルスチェックに合格した後、リモートデスクトップを使用してインスタンスに接続し、新しいドライバーがインストールされたことを確認します。デバイスマネージャーの [Storage Controllers] で、[AWS PV Storage Host Adapter] を見つけます。ドライバーバージョンがドライバーのバージョン履歴の表に掲載されている最新バージョンと同じであることを確認します。詳細については、「AWS PV ドライバーパッケージの履歴」を参照してください。

  10. インスタンスを停止し、インスタンスを元のインスタンスタイプに戻します。

  11. インスタンスを起動し、標準の使用を再開します。

方法 2 - レジストリ設定

  1. Amazon EC2 コンソール (https://console.aws.amazon.com/ec2/) を開きます。

  2. ナビゲーションペインで、[インスタンス] を選択します。

  3. 影響のあるインスタンスを特定します。インスタンスを選択し、[インスタンスの状態]、[インスタンスの停止] の順に選択します。

    警告

    インスタンスを停止すると、インスタンスストアボリューム上のデータは消去されます。インスタンスストアボリュームのデータを保持するには、データを永続的ストレージに必ずバックアップします。

  4. [インスタンスの起動] を選択し、影響のあるインスタンスと同じアベイラビリティーゾーンに Windows Server 2008 または Windows Server 2012 の一時インスタンスを作成します。Windows Server 2012 R2 インスタンスは作成しないでください。

    重要

    影響のあるインスタンスと同じアベイラビリティーゾーンにインスタンスを作成しない場合、影響のあるインスタンスのルートボリュームを新しいインスタンスにアタッチできません。

  5. ナビゲーションペインの [Volumes] を選択します。

  6. 影響のあるインスタンスのルートボリュームを見つけます。ボリュームをデタッチしてから、先ほど作成した一時インスタンスにボリュームをアタッチします。デフォルトのデバイス名 (xvdf) でアタッチしてください。

  7. リモートデスクトップを使用して一時インスタンスに接続したら、Disk Management ユーティリティを使用してボリュームを有効にします

  8. 一時インスタンスで、[実行] ダイアログボックスを開き、regedit と入力して、Enter キーを押します。

  9. レジストリエディターのナビゲーションペインで、[HKEY_Local_Machine] を選択し、[File] メニューの [Load Hive] を選択します。

  10. [Load Hive] ダイアログボックスで、Affected Volume\Windows\System32\config\System に移動し、[Key Name] ダイアログボックスに一時的な名前を入力します。たとえば、「OldSys」と入力します。

  11. レジストリエディターのナビゲーションペインで、以下のキーを見つけます。

    HKEY_LOCAL_MACHINE\your_temporary_key_name\ControlSet001\Control\Class\4d36e97d-e325-11ce-bfc1-08002be10318

    HKEY_LOCAL_MACHINE\your_temporary_key_name\ControlSet001\Control\Class\4d36e96a-e325-11ce-bfc1-08002be10318

  12. キーごとに、[UpperFilters] をダブルクリックし、XENFILT の値を入力して、[OK] を選択します。

    
                                影響のあるボリュームのレジストリキー。
  13. 以下のキーを見つけます。

    HKEY_LOCAL_MACHINE\your_temporary_key_name\ControlSet001\Services\XENBUS\Parameters

  14. ActiveDevice という名前と以下の値で新しい文字列 (REG_SZ) を作成します。

    PCI\VEN_5853&DEV_0001&SUBSYS_00015853&REV_01

  15. 以下のキーを見つけます。

    HKEY_LOCAL_MACHINE\your_temporary_key_name\ControlSet001\Services\XENBUS

  16. [Count] を 0 から 1 に変更します。

  17. 以下のキーを見つけ、削除します。

    HKEY_LOCAL_MACHINE\your_temporary_key_name\ControlSet001\Services\xenvbd\StartOverride

    HKEY_LOCAL_MACHINE \your_temporary_key_name\ControlSet001\Services\xenfilt\StartOverride

  18. レジストリエディターのナビゲーションペインで、最初にレジストリエディターを開いたときに作成した一時キーを選択します。

  19. [File] メニューの [Unload Hive] を選択します。

  20. Disk Management ユーティリティで、先ほどアタッチしたドライブを選択し、右クリックコンテキストメニューを開いて、[オフライン] を選択します。

  21. Amazon EC2 コンソールで、影響のあるボリュームを一時インスタンスからデタッチし、/dev/sda1 というデバイス名で Windows Server 2012 R2 インスタンスに再アタッチします。ボリュームをルートボリュームとして指定するには、このデバイス名を指定する必要があります。

  22. インスタンスを起動します。

  23. リモートデスクトップを使用してインスタンスに接続し、AWS PV ドライバーアップグレードパッケージをインスタンスにダウンロードします。

  24. フォルダの内容を展開し、AWSPVDriverSetup.msi を実行します。

    MSI の実行後、インスタンスは自動的に再起動され、ドライバーがアップグレードされます。インスタンスは最大 15 分間、使用できなくなります。

  25. アップグレードが完了し、インスタンスが Amazon EC2 コンソールの両方のヘルスチェックに合格した後、リモートデスクトップを使用してインスタンスに接続し、新しいドライバーがインストールされたことを確認します。デバイスマネージャーの [Storage Controllers] で、[AWS PV Storage Host Adapter] を見つけます。ドライバーバージョンがドライバーのバージョン履歴の表に掲載されている最新バージョンと同じであることを確認します。詳細については、「AWS PV ドライバーパッケージの履歴」を参照してください。

  26. この手順で作成した一時インスタンスを削除するか停止します。

修復スクリプトの実行

インプレースドライバアップグレードを実行できないか、新しいインスタンスに移行できない場合は、修正スクリプトを実行して、プラグアンドプレイクリーンアップタスクによって発生する問題を修正できます。

修復スクリプトを実行するには

  1. Amazon EC2 コンソール (https://console.aws.amazon.com/ec2/) を開きます。

  2. ナビゲーションペインで、[インスタンス] を選択します。

  3. 修復スクリプトを実行するインスタンスを選択します。[インスタンスの状態] を選択し、[インスタンスの停止 ] をクリックします。

    警告

    インスタンスを停止すると、インスタンスストアボリューム上のデータは消去されます。インスタンスストアボリュームのデータを保持するには、データを永続的ストレージに必ずバックアップします。

  4. インスタンスの停止後、バックアップを作成します。インスタンスを選択し、[アクション]、[イメージとテンプレート] の順に選択し、[イメージの作成] をクリックします。

  5. [インスタンスの状態] を選択し、[インスタンスの起動] をクリックします。

  6. リモートデスクトップを使用してインスタンスに接続し、RemediateDriverIssue.zip フォルダをそのインスタンスにダウンロードします。

  7. フォルダの内容を展開します。

  8. Readme.txt ファイルの指示に従って、修復スクリプトを実行します。このファイルは、RemediateDriverIssue.zip を抽出したフォルダにあります。

TCP オフロード

重要

この問題は、AWS PV または Intel ネットワークドライバーを実行しているインスタンスには該当しません。

Windows AMI の Citrix PV ドライバーでは、TCP オフロードがデフォルトで有効になっています。たとえば、特定の SQL ワークロードを実行しているときに、トランスポートレベルのエラーまたはパケット送信エラー (Windows パフォーマンス モニターで表示される) が発生した場合、この機能を無効にすることが必要になる場合があります。

警告

TCP オフロードを無効にすると、インスタンスのネットワークパフォーマンスが低下することがあります。

Windows Server 2012 および 2008 の TCP オフロードを無効にするには

  1. インスタンスに接続してローカル管理者としてログインします。

  2. Windows Server 2012 を使用している場合は、[Ctrl+Esc] を押して [スタート] 画面にアクセスし、[コントロールパネル] を選択します。Windows Server 2008 を使用している場合は、[スタート]、[コントロールパネル] の順に選択します。

  3. [Network and Internet] (ネットワークとインターネット)、[Network and Sharing Center] (ネットワークと共有センター) の順に選択します。

  4. [Change adapter settings] (アダプター設定の変更) を選択します。

  5. [Citrix PV Ethernet Adapter #0] を右クリックし、[プロパティ] を選択します。

    
                            ローカル エリアの接続プロパティ
  6. [Local Area Connection Properties] (ローカルエリア接続のプロパティ) ダイアログボックスで [設定] を選択すると、[Citrix PV Ethernet Adapter #0 Properties] ダイアログボックスが開きます。

  7. [Advanced] (詳細) タブでプロパティをひとつずつ無効にします。ただし、[Correct TCP/UDP Checksum Value] は除きます。プロパティを無効にするには、[プロパティ] で選択してから、[] の [無効] を選択します。

  8. [OK] を選択します。

  9. コマンドプロンプトウィンドウから次のコマンドを実行します。

    netsh int ip set global taskoffload=disabled netsh int tcp set global chimney=disabled netsh int tcp set global rss=disabled netsh int tcp set global netdma=disabled
  10. インスタンスを再起動します。

時刻同期

2013.02.13 の Windows AMI のリリース以前、Citrix Xen ゲストエージェントでシステム時刻が誤って設定される場合がありました。これにより、DHCP リースが有効期限切れになる可能性があります。インスタンスに接続できない問題が発生している場合、エージェントの更新が必要である可能性があります。

更新された Citrix Xen ゲストエージェントがあるかどうかを判断するには、C:\Program Files\Citrix\XenGuestAgent.exe ファイルが 2013 年 3 月のものであるかどうかを確認します。このファイルの日付がこれよりも前である場合は、Citrix Xen ゲストエージェントサービスを更新してください。詳細については、「Citrix Xen ゲストエージェントサービスのアップグレード」を参照してください。

20,000 以上のディスク IOPS を使用するワークロードでは、CPU のボトルネックによりパフォーマンスが低下します

この問題の影響を受けるのは、20,000 超の IOPS を利用する AWS PV ドライバーを実行している Windows インスタンスを使用しており、バグチェックコード 0x9E: USER_MODE_HEALTH_MONITOR が発生した場合です。

AWS PV ドライバーでのディスクの読み取りと書き込み (IO) は、次の 2 つのフェーズで行われます: IO の準備および IO の完了です。デフォルトでは、準備フェーズは単一の任意のコアで実行されます。完了フェーズはコア 0 で実行されます。IO の処理に必要な計算量は、そのサイズやその他のプロパティによって異なります。準備フェーズでより多くの計算を使用する IO もあれば、完了フェーズで多くの計算を使用する IO もあります。インスタンスが 20,000 IOPS 以上の場合、準備フェーズまたは完了フェーズでボトルネックが発生し、インスタンスを実行する CPU の容量が 100% になる可能性があります。準備フェーズまたは完了フェーズがボトルネックになるかどうかは、アプリケーションが使用する IO のプロパティによって異なります。

AWS PV ドライバー 8.4.0 以降、準備フェーズと完了フェーズの負荷を複数のコアに分散し、ボトルネックを排除できます。各アプリケーションは、異なる IO プロパティを使用します。したがって、次の設定のいずれかを適用することで、アプリケーションのパフォーマンスを向上、低下させたり、または影響しないようにすることができます。これらの設定のいずれかを適用したら、アプリケーションを監視して、目的のパフォーマンスを満たしていることを確認します。

  1. Prerequisites

    このトラブルシューティング手順を開始する前に、以下の前提条件を確認してください。

  2. インスタンスの CPU 負荷を監視する

    Windows タスクマネージャーを使用して、各 CPU の負荷を表示し、ディスク IO の潜在的なボトルネックを特定できます。

    1. アプリケーションが実行中で、本番ワークロードと同様のトラフィックを処理していることを確認します。

    2. RDP を使用してインスタンスに接続します。

    3. インスタンスで [スタート] メニューを選択します。

    4. [スタート] メニュー の Task Manager で、タスクマネージャーを開きます。

    5. タスクマネージャーに概要ビューが表示される場合は、[詳細] を選択して詳細ビューを展開します。

    6. [パフォーマンス] タブを選択します。

    7. 左ペインの CPU を選択します。

    8. メインペインでグラフを右クリックし、グラフをに変更する論理プロセッサの順に選択して、個々のコアを表示します。

    9. インスタンスにあるコアの数により、時間の経過に伴い CPU 負荷の詳細が表示される場合と、数字のみが表示される場合があります。

      • 時間の経過に伴う負荷を示すグラフが表示される場合は、ボックスがほぼ完全に網掛けされている CPU を探します。

      • 各コアに数字が表示されている場合は、一貫して 95% 以上を示すコアを探します。

    10. コア 0 または別のコアで、高い負荷がかかっているかどうかに注意してください。

  3. 適用する設定を選択する

    設定名 この設定を適用する場合 コメント
    Default configuration ワークロードが 20,000 IOPS 未満であるか、他の設定ではパフォーマンスや安定性が向上しませんでした。

    この設定では、IO は少数のコアで発生するため、キャッシュの局所性を向上させ、コンテキストの切り替えを減らすことで、より小さなワークロードで恩恵を受けることができます。

    Allow driver to choose whether to distribute completion ワークロードが 20,000 IOPS 以上で、コア 0 で中程度または高い負荷がかかっていることが確認できます。 この設定は、問題が発生したかどうかにかかわらず、PV 8.4.0 以降で 20,000 IOPS 以上を使用するすべての Xen インスタンスに推奨されます。
    Distribute both preparation and completion ワークロードが 20,000 IOPS 以上で、ドライバーがディストリビューションを選択できるようにしてもパフォーマンスが向上しなかったか、0 で高い負荷がかかっています。 この設定では、IO の準備および完了の両方を分散できます。
    注記

    IO の準備を分散せずに、IO の完了も分散しないことをお勧めします (DpcRedirection を設定せずに NotifierDistributed を設定します)。準備フェーズが並行して動作している場合、完了フェーズは準備フェーズによる過負荷に敏感になるためです。

    レジストリキーの値

    • NotifierDistributed

      0 または存在しない — 完了フェーズはコア 0 で実行されます。

      1 — ドライバーは、接続されたディスクごとに、完了フェーズ、コア 0、追加されたもう 1 つのコアのいずれかの実行を選択します。

      2 — ドライバーは、接続されたディスクごとに、追加された 1 つのコアで完了フェーズを実行します。

    • DpcRedirection

      0 または存在しない — 準備フェーズは、単一の任意のコアで実行されます。

      1 — 準備フェーズは、複数のコアに分散されます。

    デフォルト設定

    AWS PV ドライバーのバージョンが 8.4.0 以前であるか、このセクションの他のいずれかの設定を適用した後にパフォーマンスまたは安定性の低下が見られる場合は、デフォルト設定を適用します。

    1. RDP を使用してインスタンスに接続します。

    2. 管理者として新しい PowerShell コマンドプロンプトを開きます。

    3. 以下のコマンドを実行して、NotifierDistributed および DpcRedirection レジストリキーを削除します。

      Remove-ItemProperty -Path HKLM:\System\CurrentControlSet\Services\xenvbd\Parameters -Name NotifierDistributed
      Remove-ItemProperty -Path HKLM:\System\CurrentControlSet\Services\xenvbd\Parameters -Name DpcRedirection
    4. インスタンスを再起動します。

    完了を分散するかどうかをドライバーが選択できるようにする

    NotiferDistributed レジストリキーを設定して、PV ストレージドライバーが IO の完了を分散するかどうかを選択できるようにします。

    1. RDP を使用してインスタンスに接続します。

    2. 管理者として新しい PowerShell コマンドプロンプトを開きます。

    3. 以下のコマンドを実行して NotiferDistributed レジストリキーを設定します。

      Set-ItemProperty -Type DWORD -Path HKLM:\System\CurrentControlSet\Services\xenvbd\Parameters -Value 0x00000001 -Name NotifierDistributed
    4. インスタンスを再起動します。

    準備と完了をともに分散する

    NotifierDistributed および DpcRedirection レジストリキーを設定して、準備フェーズと完了フェーズの両方を常に分散します。

    1. RDP を使用してインスタンスに接続します。

    2. 管理者として新しい PowerShell コマンドプロンプトを開きます。

    3. 以下のコマンドを実行して、NotifierDistributed および DpcRedirection レジストリキーを設定します。

      Set-ItemProperty -Type DWORD -Path HKLM:\System\CurrentControlSet\Services\xenvbd\Parameters -Value 0x00000002 -Name NotifierDistributed
      Set-ItemProperty -Type DWORD -Path HKLM:\System\CurrentControlSet\Services\xenvbd\Parameters -Value 0x00000001 -Name DpcRedirection
    4. インスタンスを再起動します。