写点什么

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

  • 2025-04-03
    北京
  • 本文字数:1267 字

    阅读完需:约 4 分钟

本文分享自天翼云开发者社区《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

 

用户头像

还未添加个人签名 2022-02-22 加入

天翼云是中国电信倾力打造的云服务品牌,致力于成为领先的云计算服务提供商。提供云主机、CDN、云电脑、大数据及AI等全线产品和场景化解决方案。

评论

发布
暂无评论
Centos系统云主机中nvme盘不可用解决方法_云主机_天翼云开发者社区_InfoQ写作社区