Centos系统云主机中nvme盘不可用解决方法

本文分享自天翼云开发者社区《Centos系统云主机中nvme盘不可用解决方法》,作者:P****n

问题描述

Linux系统的云主机使用NVMe盘后,出现非预期的慢IO读写,导致系统或者应用程序对于NVMe磁盘的IO操作失败。系统将nvme盘踢出,在系统中通过lsblk查看不到nvme盘,后续的读写操作均失败,从而导致系统和应用程序异常或者业务中断。

问题原因

NVMe驱动中的 io_timeout参数控制了最大能够容忍的IO超时时间,在大部分Linux发行版本中默认配置为30秒。如果IO读写操作的延迟过高,超过了该参数的配置值,则NVMe驱动会返回IO失败。在特定情况下,系统或者应用程序可以对IO操作进行重试。但在某些情况下,可能导致系统或者应用程序对于NVMe磁盘的IO操作失败。系统将nvme盘踢出,在系统中通过lsblk查看不到nvme盘,后续的读写操作均失败,从而导致系统和应用程序异常或者业务中断。

为了减少NVMe磁盘的IO操作超时出现的异常情况,通常会将 io_timeout参数设置为可能的最大值,提高对于IO延迟的容忍度。在新版本的内核中,io_timeout参数的最大值为4,294,967,295,较早版本中为255。不同的版本的内核中,NVMe驱动的内核模块也有所不同,部分内核模块为nvme.ko ,或者部分内核模块为nvme_core.ko,从而完整的参数名称也存在nvme.io_timeout和nvme_core.io_timeout两种可能。

解决方案

1、远程连接CentOS云主机。

2、执行以下命令,查看系统内核是否已经加载了NVMe驱动。

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

系统显示类似如下,如果存在CONFIG_BLK_DEV_NVME=y,则表示该镜像已经加载NVMe驱动。

CONFIG_NVME_CORE=m

CONFIG_BLK_DEV_NVME=y

CONFIG_BLK_DEV_NVME_SCSI=y

CONFIG_NVME_FABRICS=m

CONFIG_NVME_RDMA=m

CONFIG_NVME_FC=m

CONFIG_NVME_TARGET=m

CONFIG_NVME_TARGET_LOOP=m

CONFIG_NVME_TARGET_RDMA=m

CONFIG_NVME_TARGET_FC=m

CONFIG_NVME_TARGET_FCLOOP=m

CONFIG_NVMEM=y

3、在GRUB中添加NVMe相关的nvme timeout参数。

1)执行以下命令,打开grub文件。

vi /etc/default/grub

2)按i键进入编辑模式,确认io_timeout参数的完整参数名称和所能接受的最大值。例如,完整参数名称为nvme_core.io_timeout,所能接受的最大值为 4,294,967,295。则请在GRUB_CMDLINE_LINUX=一行中,添加nvme_core.io_timeout=4294967295 nvme_core.admin_timeout=4294967295参数信息。 添加参数后,文件内容如下图所示:

3)按Esc键退出编辑模式,输入:wq并按Enter键,保存退出文件。

4)根据操作系统的启动方式不同,执行以下适用于您的操作系统的命令,使配置的GRUB生效:

Legacy启动方式

grub2-mkconfig -o /boot/grub2/grub.cfg

UEFI启动方式

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

5)执行以下命令,重启实例,使配置生效。

reboot

6)执行以下命令,确认相关配置已正确传递给内核。

cat /proc/cmdline

系统显示类似如下。

... nvme_core.io_timeout=4294967295 nvme_core.admin_timeout=4294967295

7)执行以下命令,确认NVMe驱动参数已正确配置IO超时参数。

cat /sys/module/nvme_core/parameters/io_timeout

系统显示类似如下。

4294967295

相关推荐
华为云开发者联盟3 个月前
读懂华为开发者空间第一课,让云上开发如此简单
python·鸿蒙·codearts·软件开发·昇腾·云主机
Akamai中国4 个月前
基于容器的云原生,让业务更自由地翱翔云端
分布式·云原生·云计算·云服务·云平台·akamai·云主机
howard200510 个月前
修改云主机配置 - 内存增容
服务器·网络·云主机·内存增容