全部產品
Search
文件中心

:部分ECS執行個體產生crash dump檔案失敗如何處理?

更新時間:Feb 28, 2024

在彈性裸金屬執行個體規格的ECS執行個體中,使用作業系統內建的Kdump服務產生crash dump檔案可能會失敗。本文主要介紹檔案產生失敗的原因以及解決方案。

問題現象

目前已知的問題情境說明如下,該類情境中的ECS執行個體在熱插拔裝置之後,不能成功產生crash dump檔案。

  • 基於6代彈性裸金屬執行個體規格類型系列(包含ebmg6、ebmc6、ebmr6等執行個體規格)的ECS執行個體,在選用以下鏡像時會出現crash dump檔案產生失敗的問題。

    • CentOS 8.3及以下版本

    • Ubuntu 16/18

    • Debian 10

    • 核心版本低於4.19.91-24.al7的Alibaba Cloud Linux 2

  • 基於7代彈性裸金屬執行個體規格類型系列(包含ebmg7、ebmc7、ebmr7等執行個體規格)的ECS執行個體,在選用Debian 10鏡像時會出現crash dump檔案產生失敗的問題。

問題原因

ECS執行個體內Kdump服務在crashkernel階段,塊裝置vdapci_resource資源分派失敗,導致無法成功產生crash dump檔案。造成該問題的根本原因是執行個體規格與作業系統不相容。命令列回顯結果樣本如下圖所示:Kdump

解決方案

您可以通過以下任一方式解決該問題:

  • 方式一:自行升級作業系統核心至5.10版本。

  • 方式二:為作業系統新增以下補丁,並重新構建核心(build kernel)。

    Benjamin Herrenschmidt (1):
      PCI: Don't auto-realloc if we're preserving firmware config
    
    Kelsey Skunberg (1):
      PCI: Make pci_hotplug_io_size, mem_size, and bus_size private
    
    Logan Gunthorpe (1):
      PCI: Don't disable bridge BARs when assigning bus resources
    
    Nicholas Johnson (2):
      PCI: Add "pci=hpmmiosize" and "pci=hpmmioprefsize" parameters
      PCI: Avoid double hpmemsize MMIO window assignment
    說明

    部分核心版本已包含上述的部分補丁,您仍需要將未包含的補丁添加至核心中。例如,Debian 10的4.19核心版本已經包含了上述的第1、3個補丁,但還需要將第2、4、5個補丁添加至核心之後才可以使作業系統正常使用Kdump服務。

除了升級核心版本或為核心打補丁之外,您還需要注意:

對於Debian或Ubuntu作業系統核心,需要調整crashkernel保留記憶體的參數。推薦的參數設定如下:

crashkernel=0M-2G:0M,2G-8G:192M,8G-:256M
說明

部分作業系統鏡像(例如Debian 10)需要調整保留記憶體為384 M或者512 M。如果保留記憶體的值未調大,則會導致Kdump服務在crashkernel階段發生OOM,從而產生crash dump檔案失敗。

以大於384 M的記憶體需要保留256 M的配置為例,調整crashkernel保留記憶體參數的操作說明如下:

  1. 開啟/kdump-tools.cfg檔案。

    vim /etc/default/grub.d/kdump-tools.cfg
  2. i鍵進入編輯模式,將crashkernel參數修改為以下內容。

    GRUB_CMDLINE_LINUX_DEFAULT="$GRUB_CMDLINE_LINUX_DEFAULT crashkernel=384M-:256M"

    修改完成後,按Esc鍵,輸入:wq並按Enter鍵,儲存退出檔案。

  3. 更新GRUB配置。

    update-grub
  4. 重啟ECS執行個體使配置生效。

    建議您在業務低峰時段重啟ECS執行個體,減少因執行個體重啟對實際業務運行產生的影響。重啟ECS執行個體的具體操作,請參見重啟執行個體