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

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

最終更新日:Nov 09, 2025

カスタムイメージを使用して ECS インスタンスにサービスをデプロイし、Non-Volatile Memory Express (NVMe) プロトコルでストレージパフォーマンスを向上させる場合は、このトピックの手順に従ってカスタムイメージに NVMe ドライバーをインストールしてください。

Non-Volatile Memory Express (NVMe) は、フラッシュベースの SSD などのソリッドステートストレージ向けに設計された高速インターフェイスプロトコルです。SCSI や virtio-blk などの従来のストレージプロトコルよりも高速な応答時間と高い帯域幅を提供します。

シナリオ

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

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

  • NVMe プロトコルをサポートするインスタンスタイプの ECS インスタンスを作成するときに、カスタムイメージを選択できません。これは、イメージの NVMe 属性がインスタンスタイプの属性と一致しないことが原因である可能性があります。

    説明

手順

  1. 既存のカスタムイメージから ECS インスタンスを作成します。このインスタンスは中間環境として機能します。次に、インスタンスにリモートで接続します。

    重要

    作成した中間インスタンスには料金が発生します。新しいカスタムイメージが作成された後、継続的な課金を避けるために、速やかにインスタンスをリリースすることをお勧めします。

  2. インスタンスのオペレーティングシステムに基づいて NVMe ドライバーを確認し、インストールします。

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

    クラウドアシスタントは、NVMe ドライブを迅速に設定するのに役立つ ecs_nvme_config プラグインを提供します。ただし、このプラグインにはオペレーティングシステムの制限があります。

    ecs_nvme_config プラグイン: 対応オペレーティングシステム

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

      • Alibaba Cloud Linux

      • Anolis OS

      • CentOS 6.6 以降

      • CentOS Stream

      • Debian 9 以降

      • Ubuntu 16 以降

      • openSUSE 42 以降

      • SUSE Linux Enterprise Server 11.4 以降

      • Red Hat Enterprise Linux

      • Fedora

      • Rocky Linux

      • AlmaLinux

    1. 次のコマンドを実行して、インスタンスに クラウドアシスタントエージェント がインストールされているかどうか、およびクライアントで ecs_nvme_config プラグインが利用可能かどうかを確認します。

      acs-plugin-manager --list

      image

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

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

    2. ecs_nvme_config プラグインを使用して NVMe 設定を完了します。

      1. 次のコマンドを実行して ecs_nvme_config プラグインを使用し、現在のインスタンスに NVMe モジュールが存在するかどうか、および設定可能かどうかを確認します。

        sudo acs-plugin-manager --exec --plugin ecs_nvme_config --params --check
        • 次のメッセージが返された場合、NVMe ドライバーはすでにインスタンスにインストールされています。NVMe 関連の設定を行う必要はなく、カスタムイメージを直接作成できます。

          [SUCCESS]  Summary: Your image can run on an NVMe instance.
        • 結果に次の [ERROR] のようなメッセージが含まれている場合は、次のステップに進む必要があります。

          [ERROR]  1.nvme module missing from initrd/initramfs, 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. 設定が完了したら、次のコマンドを実行してインスタンスを再起動します。

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

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

        成功応答の例を次に示します。

        [OK]  1.initrd/initramfs already contains the nvme module;
        
        [OK]  2.fstab file looks fine and does not contain any device names;
        
        [OK]  3.The nvme parameters are already included.
        
        [SUCCESS]  Summary: Your image can run on an 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 プロトコルをサポートするインスタンスファミリーで直接起動できます。その後、クラウドアシスタントを使用した自動設定に進むことができます。

      • 結果が CONFIG_BLK_DEV_NVME=m の場合は、次の手順を実行します。

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

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

      image

      • 図のような結果が返された場合、オペレーティングシステムは NVMe プロトコルをサポートするインスタンスファミリーのインスタンスで起動できます。直接ステップ d に進むことができます。

      • そのような結果が返されない場合は、次のステップ (ステップ c) に進みます。

    3. 次のコマンドを実行して、initramfs に NVMe ドライバーのサポートを追加します。

      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 を実行してツールをインストールします。

    4. NVMe 関連の io_timeout パラメーターを GRand Unified Bootloader (GRUB) に追加します。

      説明

      GRand Unified Bootloader (GRUB) に io_timeout パラメーターを追加すると、Linux での NVMe デバイスに関連するタイムアウトエラーを防ぐのに役立ちます。このパラメーターを最大値に設定すると、NVMe デバイスの I/O リクエストを処理する際にシステムが失敗するのを防ぎます。

      ほとんどの Linux ディストリビューションでは、io_timeout パラメーターはデフォルトで 30 秒に設定されています。io_timeout パラメーターを設定する前に、echo 4294967295 > /sys/module/nvme_core/parameters/io_timeout または echo 4294967295 > /sys/module/nvme/parameters/io_timeout コマンドを実行して、io_timeout パラメーターを最大値の 4,294,967,295 秒に設定できるかどうかを確認する必要があります。コマンドが -bash: echo: write error: Invalid argument を返した場合、これは現在の Linux バージョンが最大値 255 秒しかサポートしていないことを示します。

      方法 1: grubby コマンドを使用する
      1. システムが grubby コマンドをサポートしているかどうかを確認します。

        which grubby
        • 出力に grubby のパス ( /usr/sbin/grubby など) が表示される場合、システムは grubby をサポートしています。次のステップに進みます。

        • 出力が返されない場合、システムは grubby をサポートしていません。パラメーターを追加するには、方法 2 を参照してください。

      2. grubby コマンドを使用してカーネルパラメーターを追加します。

        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=4294967295 nvme_core.admin_timeout=4294967295 パラメーターを追加します。

        パラメーターを追加すると、ファイルの内容は次のようになります:

        image

        説明

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

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

      4. 次のコマンドを実行して GRUB 設定を適用します。

        ECS インスタンスの インスタンス起動モードに応じて、対応するコマンドを実行します:

        • レガシー BIOS 起動モード

          sudo grub2-mkconfig -o /boot/grub2/grub.cfg
        • UEFI 起動モード

          1. grub 設定ファイルを表示します。

            cat /boot/efi/EFI/centos/grub.cfg
          2. grub 設定ファイルの内容に基づいて、対応するコマンドを実行します。

            • 設定ファイルの内容が、次の図に示すように /boot/grub/grub.cfg などの configfile の別のパスを指定している場合は、次のコマンドを実行して設定を適用します。image

              sudo grub2-mkconfig -o /boot/grub2/grub.cfg
            • それ以外の場合は、次のコマンドを実行して設定を適用します。

              sudo grub2-mkconfig -o /boot/efi/EFI/centos/grub.cfg
    5. 次のコマンドを再度実行して、NVMe ドライバーが initramfs に含まれていることを確認します。

      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

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

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

      説明

      GRand Unified Bootloader (GRUB) に NVMe 関連の io_timeout パラメーターを追加する主な目的は、Linux での NVMe デバイスに関連するタイムアウトエラーを防ぐことです。タイムアウト値を最大に設定すると、NVMe デバイスからの I/O リクエストを処理する際にオペレーティングシステムがタイムアウトにより失敗するのを防ぎます。

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

      1. 次のコマンドを実行して /etc/default/grub ファイルを開きます。

        sudo vi /etc/default/grub
      2. i キーを押して編集モードに入ります。GRUB_CMDLINE_LINUX= 行に、nvme_core.multipath=n nvme_core.io_timeout=4294967295 nvme_core.admin_timeout=4294967295 パラメーターを追加します。

        パラメーターを追加すると、ファイルの内容は次のようになります:image

        説明

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

      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
  3. インスタンスにドライバーをインストールした後、インスタンスから 新しいカスタムイメージを作成します。次に、新しいカスタムイメージのプロパティを変更し、[NVMe ドライバー] プロパティを [サポート] に設定します。

重要

NVMe プロパティを [サポート] に設定しない場合、このカスタムイメージを使用して NVMe 機能を必要とするインスタンスタイプのインスタンスを作成することはできません。

  1. (オプション) カスタムイメージを使用してインスタンスを作成するで説明されているように、NVMe をサポートする新しいカスタムイメージからインスタンスを作成してサービスを再デプロイします。ECS インスタンスを作成するときは、NVMe をサポートするインスタンスタイプを選択します。

説明

サービスデプロイが完了したら、未使用のリソースに対するコストの発生を避けるために、速やかに古いカスタムイメージを削除することをお勧めします。

参考情報