You need to enable JavaScript to run this app.
导航

在Linux操作系统中调整NVMe硬盘的超时参数

最近更新时间2024.03.15 15:41:53

首次发布时间2024.03.15 15:41:53

本文主要介绍如何在挂载NVMe磁盘的Linux操作系统实例中,配置NVMe磁盘的超时时间。

注意

本实践仅针对Linux操作系统且使用NVMe磁盘的实例有效,例如i3s、ebmg3id、ebmhpcpni2l等规格。更多规格详情可查看实例规格介绍

参数说明

使用NVMe(Nonvolatile Memory Express,非易失性内存标准)磁盘的实例,可通过如下参数配置NVMe磁盘进行I/O命令或Admin命令超时时间。

nvme_core.io_timeout

用于指定设备I/O命令(用于数据传输操作的命令,如读写磁盘)的超时时间,单位秒,默认为30秒。
当驱动检测到I/O操作超时,会唤醒超时Handler(指处理超时错误的机制或模块),根据错误处理策略,决定重试I/O操作、返回失败信息或进行设备恢复。

nvme_core.admin_timeout

用于指定设备Admin命令(用于主机管理和控制SSD操作的命令,如创建I/O的提交队列)的超时时间,单位秒,默认为60秒。
当驱动检测到Admin操作超时,会唤醒超时Handler(指处理超时错误的机制或模块),根据错误处理策略,决定重试I/O操作、返回失败信息或进行设备恢复。

操作场景

提升I/O响应时间

对于需要快速响应的应用程序,您可以适当减小超时时间,提升I/O操作响应速度。

提升资源利用率

若资源紧张,需要提高资源利用率,您可以适当减小超时时间,可以更快地释放超时的I/O操作所占用的资源,以便其他任务或I/O操作可以及时获取资源,提高系统的整体效率。

增加I/O吞吐量

如需提高NVMe磁盘的I/O吞吐量,您可以适当增加超时时间,可以允许更多的I/O操作同时进行,从而充分利用 NVMe 设备的并行处理能力,提高数据传输速度和整体性能。

增加可靠性和数据完整性

对于需要高可靠且需要数据完整的场景,您可以适当增加超时时间,确保I/O操作有足够的时间完成,减少因超时导致的数据丢失或错误。

注意

超时参数原理是增大延时容忍度,即延迟发送abort(中止)命令。当超时时间设置过大,并且磁盘后续也没响应时,会导致在很长一段时间内NVMe磁盘的I/O操作没有被abort(中止),也不会进行重试,进而使得业务程序卡在了该I/O操作中,运行异常。

操作步骤

步骤一:配置超时参数

  1. 登录Linux实例

  2. 执行如下命令,查看grub文件是否已配置超时参数。

    grep -r "timeout" /etc/default/grub
    
    • 若无回显值,请执行如下命令,在grub文件中新增超时参数。

      说明

      请按需将命令中4294967295替换为实际超时时间,单位秒。

      sed -i "/GRUB_CMDLINE_LINUX=/s/\"$/ nvme_core.io_timeout=4294967295 nvme_core.admin_timeout=4294967295 \"/" /etc/default/grub
      
    • 若回显如下所示,请执行如下命令,修改超时参数值。
      1. 执行如下命令,打开grub文件。
        vim /etc/default/grub
        
      2. i键进入编辑模式,修改nvme_core.io_timeoutnvme_core.admin_timeout参数值。

        说明

        请按需修改超时时间,单位秒。

      3. esc键,输入:wq并按回车键,保存并退出文件。
  3. 根据操作系统与启动方式类型,执行如下命令固化超时参数配置。

    • CentOS
      • Legacy启动方式
        grub2-mkconfig -o /boot/grub2/grub.cfg
        
      • UEFI启动方式
        grub2-mkconfig -o /boot/efi/EFI/centos/grub.cfg
        
    • Debian
      • Legacy启动方式
        grub-mkconfig -o /boot/grub2/grub.cfg
        
      • UEFI启动方式
        grub-mkconfig -o /boot/efi/EFI/debian/grub.cfg
        
    • Ubuntu
      • Legacy启动方式
        grub-mkconfig -o /boot/grub2/grub.cfg
        
      • UEFI启动方式
        grub-mkconfig -o /boot/efi/EFI/ubuntu/grub.cfg
        
  4. 执行如下命令重启实例,使配置生效。

    reboot
    

步骤二:验证配置

  • 执行如下命令,查看启动参数信息。

    cat /proc/cmdline | grep "timeout"
    

    如下图所示,实例I/O操作与Admin操作的超时时间均为4294967295秒。

  • 执行如下命令,查看NVMe模块参数信息。

    cat /sys/module/nvme_core/parameters/io_timeout
    cat /sys/module/nvme_core/parameters/admin_timeout
    

    如下图所示,实例I/O操作与Admin操作的超时时间均为4294967295秒。