部分实例规格族支持基于NVMe协议挂载云盘(例如ecs.g7se、ecs.c7se、ecs.r7se等),如果您需要在该类实例规格族上使用自定义镜像启动ECS实例,且需要保证实例稳定运行,则您在创建自定义镜像前,需要在对应的操作系统中进行NVMe相关的配置操作。
背景信息
支持基于NVMe协议挂载云盘的实例规格族信息,请参见实例规格族。
在您完成NVMe相关配置并创建自定义镜像前,建议您先为操作系统所在实例的系统盘以及数据盘创建快照,备份数据。更多信息,请参见创建一个云盘快照。
本文提供了如何在以下操作系统中进行NVMe相关的配置操作:
-
CentOS
-
Debian
-
Ubuntu
-
SUSE Linux Enterprise Server(SLES)
此外,阿里云云助手提供了自动化插件,如果您的操作系统符合云助手插件的支持范围,则您也可以使用云助手插件自动进行NVMe相关的配置操作。具体操作,请参见使用云助手插件自动化配置。
CentOS
-
远程连接待创建自定义镜像的CentOS实例。
具体操作,请参见连接方式概述。
-
根据您的操作系统的配置信息,完成NVMe相关的配置。
-
运行以下命令,查看系统内核是否已经加载了NVMe驱动。
cat /boot/config-`uname -r` | grep -i nvme | grep -v "^#"
返回结果如下所示,如果
CONFIG_BLK_DEV_NVME=y
则表示该操作系统可以直接在支持NVMe协议的实例规格族上启动,您需要跳过后续的步骤ⅱ、步骤ⅲ,直接进行步骤ⅳ的参数配置。否则,您需要依次完成以下操作步骤。 -
运行以下命令,查看initramfs中是否包含NVMe驱动。
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 nvme-fabrics nvme-fc nvme-rdma nvme-loop nvmet nvmet-fc nvme-tcp "' >/etc/dracut.conf.d/nvme.conf
dracut -v -f
说明
如果您的操作系统没有安装dracut工具,您需要先运行yum -y install dracut安装dracut工具。
-
在GRUB中添加NVMe相关的nvme timeout参数。
-
运行以下命令,打开grub文件。
vi /etc/default/grub
-
按i键进入编辑模式,在
GRUB_CMDLINE_LINUX=
一行中,添加nvme_core.io_timeout=4294967295 nvme_core.admin_timeout=4294967295
参数信息。添加参数后,文件内容如下图所示:
说明
如果配置文件中默认已存在相同的参数信息,则无需再次添加。
-
按Esc键退出编辑模式,输入
:wq
并按Enter键,保存退出文件。
-
-
运行以下命令,使配置的GRUB生效。
根据操作系统的启动方式不同,选择以下适用于您的操作系统的命令:
-
Legacy启动方式
grub2-mkconfig -o /boot/grub2/grub.cfg
-
UEFI启动方式
grub2-mkconfig -o /boot/efi/EFI/centos/grub.cfg
-
-
重新运行以下命令,查看是否有NVMe相关的返回信息。
lsinitrd /boot/initramfs-`uname -r`.img | grep -i nvme | awk '{print $NF}'
如果有类似于如下图所示的返回结果,则表示该操作系统可以直接在支持NVMe协议的实例规格族上启动。
-
-
为实例创建自定义镜像。
当您在操作系统中完成了NVMe相关的配置后,即可为对应的实例创建自定义镜像。具体操作以及操作前的注意事项,请参见使用实例创建自定义镜像。
说明
如果您是在本地环境中自行创建的自定义镜像,可以通过导入镜像功能将自定义镜像导入云上。具体操作,请参见Linux镜像导入流程。
创建自定义镜像需要一定的时间,您需要等待自定义镜像成功创建并处于可用状态后,再执行下一步。
-
通过自定义镜像创建新的ECS实例。
通过自定义镜像创建ECS实例的具体操作,请参见使用自定义镜像创建实例。在创建过程中,实例规格请设置为您需要的支持基于NVMe协议挂载云盘的实例规格。
-
远程连接新建的ECS实例。
具体操作,请参见连接方式概述。
-
在新建的ECS实例内,依次运行以下命令,查看NVMe相关配置是否正常。
-
运行以下命令,查看支持NVMe协议的云盘信息。
lsblk
-
运行以下命令,查看/proc/cmdline文件中是否存在nvme timeout参数的相关信息。
cat /proc/cmdline
操作示例的返回结果如下,表示自定义镜像已成功适配NVMe系统盘。
-
Debian
-
远程连接待创建自定义镜像的Debian实例。
具体操作,请参见连接方式概述。
-
完成NVMe相关的配置。
-
运行以下命令,查看initrd中包含的NVMe驱动。
Debian操作系统的initrd中默认已经加载了NVMe驱动。
lsinitramfs /boot/initrd.img-`uname -r` | grep -i nvme
返回结果如下所示:
-
在GRUB中添加NVMe相关的nvme timeout参数。
-
运行以下命令,打开/etc/default/grub文件。
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生效。
根据操作系统的启动方式不同,选择以下适用于您的操作系统的命令:
-
Legacy启动方式
grub-mkconfig -o /boot/grub/grub.cfg
-
UEFI启动方式
grub-mkconfig -o /boot/efi/EFI/debian/grub.cfg
说明
除以上方式外,您还可以选择Debian系统提供的脚本使配置的GRUB生效,运行脚本的命令如下所示。该脚本不区分操作系统的启动方式,适用于Legacy或UEFI启动方式。
update-grub2
-
-
-
为实例创建自定义镜像。
当您在操作系统中完成了NVMe相关的配置后,即可为对应的实例创建自定义镜像。具体操作以及操作前的注意事项,请参见使用实例创建自定义镜像。
说明
如果您是在本地环境中自行创建的自定义镜像,可以通过导入镜像功能将自定义镜像导入云上。具体操作,请参见Linux镜像导入流程。
创建自定义镜像需要一定的时间,您需要等待自定义镜像成功创建并处于可用状态后,再执行下一步。
-
通过自定义镜像创建新的ECS实例。
通过自定义镜像创建ECS实例的具体操作,请参见使用自定义镜像创建实例。在创建过程中,实例规格请设置为您需要的支持基于NVMe协议挂载云盘的实例规格。
-
远程连接新建的ECS实例。
具体操作,请参见连接方式概述。
-
在新建的ECS实例内,依次运行以下命令,查看NVMe相关配置是否正常。
-
运行以下命令,查看支持NVMe协议的云盘信息。
lsblk
-
运行以下命令,查看/proc/cmdline文件中是否存在nvme timeout参数的相关信息。
cat /proc/cmdline
操作示例的返回结果如下,表示自定义镜像已成功适配NVMe系统盘。
-
Ubuntu
-
远程连接待创建自定义镜像的Ubuntu实例。
具体操作,请参见连接方式概述。
-
完成NVMe相关的配置。
-
运行以下命令,查看initrd中包含的NVMe驱动。
Ubuntu操作系统的initrd中默认已经加载了NVMe驱动。
lsinitramfs /boot/initrd.img-`uname -r` | grep -i nvme
返回结果如下所示:
-
在GRUB中添加NVMe相关的nvme timeout参数。
-
运行以下命令,打开/etc/default/grub文件。
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生效。
根据操作系统的启动方式不同,选择以下适用于您的操作系统的命令:
-
Legacy启动方式
grub-mkconfig -o /boot/grub/grub.cfg
-
UEFI启动方式
grub-mkconfig -o /boot/efi/EFI/ubuntu/grub.cfg
说明
除以上方式外,您还可以选择Ubuntu系统提供的脚本使配置的GRUB生效,运行脚本的命令如下所示。该脚本不区分操作系统的启动方式,适用于Legacy或UEFI启动方式。
update-grub2
-
-
-
为实例创建自定义镜像。
当您在操作系统中完成了NVMe相关的配置后,即可为对应的实例创建自定义镜像。具体操作以及操作前的注意事项,请参见使用实例创建自定义镜像。
说明
如果您是在本地环境中自行创建的自定义镜像,可以通过导入镜像功能将自定义镜像导入云上。具体操作,请参见Linux镜像导入流程。
创建自定义镜像需要一定的时间,您需要等待自定义镜像成功创建并处于可用状态后,再执行下一步。
-
通过自定义镜像创建新的ECS实例。
通过自定义镜像创建ECS实例的具体操作,请参见使用自定义镜像创建实例。在创建过程中,实例规格请设置为您需要的支持基于NVMe协议挂载云盘的实例规格。
-
远程连接新建的ECS实例。
具体操作,请参见连接方式概述。
-
在新建的ECS实例内,依次运行以下命令,查看NVMe相关配置是否正常。
-
运行以下命令,查看支持NVMe协议的云盘信息。
lsblk
-
运行以下命令,查看/proc/cmdline文件中是否存在nvme timeout参数的相关信息。
cat /proc/cmdline
操作示例的返回结果如下,表示自定义镜像已成功适配NVMe系统盘。
-
SUSE Linux Enterprise Server(SLES)
-
远程连接待创建自定义镜像的SLES实例。
具体操作,请参见连接方式概述。
-
根据您的操作系统的配置信息,完成NVMe相关的配置。
-
运行以下命令,查看系统内核是否已经加载了内核驱动。
cat /boot/config-`uname -r` | grep -i nvme | grep -v "^#"
返回结果如下所示,如果
CONFIG_BLK_DEV_NVME=y
则表示该操作系统可以直接在支持NVMe协议的实例规格族上启动,您需要跳过后续的步骤ⅱ、步骤ⅲ,直接进行步骤ⅳ的参数配置。否则,您需要依次完成以下操作步骤。 -
运行以下命令,查看initrd中是否包含NVMe驱动。
lsinitrd /boot/initrd-`uname -r` | grep -i nvme | awk '{print $NF}'
如果有类似于如下图所示的返回结果,则表示该操作系统可以直接在支持NVMe协议的实例规格族上启动,您需要跳过后续的步骤ⅲ,直接进行步骤ⅳ的参数配置。否则,您需要依次完成以下操作步骤。
-
依次运行以下命令,使initrd支持NVMe驱动。
mkdir -p /etc/dracut.conf.d
echo 'add_drivers+=" nvme nvme-core nvme-fabrics nvme-fc nvme-rdma nvme-loop nvmet nvmet-fc nvme-tcp "' >/etc/dracut.conf.d/nvme.conf
dracut -v -f
说明
如果您的操作系统没有安装dracut工具,您需要运行zypper install -y dracut安装dracut工具。
-
在GRUB中添加NVMe相关的nvme timeout参数。
-
运行以下命令,打开grub文件。
vi /etc/default/grub
-
按i键进入编辑模式,在
GRUB_CMDLINE_LINUX=
一行中,添加nvme_core.io_timeout=4294967295 nvme_core.admin_timeout=4294967295
参数信息。添加参数后,文件内容如下图所示:
说明
如果配置文件中默认已存在相同的参数信息,则无需再次添加。
-
按Esc键退出编辑模式,输入
:wq
并按Enter键,保存退出文件。
-
-
运行以下命令,使配置的GRUB生效。
根据操作系统的启动方式不同,选择以下适用于您的操作系统的命令:
-
Legacy启动方式
grub2-mkconfig -o /boot/grub2/grub.cfg
-
UEFI启动方式
grub2-mkconfig -o /boot/efi/EFI/sles/grub.cfg
-
-
重新运行以下命令,查看是否有NVMe相关的返回信息。
lsinitrd /boot/initrd-`uname -r` | grep -i nvme | awk '{print $NF}'
如果有类似于如下图所示的返回结果,则表示该操作系统可以直接在支持NVMe协议的实例规格族上启动。
-
-
为实例创建自定义镜像。
当您在操作系统中完成了NVMe相关的配置后,即可为对应的实例创建自定义镜像。具体操作以及操作前的注意事项,请参见使用实例创建自定义镜像。
说明
如果您是在本地环境中自行创建的自定义镜像,可以通过导入镜像功能将自定义镜像导入云上。具体操作,请参见Linux镜像导入流程。
创建自定义镜像需要一定的时间,您需要等待自定义镜像成功创建并处于可用状态后,再执行下一步。
-
通过自定义镜像创建新的ECS实例。
通过自定义镜像创建ECS实例的具体操作,请参见使用自定义镜像创建实例。在创建过程中,实例规格请设置为您需要的支持基于NVMe协议挂载云盘的实例规格。
-
远程连接新建的ECS实例。
具体操作,请参见连接方式概述。
-
在新建的ECS实例内,依次运行以下命令,查看NVMe相关配置是否正常。
-
运行以下命令,查看支持NVMe协议的云盘信息。
lsblk
-
运行以下命令,查看/proc/cmdline文件中是否存在nvme timeout参数的相关信息。
cat /proc/cmdline
操作示例的返回结果如下,表示自定义镜像已成功适配NVMe系统盘。
-
使用云助手插件自动化配置
云助手提供了ecs_nvme_config
插件,帮助您快速完成操作系统内NVMe相关的配置。ecs_nvme_config
插件目前支持以下操作系统:
-
Alibaba Cloud Linux
-
Anolis OS
-
CentOS/CentOS Stream
-
Debian
-
Ubuntu
-
OpenSUSE
-
SUSE Linux Enterprise Server
-
Red Hat Enterprise Linux
-
Fedora
-
Rocky Linux
-
AlmaLinux
不支持ecs_nvme_config
插件的操作系统版本信息:
-
CentOS/Red Hat Enterprise Linux:低于6.6的操作系统版本
-
Debian:低于9的操作系统版本
-
Ubuntu:低于16的操作系统版本
-
OpenSUSE:42操作系统版本
-
SUSE Linux Enterprise Server:低于11.4的操作系统版本
-
远程连接待创建自定义镜像的实例。
具体操作,请参见连接方式概述。
-
运行以下命令,检查实例内是否已安装云助手Agent,并检查客户端内是否提供了
ecs_nvme_config
插件。acs-plugin-manager --list
如果已安装云助手Agent,则会返回如下图所示的信息。如果您运行命令后没有返回云助手相关信息,则需要先在实例内安装云助手Agent。具体操作,请参见安装云助手Agent。
如果您可以查看到返回的云助手插件列表,但插件列表中没有
ecs_nvme_config
插件,则表示该插件在当前的地域和可用区下没有发布。您需要根据不同的操作系统,选择适用的手动配置方式,进行NVMe相关的配置操作。-
CentOS
-
Debian
-
Ubuntu
-
SUSE Linux Enterprise Server(SLES)
如果您的实例内已安装云助手Agent,且存在
ecs_nvme_config
插件,请继续下一步。 -
-
使用
ecs_nvme_config
插件,完成NVMe相关的配置。-
运行以下命令,使用
ecs_nvme_config
插件检查当前实例内是否有NVMe模块,以及是否可以配置NVMe模块。acs-plugin-manager --exec --plugin ecs_nvme_config --params --check
返回结果说明:
-
如果返回结果中存在如下提示,则表示您无需进行NVMe相关的配置,可直接创建自定义镜像。
[SUCCESS] Summary: Your image can Runnig on nvme instance
-
如果返回结果中存在
[ERROR]
相关提示,则您需要继续执行下一步操作。
-
-
根据检查结果中的提示信息,配置NVMe驱动以及相关参数信息。
例如,检查结果中提示如下信息:
[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相关的配置。
acs-plugin-manager --exec --plugin ecs_nvme_config --params --fix
-
完成配置后,运行以下命令,重启实例。
reboot
-
重启实例后,重新检查NVMe模块是否配置成功。
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
-
-
为实例创建自定义镜像。
当您在操作系统中完成了NVMe相关的配置后,即可为对应的实例创建自定义镜像。具体操作以及操作前的注意事项,请参见使用实例创建自定义镜像。
说明
如果您是在本地环境中自行创建的自定义镜像,可以通过导入镜像功能将自定义镜像导入云上。具体操作,请参见Linux镜像导入流程。
创建自定义镜像需要一定的时间,您需要等待自定义镜像成功创建并处于可用状态后,再执行下一步。
-
通过自定义镜像创建新的ECS实例。
通过自定义镜像创建ECS实例的具体操作,请参见使用自定义镜像创建实例。在创建过程中,实例规格请设置为您需要的支持基于NVMe协议挂载云盘的实例规格。
-
远程连接新建的ECS实例。
具体操作,请参见连接方式概述。
-
在新建的ECS实例内,依次运行以下命令,查看NVMe相关配置是否正常。
-
运行以下命令,查看支持NVMe协议的云盘信息。
lsblk
-
运行以下命令,查看/proc/cmdline文件中是否存在nvme timeout参数的相关信息。
cat /proc/cmdline
操作示例的返回结果如下,表示自定义镜像已成功适配NVMe系统盘。
-
腾讯云1折,限时活动,即将结束: 马上收藏
同尘科技为腾讯云授权服务中心。
购买腾讯云产品享受折上折,更有现金返利。同意关联立享优惠
转转请注明出处:https://www.yunxiaoer.com/152560.html