如何透過序列主控台,使用 Linux SysRq 指令來排除虛擬伺服器執行個體無回應的問題?

您的 Linux 虛擬伺服器執行個體沒有回應,且您無法透過 SSH 或直接連線存取該伺服器。

Linux 虛擬伺服器執行個體可能因各種原因而無法回應,例如系統當機、死鎖狀況或與核心相關的問題。 當虛擬伺服器無法回應時,SSH 或直接存取等標準疑難排解方法可能無法奏效。 在這些情況下,串列主控台仍可存取,這使管理員能夠透過「Linux」系統請求( SysRq )鍵與伺服器進行互動。

系統故障、核心異常或程序無回應,都可能導致 Linux 伺服器無法透過常規程序進行存取。 這些問題可能是由軟體錯誤、硬體故障或系統參數設定錯誤所引起。 SysRq 鍵可提供對 Linux 核心的低階存取權限,並能繞過已凍結或無回應的高階程序。 此機制已內建於 Linux 核心中,作為一種安全防護措施,旨在協助使用者執行關鍵系統操作(例如重新啟動伺服器或擷取診斷資訊),即使在其他輸入方式無法使用時亦然。

若要透過串列主機介面使用 SysRq 指令來排除問題並解決此問題,請執行以下步驟:

  1. 透過連線至序列主控台來存取虛擬伺服器執行個體。 如需更多資訊,請參閱「使用 VNC 或序列主控台存取虛擬伺服器執行個體」。

  2. 啟用 SysRq 指令。 如果已啟用 SysRq 指令,您可以跳過此步驟。 若要啟用 SysRq 指令,請設定 kernel.sysrq 參數。

    echo 1 > /proc/sys/kernel/sysrq
    
  3. 從串列主控台發出「SysRq」指令。 以下範例將啟動核心崩潰轉儲(kdump)。

    若要觸發崩潰轉儲,請確保已在「Linux」虛擬伺服器實例上設定了「crashkernel」。 有關操作說明,請參閱「核心當機轉儲機制」。

    1. 按下 Enter 鍵。

    2. 按下 ~ (波浪號)鍵。

      針對 AZERTY 鍵盤:按下 Alt Gr 鍵 + 2 鍵,即可輸入 ~ 鍵。

    3. 按下 B (大寫 B 鍵)。

    4. 按下 c (小寫 c),即可啟動核心崩潰轉儲(kdump)。

    使用 SysRq 指令時,請注意以下事項:

    • 請逐一按下並鬆開每個按鍵。 請勿長按任何鍵。
    • 請在五秒內完成整個操作流程,否則串列主機上將無法偵測到 SysRq 指令。
    • 當您輸入這組指令時,這些字元並不會出現在串列主機上。 系統將它們視為換行字元。 當指令序列執行完畢、超時或遇到無效字元時,系統將恢復正常的控制台輸入。
    • 若操作序列超時(耗時超過五秒),或按下了無效的中斷序列字元,請從步驟 1 重新開始操作。

    範例:

    ENTER + ~ + B + c
    
  4. 分析診斷輸出結果。 先前 SysRq 的核心當機轉儲檔會產生可供您分析的診斷資料。 透過傳送相關的 SysRq 指令,您可以收集有價值的診斷資料,以進行故障排除並重新取得系統控制權。

若要查看「SysRq」指令的鍵盤快捷鍵清單,請先按下 Enter 鍵,接著輸入 ~Bh (波浪號、大寫 B、小寫 h)。 更多詳細資訊,請參閱 Linux Magic System Request Key Hacks - 什麼是「命令」鍵?