すべてのプロダクト
Search
ドキュメントセンター

Elastic Compute Service:カスタムイメージに NVMe ドライバーをインストールする方法

最終更新日:May 30, 2025

既存のカスタムイメージを使用して Elastic Compute Service (ECS) インスタンスを作成し、Non-Volatile Memory Express (NVMe) を使用してストレージのパフォーマンスを向上させる場合は、このトピックで説明されている手順に従って、カスタムイメージに NVMe ドライバーをインストールできます。 これにより、ECS インスタンスが想定どおりに起動し、ビジネスが安定して実行されるようになります。

NVMe は、フラッシュベースの SSD などのソリッドステートストレージ用の高速インターフェースプロトコルです。 NVMe は、Small Computer System Interface (SCSI) や virtio-blk などの従来のドライバープロトコルよりも高速な応答と高い帯域幅を提供します。 NVMe の詳細については、「NVMe プロトコル」をご参照ください。

問題の説明

カスタムイメージに NVMe ドライバーがインストールされていない場合は、次のシナリオで、このトピックで説明されている操作を実行できます。

  • カスタムイメージを Alibaba Cloud にインポートすると、イメージチェック 機能によって、イメージに NVMe ドライバーがインストールされていないことが検出されます。

  • NVMe をサポートする ECS インスタンスを購入する場合、カスタムイメージを選択できません。 この問題は、カスタムイメージの NVMe 属性がインスタンスタイプの NVMe 属性と一致しない場合に発生する可能性があります。

    説明

手順

  1. 既存のカスタムイメージから ECS インスタンスを作成して、カスタムイメージのデータをインスタンスに転送します。

    詳細については、「カスタムイメージを使用してインスタンスを作成する」をご参照ください。

    重要

    作成する中間 ECS インスタンスには課金されます。 中間 ECS インスタンスからカスタムイメージを作成した後、できるだけ早くインスタンスをリリースすることをお勧めします。

  2. 新しい ECS インスタンスに接続します。

    詳細については、「ECS インスタンスへの接続方法」をご参照ください。

  3. ECS インスタンスに NVMe ドライバーがインストールされているかどうかを確認します。 NVMe ドライバーがインストールされていない場合は、ドライバーをインストールします。

    クラウドアシスタントを使用した自動構成

    クラウドアシスタントは、ecs_nvme_config プラグインを提供しており、オペレーティングシステムに基づいて NVMe ドライバーの構成を迅速に完了するのに役立ちます。

    でサポートされているオペレーティング システムecs_nvme_config プラグイン

    • ecs_nvme_config プラグインは、次のオペレーティングシステムをサポートしています。

      • Alibaba Cloud Linux

      • Anolis OS

      • CentOS および CentOS Stream

      • Debian

      • Ubuntu

      • openSUSE

      • SUSE Linux Enterprise Server (SLES)

      • Red Hat Enterprise Linux

      • Fedora

      • Rocky Linux

      • AlmaLinux

    • ecs_nvme_config プラグインは、次のオペレーティングシステムバージョンをサポートしていません。

      • CentOS および Red Hat Enterprise Linux: CentOS 6.6 および Red Hat Enterprise Linux 6.6 より前のバージョン

      • Debian: Debian 9 より前のバージョン

      • Ubuntu: Ubuntu 16 より前のバージョン

      • openSUSE: openSUSE 42 より前のバージョン

      • SLES: SLES 11.4 より前のバージョン

    1. インスタンスに クラウドアシスタントクライアント がインストールされているかどうかを確認します。 インストールされている場合は、クラウドアシスタントクライアントecs_nvme_config プラグインを提供しているかどうかを確認します。

      acs-plugin-manager --list

      image

      • クラウドアシスタントクライアント 情報が返されない場合は、インスタンスに クラウドアシスタントクライアントをインストールする必要があります。

      • クラウドアシスタント プラグインのリストが返され、ecs_nvme_config プラグインが表示されている場合は、次の手順に進みます。

    2. ecs_nvme_config プラグインを使用して、NVMe 関連の設定を構成します。

      1. ecs_nvme_config プラグインを使用して、インスタンスに NVMe モジュールがあるかどうか、およびインスタンスが NVMe モジュールをサポートしているかどうかを確認します。

        sudo acs-plugin-manager --exec --plugin ecs_nvme_config --params --check
        • 次のメッセージが返された場合、NVMe ドライバーはインスタンスにインストールされています。 NVMe ドライバーを構成せずにカスタムイメージを作成できます。

          [SUCCESS]  Summary: Your image can Runnig on nvme instance
        • 次の error メッセージのようなメッセージが返された場合は、次の手順に進みます。

          [ERROR]  1.initrd/initramfs not has nvme module, Please run acs-plugin-manager --exec --plugin ecs_nvme_config --params -f/--fix to enable nvme;
      2. コマンド出力のエラーメッセージに基づいて、NVMe ドライバーと関連パラメーターを構成します。

        sudo acs-plugin-manager --exec --plugin ecs_nvme_config --params --fix
      3. NVMe 関連の設定を構成した後、インスタンスを再起動します。

        sudo reboot
      4. インスタンスを再起動した後、NVMe モジュールが構成されているかどうかを確認します。

        sudo acs-plugin-manager --exec --plugin ecs_nvme_config --params --check

        成功出力の例:

        [OK]  1.initrd/initramfs already contain nvme module;
        
        [OK]  2.fstab file looks fine and does not contain any device names;
        
        [OK]  3.The nvme parameters already included.
        
        [SUCCESS]  Summary: Your image can Runnig on nvme instance

    CentOS または Alibaba Cloud Linux での手動構成

    1. カーネルが NVMe ドライバーを読み込んでいるかどうかを確認します。

      cat /boot/config-`uname -r` | grep -i nvme | grep -v "^#"

      image

      • CONFIG_BLK_DEV_NVME=y メッセージが返された場合、オペレーティングシステムは、NVMe をサポートするインスタンスファミリーのインスタンスで起動できます。 この場合は、手順 3.d に進みます。

      • CONFIG_BLK_DEV_NVME=m メッセージが返された場合は、次の手順を順番に実行します。

    2. 初期 RAM ファイルシステム (initramfs) に NVMe ドライバーが含まれているかどうかを確認します。

      sudo lsinitrd /boot/initramfs-`uname -r`.img | grep -i nvme | awk '{print $NF}'

      image

      • 前の図に示されているコマンド出力が返された場合、オペレーティングシステムは、NVMe をサポートするインスタンスファミリーのインスタンスで起動できます。 この場合は、手順 3.d に進みます。

      • 前の図に示されているコマンド出力が返されない場合は、次の手順を順番に実行します。

    3. NVMe ドライバーをサポートするように initramfs を構成します。

      mkdir -p /etc/dracut.conf.d
      echo 'add_drivers+=" nvme nvme-core "' | sudo tee /etc/dracut.conf.d/nvme.conf > /dev/null
      sudo dracut -v -f
      説明

      オペレーティングシステムに dracut ツールがインストールされていない場合は、sudo yum -y install dracut コマンドを実行して dracut をインストールします。

    4. NVMe 関連の io_timeout パラメーターを GRUB ファイルに追加します。

      説明
      • io_timeout パラメーターは、Linux オペレーティングシステムの NVMe デバイスに関連するタイムアウトエラーを修正するために GRUB ファイルに追加されます。 io_timeout パラメーターを最大値に設定すると、タイムアウトエラーに関係なく、オペレーティングシステムは NVMe デバイスからの I/O リクエストの処理を続行できます。

      • ほとんどの Linux ディストリビューションでは、io_timeout パラメーターのデフォルトは 30 です。単位: 秒。 io_timeout パラメーターを最大値 4,294,967,295 秒に設定できるかどうかを確認するには、echo 4294967295 > /sys/module/nvme_core/parameters/io_timeout または echo 4294967295 > /sys/module/nvme/parameters/io_timeout コマンドを実行します。 -bash: echo: write error: Invalid argument メッセージが返された場合は、パラメーターを最大値 255 秒にのみ設定できます。

      方法 1: grubby コマンドを実行する
      1. オペレーティングシステムが grubby コマンドをサポートしているかどうかを確認します。

        which grubby
        • コマンド出力に grubby コマンドのパス (例: /usr/sbin/grubby) が返された場合、オペレーティングシステムは grubby コマンドをサポートしています。 この場合は、次の手順に進みます。

        • 情報が返されない場合、オペレーティングシステムは grubby コマンドをサポートしていません。 この場合は、方法 2: GRUB 構成ファイルを変更する を使用します。

      2. grubby コマンドを実行して、NVMe 関連の io_timeout パラメーターを追加します。

        sudo grubby --update-kernel=ALL --args="nvme_core.io_timeout=4294967295 nvme_core.admin_timeout=4294967295"
      方法 2: GRUB 構成ファイルを変更する
      1. grub ファイルを開きます。

        sudo vi /etc/default/grub
      2. I キーを押して挿入モードに入ります。 GRUB_CMDLINE_LINUX= 行の最後に、nvme_core.io_timeout パラメーターと nvme_core.admin_timeout パラメーターを追加し、両方を 4294967295 に設定します。

        次の図は、パラメーターを追加する方法の例を示しています。

        image

        説明

        GRUB 構成ファイルに既に上記のパラメーター設定が含まれている場合は、パラメーターを再度追加する必要はありません。

      3. Esc キーを押して挿入モードを終了します。 次に、:wq と入力し、Enter キーを押してファイルを保存して閉じます。

      4. GRUB 構成を適用します。

        ECS インスタンスのブートモードに基づいてコマンドを選択します。

        • レガシー BIOS ブートモード

          sudo grub2-mkconfig -o /boot/grub2/grub.cfg
        • Unified Extensible Firmware Interface (UEFI) ブートモード

          1. GRUB 構成ファイルの内容を表示します。

            cat /boot/efi/EFI/centos/grub.cfg
          2. 前のコマンドの出力に基づいてコマンドを選択します。

            • GRUB 構成ファイルが前のコマンドで指定されたディレクトリとは異なるディレクトリに保存されている場合、コマンド出力には、次の図に示すように、新しいディレクトリ (例: /boot/grub/grub.cfg) が含まれます。 この場合は、次のコマンドを実行して、GRUB 構成を有効にします。

              image

              sudo grub2-mkconfig -o /boot/grub2/grub.cfg
            • GRUB 構成ファイルが前の cat コマンドで指定されたディレクトリに保存されている場合は、次のコマンドを実行して、GRUB 構成を有効にします。

              sudo grub2-mkconfig -o /boot/efi/EFI/centos/grub.cfg
              説明

              ECS インスタンスのブートモードの詳細については、「ECS インスタンスのブートモード」をご参照ください。

    5. NVMe 関連の情報を確認します。

      sudo lsinitrd /boot/initramfs-`uname -r`.img | grep -i nvme | awk '{print $NF}'

      次のコマンド出力が返された場合、構成は完了し、オペレーティングシステムは、NVMe をサポートするインスタンスファミリーのインスタンスで起動できます。

      image

    Ubuntu または Debian での手動構成

    1. (オプション) initrd に含まれる NVMe ドライバーを表示します。

      lsinitramfs /boot/initrd.img-`uname -r` | grep -i nvme

      次のコマンド出力は、NVMe ドライバーが Ubuntu オペレーティングシステムの initrd にロードされていることを示しています。 image

    2. NVMe 関連の io_timeout パラメーターを GRUB ファイルに追加します。

      説明
      • io_timeout パラメーターは、Linux オペレーティングシステムの NVMe デバイスに関連するタイムアウトエラーを修正するために GRUB ファイルに追加されます。 io_timeout パラメーターを最大値に設定すると、タイムアウトエラーに関係なく、オペレーティングシステムは NVMe デバイスからの I/O リクエストの処理を続行できます。

      • ほとんどの Linux ディストリビューションでは、io_timeout パラメーターのデフォルトは 30 です。単位: 秒。 io_timeout パラメーターを最大値 4,294,967,295 秒に設定できるかどうかを確認するには、echo 4294967295 > /sys/module/nvme_core/parameters/io_timeout または echo 4294967295 > /sys/module/nvme/parameters/io_timeout コマンドを実行します。 -bash: echo: write error: Invalid argument メッセージが返された場合は、パラメーターを最大値 255 秒にのみ設定できます。

      1. /etc/default/grub ファイルを開きます。

        sudo vi /etc/default/grub
      2. I キーを押して挿入モードに入ります。 GRUB_CMDLINE_LINUX= 行に、nvme_core.multipathnvme_core.io_timeout、および nvme_core.admin_timeout パラメーターを追加します。 次に、nvme_core.multipath を n に設定し、nvme_core.io_timeoutnvme_core.admin_timeout の両方を 4294967295 に設定します。

        次の図は、パラメーターを示しています。image

        説明

        GRUB ファイルに既に上記のパラメーター設定が含まれている場合は、パラメーターを再度追加する必要はありません。

      3. Esc キーを押して挿入モードを終了します。 次に、:wq と入力し、Enter キーを押してファイルを保存して閉じます。

    3. GRUB 構成を適用します。

      ECS インスタンスのブートモードに基づいて、次のコマンドのいずれかを実行します。

      • 次のコマンドは、ブートモードに関係なく、Ubuntu および Debian オペレーティングシステムに適用できます。

        sudo update-grub2
      • レガシー BIOS ブートモード

        sudo grub-mkconfig -o /boot/grub/grub.cfg
      • UEFI ブートモード

        sudo grub-mkconfig -o /boot/efi/EFI/debian/grub.cfg
      説明

      ECS インスタンスのブートモードの詳細については、「インスタンスのブートモード」をご参照ください。

  4. 作成した ECS インスタンスから新しいカスタムイメージを作成します。 新しいカスタムイメージには、NVMe ドライバーが含まれています。

    詳細については、「インスタンスからカスタムイメージを作成する」をご参照ください。

  5. 新しいカスタムイメージの [NVMe ドライブ] パラメーターを [サポート] に設定します。

    詳細については、「イメージの属性とタグを変更する」をご参照ください。

  6. (オプション) 作成したカスタムイメージを使用して、ビジネスを再デプロイします。 たとえば、カスタムイメージから ECS インスタンスを作成できます。

    詳細については、「カスタムイメージを使用してインスタンスを作成する」をご参照ください。 ECS インスタンスを作成するときは、NVMe をサポートするインスタンスタイプを選択します。

    説明

    ビジネスを再デプロイした後、リソースの浪費を防ぐために、できるだけ早く古いカスタムイメージを削除することをお勧めします。 詳細については、「カスタムイメージを削除する」をご参照ください。

関連情報