カスタムイメージに NVMe ドライバーサポートを追加すると、ストレージパフォーマンスが向上した NVMe ベースの Elastic Compute Service (ECS) インスタンスタイプで起動できるようになります。
NVMe は、フラッシュベースの SSD などのソリッドステートストレージ向けに設計された高速プロトコルです。SCSI や virtio-blk と比較して、NVMe はより高い速度とより広い帯域幅を提供します。
ユースケース
次の場合には、この手順に従ってください。
-
カスタムイメージを Alibaba Cloud にインポートし、イメージチェック で NVMe ドライバーが見つからないと報告された場合。
-
イメージの NVMe 属性がインスタンスタイプの要件と一致しないため、NVMe をサポートする ECS インスタンスタイプを作成する際にカスタムイメージを選択できない場合。
説明-
NVMe 互換のインスタンスファミリーについては、「インスタンスファミリーの概要」をご参照ください。また、DescribeInstanceTypes API の
NvmeSupportパラメーターで確認することもできます。 -
カスタムイメージが NVMe をサポートしているかどうかを確認するには、DescribeImages API の
NvmeSupportパラメーターを確認してください。 -
ECS インスタンスの作成時に一部のイメージが表示されない場合は、「特定のイメージが見つからない」をご参照ください。
-
操作手順
-
既存のカスタムイメージから ECS インスタンスを起動します。 このインスタンスは、イメージを更新するための中間インスタンスとして使用します。 インスタンスに接続します。
重要中間インスタンスには料金が発生します。継続的な課金を避けるために、新しいカスタムイメージを作成した後、 インスタンスをリリースしてください。
-
インスタンスのオペレーティングシステムに基づいて、NVMe ドライバーを検証およびインストールする方法を選択してください。
コンソールでの設定
-
ECS コンソール - [インスタンス] で、対象のインスタンスを見つけて、その詳細ページに移動します。右上隅にある [すべてのアクション] をクリックし、[NVMe ドライバーのステータスを設定] を選択します。
-
[インストール] をクリックして、NVMe ドライバーをインストールします。システムは自動的に NVMe ドライバーのステータスを [インストール済み] に設定します。

Cloud Assistant を使用した自動設定
Cloud Assistant は、NVMe ドライバーを迅速に設定するための
ecs_nvme_configプラグインを提供します。このプラグインは、特定のオペレーティングシステムのみをサポートしています。-
Cloud Assistant Agent がインストールされているか、
ecs_nvme_configプラグインが利用可能かを確認します:acs-plugin-manager --list
-
Cloud Assistant 関連の出力が表示されない場合は、まず Cloud Assistant Agent をインストールしてください。
-
プラグインリストに
ecs_nvme_configが含まれている場合は、次の手順に進みます。
-
-
ecs_nvme_configプラグインを使用して、NVMe ドライバーを設定します。-
ecs_nvme_configプラグインを使用して、NVMe モジュールが存在し、設定可能かどうかを確認します:sudo acs-plugin-manager --exec --plugin ecs_nvme_config --params --check-
出力に次のメッセージが含まれている場合、NVMe ドライバーはすでにインストールされています。カスタムイメージの作成に進んでください。
[SUCCESS] Summary: Your image can running 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;
-
-
チェック結果に基づいて NVMe ドライバーを設定します:
sudo acs-plugin-manager --exec --plugin ecs_nvme_config --params --fix -
設定が完了したら、インスタンスを再起動してください。
sudo reboot -
インスタンスの再起動後、設定が成功したことを確認します:
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 running on nvme instance -
ドライバーをインストールしたインスタンスから新しいカスタムイメージを作成します。 次に、 新しいカスタムイメージの属性を変更 し、 [NVMe ドライバー] 属性を [サポート] に設定します。
重要NVMe ドライバー属性を
Supportedに設定しない場合、システムはイメージを NVMe 互換として認識しません。このイメージからインスタンスを作成する際に、NVMe 対応のインスタンスタイプを選択できなくなります。
-
手動設定 (CentOS/Alibaba Cloud Linux)
-
カーネルが NVMe ドライバーをロードしているかどうかを確認します:
cat /boot/config-`uname -r` | grep -i nvme | grep -v "^#"
-
出力に
CONFIG_BLK_DEV_NVME=yが含まれている場合、 オペレーティングシステムは NVMe 対応のインスタンスファミリーで直接起動できます。コンソールでの設定に進んでください。 -
出力に
CONFIG_BLK_DEV_NVME=mが含まれている場合は、次の手順を実行してください。
-
-
initramfs に NVMe ドライバーが含まれているかどうかを確認します:
sudo lsinitrd /boot/initramfs-`uname -r`.img | grep -i nvme | awk '{print $NF}'
-
出力が図と一致する場合、 オペレーティングシステムは NVMe 対応のインスタンスファミリーで起動できます。手順 d に進んでください。
-
出力が返されない場合は、手順 c を実行してください。
-
-
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 を実行してインストールしてください。
-
GRUB に NVMe の
io_timeoutパラメーターを追加してください。説明GRUB に NVMe の
io_timeoutパラメーターを追加するのは、デバイスのタイムアウトによる I/O 障害を防ぐためです。この値をサポートされている最大値に設定すると、システムは早期に失敗することなく 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 を使用したパラメーターの追加
-
grubbyが利用可能かどうかを確認します:which grubby-
出力に
grubbyへのパス (例:/usr/sbin/grubby) が含まれている場合、 システムはgrubbyをサポートしています。次の手順に進んでください。 -
出力が表示されない場合、 システムは
grubbyをサポートしていません。 代わりに方法 2 を使用してください。
-
-
grubbyを使用してカーネルパラメーターを追加します:前の手順の確認結果に基づいて、io_timeoutの値を設定します。システムがサポートしている場合は4294967295を、サポートしていない (Invalid argumentが返された) 場合は255を使用してください。以下のコマンド例では4294967295を使用しています。sudo grubby --update-kernel=ALL --args="nvme_core.io_timeout=4294967295 nvme_core.admin_timeout=4294967295"
方法 2:GRUB 設定ファイルを編集してパラメーターを追加
-
grub ファイルを開きます:
sudo vi /etc/default/grub -
i キーを押して挿入モードに入り、
GRUB_CMDLINE_LINUX=行を見つけて、nvme_core.io_timeout=4294967295 nvme_core.admin_timeout=4294967295パラメーターを追加します。 前の手順の確認結果に基づいて、io_timeoutの値を設定します。システムがサポートしている場合は4294967295を、サポートしていない (Invalid argumentが返された) 場合は255を使用してください。以下の例では4294967295を使用しています。パラメーター追加後のファイル内容:
説明これらのパラメーターが設定ファイルにすでに存在する場合は、 再度追加しないでください。
-
Esc キーを押して挿入モードを終了し、
:wqと入力して Enter キーを押し、 ファイルを保存して閉じます。 -
GRUB 設定を適用します。
インスタンス起動モード に一致するコマンドを選択します:
-
レガシー BIOS 起動モード
sudo grub2-mkconfig -o /boot/grub2/grub.cfg -
UEFI 起動モード
-
GRUB 設定ファイルを表示します:
# CentOS の場合、次を実行します: cat /boot/efi/EFI/centos/grub.cfg # Alibaba Cloud Linux の場合、次を実行します: cat /boot/efi/EFI/alinux/grub.cfg -
出力に基づいて適切なコマンドを実行します:
-
設定ファイルが別の設定ファイル (例:
/boot/grub/grub.cfg) を指している場合は、 次を実行してください:
sudo grub2-mkconfig -o /boot/grub2/grub.cfg -
それ以外の場合は、 システムに適したコマンドを実行してください:
# CentOS の場合 sudo grub2-mkconfig -o /boot/efi/EFI/centos/grub.cfg # Alibaba Cloud Linux の場合 sudo grub2-mkconfig -o /boot/efi/EFI/alinux/grub.cfg
-
-
-
-
ドライバーをインストールしたインスタンスから新しいカスタムイメージを作成します。 次に、 新しいカスタムイメージの属性を変更 し、 [NVMe ドライバー] 属性を [サポート] に設定します。
重要NVMe ドライバー属性を Supported に設定しない場合、システムはイメージを NVMe 互換として認識しません。このイメージからインスタンスを作成する際に、NVMe 対応インスタンスタイプを選択できなくなります。
-
-
NVMe 関連の出力を確認します:
sudo lsinitrd /boot/initramfs-`uname -r`.img | grep -i nvme | awk '{print $NF}'コマンドがドライバーファイル名 (例:nvme.ko) を返した場合、 設定は完了です。 これで、 オペレーティングシステムは NVMe 対応の ECS インスタンスタイプで起動できます。

手動設定 (Ubuntu/Debian)
-
(任意) initrd に NVMe ドライバーが含まれているかどうかを確認します:
lsinitramfs /boot/initrd.img-`uname -r` | grep -i nvme次の出力は、Ubuntu がデフォルトで initrd に NVMe ドライバーをロードすることを示しています。

-
GRUB に NVMe の
io_timeoutパラメーターを追加します。説明GRUB に NVMe の
io_timeoutパラメーターを追加するのは、デバイスのタイムアウトによる I/O 障害を防ぐためです。この値をサポートされている最大値に設定すると、システムは早期に失敗することなく 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 秒しかサポートしていません。-
/etc/default/grub ファイルを開きます:
sudo vi /etc/default/grub -
i キーを押して編集モードに入り、
GRUB_CMDLINE_LINUX=行に次のパラメーターを追加します:nvme_core.multipath=n nvme_core.io_timeout=4294967295 nvme_core.admin_timeout=4294967295。 前の手順の確認結果に基づいて、io_timeoutの値を設定します。システムがサポートしている場合は4294967295を、サポートしていない (Invalid argumentが返された) 場合は255を使用してください。以下の例では4294967295を使用しています。パラメーター追加後のファイル内容:
説明これらのパラメーターが設定ファイルにすでに存在する場合は、 再度追加しないでください。
-
Esc キーを押して挿入モードを終了し、
:wqと入力して Enter キーを押し、 ファイルを保存して閉じます。
-
-
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
-
-
ドライバーをインストールしたインスタンスから新しいカスタムイメージを作成します。 次に、 新しいカスタムイメージの属性を変更 し、 [NVMe ドライバー] 属性を [サポート] に設定します。
重要NVMe ドライバー属性を
Supportedに設定しないと、システムはイメージが NVMe 互換であると認識しません。このイメージからインスタンスを作成する際に、NVMe 対応のインスタンスタイプを選択できなくなります。
-
-
(任意) 新しい NVMe 互換のカスタムイメージを使用してワークロードを再デプロイします。 たとえば、 カスタムイメージまたは共有イメージからインスタンスを作成 し、 NVMe 互換のインスタンスタイプを選択します。
デプロイを確認した後、 元のカスタムイメージを削除 して、 アイドルリソースに対する課金を回避してください。
関連ドキュメント
-
NVMe ベースの ECS インスタンスタイプは、ESSD および ESSD AutoPL ディスクのみをサポートします。 これらのディスクはマルチアタッチをサポートしており、複数の ECS インスタンスに同時にアタッチできます。詳細については、「複数の ECS インスタンスへのクラウドディスクのアタッチ (マルチアタッチ)」をご参照ください。
-
不適切な
io_timeout設定が原因で Linux ECS インスタンス上の NVMe ディスクが利用できなくなった場合は、 「Linux ECS インスタンス上の NVMe ディスクが無効な I/O タイムアウトパラメーターが原因で利用できなくなった場合の対処方法」をご参照ください。