當您的ECS執行個體需要通過已有的但未安裝NVMe(Non-Volatile Memory Express)驅動的自訂鏡像部署業務,並計劃通過NVMe協議來增強儲存效能時,您可以按照本文操作為已有的自訂鏡像安裝NVMe驅動,才能確保ECS執行個體正常啟動、業務穩定運行。
非易失性儲存空間標準介面NVMe是一種專為固態儲存(如基於快閃記憶體的SSD)設計的高速介面協議,相比SCSI、virtio-blk等傳統驅動協議,它具有速度更快、傳輸頻寬更高的特點。關於NVMe的更多介紹,請參見NVMe概述。
操作環境
您可能在以下情境中會涉及已有自訂鏡像未安裝NVMe驅動的情況,需要按照本文操作:
您是本地製作的自訂鏡像,在匯入阿里雲時通過鏡像檢測功能發現鏡像未安裝NVMe驅動。
在購買支援NVMe協議的ECS執行個體規格時,無法選到自訂鏡像,可能因為鏡像與執行個體規格的NVMe屬性不匹配。
說明支援基於NVMe協議掛載雲端硬碟的執行個體規格類型系列資訊,請參見執行個體規格類型系列。您也可以通過API介面DescribeInstanceTypes中的
NvmeSupport
參數確認執行個體規格類型系列是否支援NVMe。您可以通過API介面DescribeImages中的
NvmeSupport
參數確認鏡像是否支援NVMe。關於建立ECS執行個體時看不到某些鏡像的更多說明,請參見為什麼建立ECS執行個體時看不到某些鏡像?。
操作步驟
通過已有自訂鏡像建立一台ECS執行個體,用於中轉自訂鏡像的資料。
具體操作,請參見使用自訂鏡像建立執行個體。
重要建立的中轉執行個體會產生費用,待新的自訂鏡像建立完成後,建議您及時釋放執行個體,避免持續產生費用。
遠端連線建立ECS執行個體。
具體操作,請參見串連方式概述。
查看建立ECS執行個體是否包含NVMe驅動,並安裝NVMe驅動。
雲助手自動設定
雲助手提供了
ecs_nvme_config
外掛程式,可以協助您快速完成NVMe驅動配置,但是有作業系統限制。運行以下命令,檢查執行個體內是否已安裝雲助手Agent,並檢查用戶端內是否提供了
ecs_nvme_config
外掛程式。acs-plugin-manager --list
如果您運行命令後沒有返回雲助手相關資訊,則需要先在執行個體內安裝雲助手Agent。具體操作,請參見安裝雲助手Agent。
如果返回了雲助手外掛程式列表且存在
ecs_nvme_config
外掛程式,請繼續下一步操作。
使用
ecs_nvme_config
外掛程式,完成NVMe相關的配置。運行以下命令,使用
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;
根據檢查結果中的提示資訊,配置NVMe驅動以及相關參數資訊。
sudo acs-plugin-manager --exec --plugin ecs_nvme_config --params --fix
完成配置後,運行以下命令,重啟執行個體。
sudo reboot
重啟執行個體後,重新檢查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系列)
運行以下命令,查看系統核心是否已經載入了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協議的執行個體規格類型系列上啟動,可以直接執行步驟ⅳ。
如果沒有返回如圖所示的結果,需要依次完成以下操作。
依次運行以下命令,使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安裝dracut工具。
在GRUB中添加NVMe相關的
io_timeout
參數。說明在GRUB中添加NVMe相關的
io_timeout
參數主要是為了應對Linux系統中與NVMe裝置相關的逾時錯誤問題。將逾時值設為最大,系統在處理NVMe裝置的I/O請求時不會因逾時問題而導致故障。大部分Linux發行版本中
io_timeout
參數預設配置為30秒。在新版本的核心中,需要將io_timeout
參數設定為最大值4,294,967,295秒,低核心版本中需要設定為255秒。
運行以下命令,開啟grub檔案。
sudo vi /etc/default/grub
按i鍵進入編輯模式,在
GRUB_CMDLINE_LINUX=
一行中,添加nvme_core.io_timeout=4294967295 nvme_core.admin_timeout=4294967295
參數資訊。添加參數後,檔案內容如下圖所示:
說明如果設定檔中預設已存在相同的參數資訊,則無需再次添加。
按Esc鍵退出編輯模式,輸入
:wq
並按Enter鍵,儲存退出檔案。
運行以下命令,使配置的GRUB生效。
根據ECS執行個體的啟動模式不同,選擇以下適用於您的命令:
BIOS(Legacy)啟動模式
sudo grub2-mkconfig -o /boot/grub2/grub.cfg
UEFI啟動模式
sudo grub2-mkconfig -o /boot/efi/EFI/centos/grub.cfg
說明關於ECS執行個體啟動模式的更多說明,請參見ECS執行個體啟動模式最佳實務。
重新運行以下命令,查看是否有NVMe相關的返回資訊。
sudo lsinitrd /boot/initramfs-`uname -r`.img | grep -i nvme | awk '{print $NF}'
如果有類似於如下圖所示的返回結果,則表示已配置完成,該作業系統可以直接在支援NVMe協議的執行個體規格類型系列上啟動。
手動設定(Ubuntu/Debian系列)
(可選)運行以下命令,查看initrd中包含的NVMe驅動。
lsinitramfs /boot/initrd.img-`uname -r` | grep -i nvme
返回結果如下所示,Ubuntu系列作業系統的initrd中預設已經載入了NVMe驅動。
在GRUB中添加NVMe相關的
io_timeout
參數。說明在GRUB中添加NVMe相關的
io_timeout
參數主要是為了應對Linux系統中與NVMe裝置相關的逾時錯誤問題。將逾時值設為最大,系統在處理NVMe裝置的I/O請求時不會因逾時問題而導致故障。大部分Linux發行版本中
io_timeout
參數預設配置為30秒。在新版本的核心中,需要將io_timeout
參數設定為最大值4,294,967,295秒,低核心版本中需要設定為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
參數資訊。添加參數後,檔案內容如下圖所示:
說明如果設定檔中預設已存在相同的參數資訊,則無需再次添加。
按Esc鍵退出編輯模式,輸入
:wq
並按Enter鍵,儲存退出檔案。
運行以下命令,使配置的GRUB生效。
根據ECS執行個體的啟動模式不同,選擇以下適用於您的命令:
不區分啟動模式(該命令僅適用於Ubuntu系統)
sudo update-grub2
BIOS(Legacy)啟動模式
sudo grub-mkconfig -o /boot/grub/grub.cfg
UEFI啟動模式
sudo grub-mkconfig -o /boot/efi/EFI/debian/grub.cfg
說明關於ECS執行個體啟動模式的更多說明,請參見ECS執行個體啟動模式最佳實務。
通過ECS執行個體建立新的自訂鏡像,建立的自訂鏡像已包含NVMe驅動。
具體操作,請參見使用執行個體建立自訂鏡像。
修改新自訂鏡像的NVMe驅動屬性為支援。
具體操作,請參見修改鏡像的屬性和標籤。
(可選)通過建立已支援NVMe的自訂鏡像重新部署業務,例如建立ECS執行個體。
具體操作,請參見使用自訂鏡像建立執行個體。在建立過程中,ECS執行個體規格請選擇支援NVMe協議的執行個體規格。
說明業務部署完成後,建議您及時刪除舊自訂鏡像,避免資源浪費。具體操作,請參見刪除自訂鏡像。
相關文檔
基於NVMe協議的ECS執行個體規格僅支援掛載ESSD雲端硬碟和ESSD AutoPL雲端硬碟,ESSD雲端硬碟和ESSD AutoPL雲端硬碟可以開啟多重掛載功能,支援同時掛載到多台ECS執行個體上以實現資料共用。更多資訊,請參見雲端硬碟多重掛載功能。
如果ECS執行個體中NVMe雲端硬碟的
io_timeout
參數配置不當, 導致NVMe雲端硬碟不可用問題,您可以參考Linux系統的ECS執行個體中NVMe磁碟IO逾時參數配置不當,導致NVMe磁碟不可用如何處理?處理。