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
Centos系统云主机中nvme盘不可用解决方法的更多相关文章
- CentOS系统找不到setup命令工具的解决方法
如果你的CentOS系统中没有setup命令,很有可能是因为你安装CentOS系统时采用了最小化安装(minimal).这时,你执行setup命令时,就会报错: 错误信息: 1[root@localh ...
- CentOS系统时间与现在时间相差8小时解决方法
很多网友在安装完CentOS系统后发现时间与现在时间相差8小时,这是由于我们在安装系统的时选择的时区是上海,而CentOS默认bios时间是utc时间,所以时间相差了8小时.这个时候的bios的时间和 ...
- MS-SQLSERVER中的MSDTC不可用解决方法
今天在本地机直接在触发器里更新还有一台服务器数据时出现: MSDTC不可用 解决的方法: 在windows控制面版-->管理工具-->服务-->Distributed Tra ...
- CentOS编译PHP过程中常见错误信息的解决方法
原文链接:http://www.linuxidc.com/Linux/2014-05/102327.htm ********************************************** ...
- 通过SecureCRT和PuTTY连接臻云CentOS版云主机
原文地址:http://jingyan.baidu.com/article/fa4125acb6648128ac7092dc.html 如何通过SecureCRT和PuTTY工具远程连接臻云CentO ...
- 将html代码部署到阿里云服务器,并进行域名解析,以及在部署过程中遇到的问题和解决方法
本博客主要是说一下,,如何将html代码部署到阿里云服务器,并进行域名解析,以及在部署过程中遇到的问题和解决方法. 1.先在阿里云上购买一台阿里云服务器(ECS云服务器): 2.远程连接上该服务器,在 ...
- win7系统不能用telnet命令的两种解决方法
电脑专业人员对telnet命令都不陌生了,Telnet当成一种通信协议,在日常工作中,经常面对网络问题的人都会用到telnet命令,因为简单有效,可以帮助更快的找出问题.要是在使用过程中碰到win7纯 ...
- 在启动php时,无法启动此程序,由于计算机中丢失MSVCR110.dll的解决方法
在启动php时,运行RunHiddenconsole.exe php-cgi.exe -b 127.0.0.1:9000 -c时,出现错误:无法启动此程序,由于计算机中丢失MSVCR110.dll 方 ...
- XP系统无法进入界面 不断的反复重启-解决方法
XP系统无法进入界面 不断的反复重启-解决方法 XP系统无法进入界面 不断的反复重启-解决方法 一般都是非正常关机导致磁盘受到损坏.需要修复磁盘. 1.插入带PE的u盘,进入PE系统后 2.win+R ...
- VS2012中丢失ArcGIS模板的解决方法
VS2012中丢失ArcGIS模板的解决方法 由于ArcGIS10.0(for .NET)默认是用VS2010作为开发工具的,所以在先安装VS2012后装ArcGIS10.0 桌面版及ArcObjec ...
随机推荐
- 通过WebView2获取HTTP-only cookie
通过WebView2获取HTTP-only cookie可以使用`WebView2.CookieManager`类的方法.以下是一个示例代码,演示如何获取HTTP-only cookie: using ...
- linux 亲测wget安装7.3 liferay流程
liferay wget 7.3版本安装1. 下载软件包 sudo wget https://sourceforge.net/projects/lportal/files/Liferay%20Port ...
- ABC243
ABC224 D 题目大意 有一个九个点的无向图棋盘,上面有八个棋子,一次操作能将一个棋子沿边移到空点上,问将每个棋子移到与它编号相同的点最少几步. 解题思路 考虑使用 BFS. 用 string 存 ...
- cxGrid列的OnValidate事件处理程序
procedure TForm1.cxGrid1DBTableView1AColumnPropertiesValidate(Sender: TObject; var DisplayValue: Var ...
- 微信小程序block的作用
有了block标签过后,你就可以把if 或则 for 语句写在block标签里面; 这样就控制了这一块的逻辑. 个人建议是要是v-if和v-for的都可以写在block上: block并不是一个组件, ...
- oracle数据库 关闭归档模式
-- 1. 连接到数据库 CONNECT / AS SYSDBA; -- 2. 确保数据库处于mount状态 SHUTDOWN IMMEDIATE; STARTUP MOUNT; -- 3. ...
- linux更新软件源 安装docker
vim /etc/aptsources.list 学习参考 https://blog.csdn.net/bskfnvjtlyzmv867/article/details/81044217 # 默认 ...
- STC内部扩展RAM的应用
RAM是用来在程序运行中存放随机变量的数据空间,51单片机默认的内部RAM只有128字节,52单片机增加至256字节,STC89C52增加到512字节,STC89C54.55.58.516等增加到12 ...
- Android Service后台服务进程意外被kill掉之后如何重启
Service组件在android开发中经常用到,经常作为后台服务,需要一直保持运行,负责处理一些不必展示的任务.而一些安全软件,会有结束进程的功能,如果不做Service的保持,就会被其杀掉. 那么 ...
- SpringBoot - [09] Restful风格接口方法&参数
GetMapping.PostMapping.DeleteMapping.PutMapping是SpringBoot中常用的HTTP请求映射注解,它们分别对应HTTP协议中的GET.POST.DELE ...