Windows インスタンスに関する一般的な問題 - Amazon Elastic Compute Cloud

Windows インスタンスに関する一般的な問題

次は、Windows Server を実行する EC2 インスタンスの一般的な問題の解決に役立つトラブルシューティングのヒントです。

EBS ボリュームが Windows Server 2016 以降で初期化されない

Windows Server 2016 以降用の Amazon マシンイメージ (AMI) から作成されたインスタンスでは、さまざまなスタートアップタスク (例: EBS ボリュームの初期化) に EC2Launch サービスが使用されます。デフォルトでは、EC2Launch はセカンダリボリュームを初期化しません。これらのディスクを自動的に初期化するには、EC2Launch を設定します。

ドライブ文字をボリュームにマッピングするには

  1. 設定するインスタンスに接続し、C:\ProgramData\Amazon\EC2-Windows\Launch\Config\DriveLetterMappingConfig.json ファイルをテキストエディタで開きます。

  2. 次の形式を使用してボリューム設定を指定します。

    { "driveLetterMapping": [ { "volumeName": "sample volume", "driveLetter": "H" } ] }
  3. 変更内容を保存し、ファイルを閉じます。

  4. Windows PowerShell を開き、次のコマンドを使用して、ディスクを初期化する EC2Launch スクリプトを実行します。

    PS C:\> C:\ProgramData\Amazon\EC2-Windows\Launch\Scripts\InitializeDisks.ps1

    インスタンスが起動するたびにディスクを初期化するには、-Schedule フラグを次のように追加します。

    PS C:\> C:\ProgramData\Amazon\EC2-Windows\Launch\Scripts\InitializeDisks.ps1 -Schedule

ディレクトリサービス復元モード (DSRM) で EC2 Windows インスタンスを起動する

Microsoft Active Directory を実行するインスタンスでシステム障害やその他の重要な問題が発生した場合、ディレクトリサービス復元モード (DSRM) と呼ばれる特殊なバージョンのセーフモードで起動することで、インスタンスをトラブルシューティングできます。DSRM では、Active Directory を修復または復元できます。

DSRM のドライバーサポート

DSRM を有効にしてインスタンスで起動する方法は、インスタンスが実行されているドライバーによって異なります。EC2 コンソールで、システムログからインスタンスのドライバーバージョンの詳細を表示できます。次の表に、DSRM でサポートされるドライバーを示します。

ドライバーのバージョン サポートされる DSRM 次のステップ
Citrix PV 5.9 いいえ バックアップからインスタンスを復元します。DSRM を有効にすることはできません。
AWS PV 7.2.0 いいえ このドライバーでは DSRM がサポートされていませんが、インスタンスからルートボリュームをデタッチして、ボリュームのスナップショットを取得するか AMI を作成し、同じアベイラビリティーゾーン内の別のインスタンスにセカンダリボリュームとしてアタッチできます。その後、DSRM を有効にすることができます (このセクションで説明します)。
AWS PV 7.2.2 以降 はい ルートボリュームのデタッチ、別のインスタンスへの接続、DSRM の有効化 (このセクションで説明しています)。
拡張ネットワーキング はい ルートボリュームのデタッチ、別のインスタンスへの接続、DSRM の有効化 (このセクションで説明しています)。

拡張ネットワーキングを有効にする方法については、「VPC 内の Windows インスタンスで拡張ネットワーキングを有効化する」を参照してください。AWS PV ドライバーのアップグレードの詳細については、「Windows インスタンスでの PV ドライバーのアップグレード」を参照してください。

DSRM で起動するインスタンスを設定する

オペレーティング システムを実行する前に、EC2 Windows インスタンスでネットワーク接続は行われません。このため、キーボードの F8 ボタンを押して起動オプションを選択することはできません。次のいずれかの手順を使用して、DSRM で EC2 Windows Server インスタンスを起動する必要があります。

Active Directory が破損していて、インスタンスがまだ実行されていることが疑われる場合、[System Configuration] ダイアログボックスまたはコマンドプロンプトを使用して、DSRM で起動するようインスタンスを設定できます。

[System Configuration] ダイアログボックスを使用して DSRM でオンラインインスタンスを起動するには

  1. [Run] ダイアログボックスで、「msconfig」と入力して Enter キーを押します。

  2. [Boot] タブを選択します。

  3. [Boot options] で、[Safe boot] を選択します。

  4. [Active Directory repair] を選択し、[OK] を選択します。サーバーを再起動するよう求められます。

コマンドラインを使用して DSRM でオンラインインスタンスを起動するには

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

bcdedit /set safeboot dsrepair

インスタンスがオフラインで到達不可能な場合は、ルートボリュームをデタッチし、別のインスタンスにアタッチして DSRM モードを有効にする必要があります。

DSRM でオフラインインスタンスを起動するには

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

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

  3. 影響を受けるインスタンスを探して選択します。[Instance state (インスタンスの状態)]、[Stop instance (インスタンスの停止)] の順に選択します。

  4. [Launch instances (インスタンスの起動)] を選択し、影響のあるインスタンスと同じアベイラビリティーゾーンに一時インスタンスを作成します。別のバージョンの Windows を使用するインスタンスタイプを選択します。たとえば、インスタンスが Windows Server 2008 である場合、Windows Server 2008 R2 インスタンスを選択します。

    重要

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

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

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

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

  8. コマンドプロンプトを開き、次のコマンドを入力します。D を、アタッチしたセカンダリボリュームの実際のドライブ文字と置き換えます。

    bcdedit /store D:\Boot\BCD /set {default} safeboot dsrepair
  9. Disk Management ユーティリティで、先ほどアタッチしたドライブを選択し、右クリックコンテキストメニューを開いて、[オフライン] を選択します。

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

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

  12. インスタンスが EC2 コンソールでヘルスチェックに合格したら、リモートデスクトップを使用してインスタンスに接続し、DSRM モードで起動することを確認します。

  13. (オプション) この手順で作成した一時インスタンスを削除するか停止します。

インスタンスのネットワーク接続が失われる、または、スケジュールされたタスクが予定通りに実行されない

インスタンスを再起動するとネットワーク接続が失われる場合は、インスタンスの時刻設定が間違っている可能性があります。

デフォルトで、Windows インスタンスは協定世界時 (UTC) を使用します。別のタイムゾーンにインスタンスの時刻を設定して再起動すると、時刻がずれて、インスタンスの IP アドレスが一時的に失われます。最終的にインスタンスのネットワーク接続は復旧されますが、これには数時間かかることがあります。インスタンスがネットワーク接続を復旧するのにかかる時間は、UTC と他のタイムゾーンとの時差に左右されます。

時刻に関するこの同じ問題によって、スケジュールされたタスクが予定通りに実行されないことがあります。この場合、インスタンスの時刻が正しくないため、スケジュールされたタスクは予定通りに実行されません。

UTC 以外のタイムゾーンを永続的に使用するには、RealTimeIsUniversal レジストリキーを設定する必要があります。このキーがない場合、インスタンスは再起動後、UTC を使用します。

ネットワーク接続を失う原因となる時刻の問題を解決するには

  1. 推奨 PV ドライバーを実行していることを確認します。詳細については、「Windows インスタンスでの PV ドライバーのアップグレード」を参照してください。

  2. 次のレジストリキーが存在し、1 に設定されていることを確認します: HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\TimeZoneInformation\RealTimeIsUniversal

コンソールの出力を取得できない

Windows インスタンスの場合は、インスタンスコンソールに Windows 起動プロセス中に実行されたタスクの出力が表示されます。Windows が正常に起動した場合、記録される最後のメッセージは Windows is Ready to use です。コンソールにはイベントログメッセージも表示できますが、この機能はデフォルトでは有効になっていない点に注意してください。詳細については、「EC2 サービスプロパティ」を参照してください。

Amazon EC2 コンソールを使用してインスタンスのコンソール出力を取得するには、インスタンスを選択してから、[アクション]、[モニタリングおよびトラブルシューティング]、[システムログの取得] の順に選択します。コマンドラインを使用してコンソール出力を取得するには、get-console-output (AWS CLI) コマンド、または Get-EC2ConsoleOutput (AWS Tools for Windows PowerShell) コマンドを使用します。

Windows Server 2012 R2 以前を実行しているインスタンスで、コンソール出力が空の場合は、設定ファイルが正しく設定されていない、Windows が正しく起動しなかったなど、EC2Config サービスの問題を示している可能性があります。問題を修正するには、EC2Config の最新バージョンをダウンロードしてインストールします。詳細については、「EC2Config の最新バージョンのインストール」を参照してください。

Windows Server 2012 R2 をネットワークで使用できない

ネットワークで使用できない Windows Server 2012 R2 インスタンスをトラブルシューティングする方法の詳細については、「Windows Server 2012 R2 でインスタンスの再起動後にネットワークおよびストレージとの接続が失われる」を参照してください。

ディスク署名の衝突

ディスク署名の衝突をチェックして解決するには、EC2Rescue for Windows Server を使用します。または、次の手順を実行して、ディスク署名の問題を手動で解決できます。

警告

以下の手順では、レジストリエディタを使用して Windows レジストリを編集する方法を説明します。Windows レジストリに慣れていない場合や、レジストリエディターを使用して安全に変更する方法については、「レジストリを構成する」を参照してください。

  1. コマンドプロンプトを開き、regedit.exe と入力して、[Enter] を押します。

  2. [レジストリエディタ] で、コンテキストメニュー (右クリック) から [HKEY_LOCAL_MACHINE] を選択し、[検索] を選択します。

  3. [Windows Boot Manager] を入力して、[次を検索] を選択します。

  4. [11000001] というキーを選択します。このキーは、前の手順で検索したキーの兄弟です。

  5. 右のペインで [Element] を選択し、コンテキストメニュー (右クリック) から[変更] を選択します。

  6. データのオフセット 0x38 で 4 バイトのディスク署名を見つけます。これは、ブート構成データベース署名 (BCD) です。バイトの順序を逆にしてディスク署名を作成し、書き留めます。例えば、次のデータで表されるディスク署名は E9EB3AA5 です。

    ... 0030 00 00 00 00 01 00 00 00 0038 A5 3A EB E9 00 00 00 00 0040 00 00 00 00 00 00 00 00 ...
  7. コマンドプロンプトウィンドウで、次のコマンドを実行して Microsoft DiskPart を起動します。

    diskpart
  8. 次の DiskPart コマンドを実行して、ボリュームを選択します。(ディスク番号が 1 であることを確認するには、ディスク管理ユーティリティを使用します。)

    DISKPART> select disk 1 Disk 1 is now the selected disk.
  9. 次の DiskPart コマンドを実行して、ディスク署名を取得します。

    DISKPART> uniqueid disk Disk ID: 0C764FA8
  10. 前の手順で表示されたディスク署名が、以前に書き留めた BCD のディスク署名と一致しない場合は、次の DiskPart コマンドを使用してディスク署名を変更して一致させます。

    DISKPART> uniqueid disk id=E9EB3AA5