博客專欄

        EEPW首頁 > 博客 > Centos系統云主機中nvme盤不可用解決方法

        Centos系統云主機中nvme盤不可用解決方法

        發布人:天翼云開發者 時間:2025-04-03 來源:工程師 發布文章

        本文分享自天翼云開發者社區《Centos系統云主機中nvme盤不可用解決方法》,作者:P****n

         

        問題描述

        Linux系統的云主機使用NVMe盤后,出現非預期的慢IO讀寫,導致系統或者應用程序對于NVMe磁盤的IO操作失敗。系統將nvme盤踢出,在系統中通過lsblk查看不到nvme盤,后續的讀寫操作均失敗,從而導致系統和應用程序異?;蛘邩I務中斷。

        問題原因

        NVMe驅動中的 io_timeout參數控制了最大能夠容忍的IO超時時間,在大部分Linux發行版本中默認配置為30秒。如果IO讀寫操作的延遲過高,超過了該參數的配置值,則NVMe驅動會返回IO失敗。在特定情況下,系統或者應用程序可以對IO操作進行重試。但在某些情況下,可能導致系統或者應用程序對于NVMe磁盤的IO操作失敗。系統將nvme盤踢出,在系統中通過lsblk查看不到nvme盤,后續的讀寫操作均失敗,從而導致系統和應用程序異?;蛘邩I務中斷。

        為了減少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

         


        *博客內容為網友個人發布,僅代表博主個人觀點,如有侵權請聯系工作人員刪除。



        關鍵詞: 云主機

        技術專區

        關閉
        主站蜘蛛池模板: 叶城县| 沙湾县| 双桥区| 北票市| 华安县| 东至县| 吉安县| 洱源县| 青州市| 盈江县| 五台县| 富蕴县| 阿拉善左旗| 千阳县| 鄂伦春自治旗| 乐平市| 余干县| 三明市| 凉城县| 宝清县| 东海县| 垣曲县| 宁夏| 三穗县| 乐山市| 桃源县| 抚州市| 文安县| 木里| 桂平市| 霸州市| 安丘市| 达州市| 长子县| 商丘市| 凤山县| 水富县| 灌南县| 奉化市| 上蔡县| 垦利县|