スキップしてコンテンツを表示

Amazon EC 2 Linux インスタンスを Nitro ベースのインスタンスに変更した後に、起動しなくなった理由を教えてください。

所要時間2分
0

Amazon Elastic Compute Cloud (Amazon EC2) Linux インスタンスを AWS Nitro System ベースのインスタンスに変更しました。しかし、インスタンスが起動しなくなりました。

簡単な説明

EC2 Linux インスタンスを Nitro ベースのインスタンスに変更した後、次の要因により起動しない場合があります。

  • インスタンスで enaSupport 拡張ネットワーク機能の属性を有効にしなかった。
  • インスタンスに Elastic Network Adapter (ENA) ドライバーをインストールしなかった。
  • インスタンスに NVMe ドライバーをインストールしなかった。または、インスタンスの initramfs イメージに NVMe モジュールがロードされていない。
  • 起動時に、UUID の代わりにデバイス名を使用して /etc/fstab ファイルのファイルシステムをマウントした。<br id=hardline_break/> 注: Nitro ベースのインスタンスでは、Amazon Elastic Block Store (Amazon EBS) ボリュームは NVMe デバイスとして表示されます。この設定により、デバイス名が変更されます。

起動の問題を解決するには、インスタンスタイプを Xen インスタンスに戻します。次に、AWSSupport-MigrateXenToNitroLinux ランブックを使用して、インスタンスの移行準備を自動的に行います。または、不足している前提条件を手動で確認して修正してください。最後に、インスタンスタイプを Nitro インスタンスに変更します。

解決策

注: AWS コマンドラインインターフェイス (AWS CLI) コマンドの実行中にエラーが発生した場合は、「AWS CLI のエラーのトラブルシューティング」を参照してください。また、AWS CLI の最新バージョンを使用していることを確認してください。

インスタンスタイプを Xen に戻す

重要: インスタンスタイプを変更するには、インスタンスを停止して起動する必要があります。

インスタンスを停止して起動するように設定する

注: インスタンスを停止または起動する際、インスタンスのパブリック IP アドレスは変更されます。外部トラフィックをインスタンスにルーティングするには、パブリック IP アドレスではなく Elastic IP アドレスを使用することをおすすめします。Amazon Route 53 を使用している場合は、パブリック IP アドレスが変更されたときに Route 53 の DNS レコードを更新しなければならない場合があります。

インスタンスを停止して起動する前に、次のアクションを実行してください。

インスタンスタイプを変更する

インスタンスを Xen インスタンスタイプに戻して、インスタンスが起動できることを確認します。

インスタンスの移行準備を自動的に行う

Nitro への移行の前提条件を満たすようにインスタンスを自動的に更新するには、AWSSupport-MigrateXenToNitroLinux ランブックを実行してください。

移行前に前提条件を確認する

インスタンスタイプを Nitro に変更する前に、nitro_check_script.sh スクリプトを実行して前提条件を確認します。このスクリプトにアクセスする方法については、GitHub のウェブサイトで nitro_check_script.sh を参照してください。スクリプトがチェックする内容については、GitHub のウェブサイトで NitroInstanceChecks を参照してください。

nitro_check_script.sh スクリプトをダウンロードするには、次のコマンドを実行します。

sudo wget https://raw.githubusercontent.com/awslabs/aws-support-tools/refs/heads/master/EC2/NitroInstanceChecks/nitro_check_script.sh -O /tmp/nitro_check_script.sh

スクリプトを実行するためのアクセス許可を環境に付与するには、次のコマンドを実行します。

sudo chmod +x /tmp/nitro_check_script.sh

root 権限でスクリプトを実行するには、次のコマンドを実行します。

sudo bash /tmp/nitro_check_script.sh

注: スクリプトは root ユーザーとして実行するか、sudo を使用して実行する必要があります。それ以外の場合、"This script must be run as root" というエラーメッセージが表示されます。

スクリプトの出力に基づいて、次のアクションを実行します。

拡張ネットワーク機能を有効にし、ENA ドライバーをインストールしたことを確認する

インスタンスで拡張ネットワーク機能が有効化されているかどうかをテストします。拡張ネットワーク機能が有効になっていない場合は、拡張ネットワーク機能を有効にします

ENA ドライバーがインストールされているかどうかを確認するには、次のコマンドを実行します。

sudo modinfo ena |grep -i '^version:' || echo "ENA module not available, try modprobe ena"

ENA ドライバーをインストールしていなかった場合は、最新のドライバーをインストールしてください。手順については、GitHub ウェブサイトの「Linux kernel driver for Elastic Network Adapter (ENA) family」(Elastic Network Adapter (ENA) ファミリー用の Linux カーネルドライバー) を参照してください。

NVMe ドライバーをインストールする

NVMe ボリュームにアクセスするには、NVMe ドライバーをインストールする必要があります。

/etc/fstab ファイル内のマウントポイントにデバイス名を使用したかどうかを確認する

次の手順を実行します。

  1. UUID を使用したかどうかを確認するには、次のコマンドを実行します。

    cat /etc/fstab |grep -iP 'uuid|dev/'

    出力例:

    /dev/nvme0n1p1 / xfs defaults,noatime 1 1

    注: 出力例では、UUID の代わりにデバイス名を使用しています。

  2. UUID を使用しなかった場合は、次のコマンドを実行してデバイス名の UUID を取得します。

    lsblk -f device_name |tail -n 1 |awk '{print $4}'

    注: device_name を実際のデバイス名に置き換えます。

  3. (オプション) /etc/fstab ファイルを編集する前に、次のコマンドを実行してファイルのコピーを作成することをおすすめします。

    sudo cp /etc/fstab /etc/fstab-`date +%d%m%Y`
  4. 次のコマンドを実行して /etc/fstab ファイルを開きます。

    cat /etc/fstab
  5. 次に、デバイス名を UUID に置き換えます。<br id=hardline_break/> ファイル例:

    /dev/nvme0n1p1 / xfs defaults,noatime 1 1

    注: /dev/nvme0n1p1 を UUID に置き換えます。/etc/fstab ファイル内のすべてのデバイス名を必ず UUID に置き換えてください。

  6. ファイルが正常に更新されたことを確認するには、次のコマンドを再実行します。

    cat /etc/fstab

    出力で、UUID に UUID が表示されているかどうかを確認します。<br id=hardline_break/> 出力例:

    UUID=123456-1234-1234-acbd-1234abc1234 / xfs defaults,noatime 1 1

インスタンスタイプを Nitro に戻す

インスタンスを Nitro ベースのインスタンスに変更します

注: 最新の Nitro インスタンスにアップグレードし、古いカーネルまたはドライバーを使用すると、インスタンスのステータスチェックが失敗する可能性があります。その結果、起動エラーや "kernel panic" エラーが発生したり、インスタンスにアクセスできなくなったりします。この問題のトラブルシューティングを行うには、「EC2 インスタンスで発生する「Kernel panic - not syncing」エラーの解決方法を教えてください」を参照してください。

AWS公式更新しました 5ヶ月前
コメントはありません

関連するコンテンツ