共用方式為


Azure Linux VM 中的核心異常

適用於:✔️ Linux VM

本文討論可能導致核心異常的多個條件,並提供疑難解答指引。

一般而言,核心異常是核心無法正確載入的情況,因此系統無法開機。 當核心遇到一種狀況時,就會發生另一種形式的核心異常狀況,它不知道如何藉由停止來處理及保護自己。

必要條件

請確定 已在Linux VM中啟用序列主控台 並正常運作。

如何識別核心異常狀況?

使用 Azure 入口網站,在開機診斷刀鋒視窗、序列控制台刀鋒視窗或 AZ CLI 中檢視 VM 的序列控制台記錄輸出,以識別特定的核心異常字串。

核心異常看起來類似下面的輸出,且會顯示在序列控制台記錄檔的結尾:

Probing EDD (edd=off to disable)... ok
Memory KASLR using RDRAND RDTSC...
[  300.206297] Kernel panic - xxxxxxxx
[  300.207216] CPU: 1 PID: 1 Comm: swapper/0 Tainted: G               ------------ T 3.xxx.x86_64 #1

一些最常見的核心異常事件:

恐慌訊息 原因
糟糕: 0000 [#1] SMP “ (檢查記錄以取得詳細數據) 系統因取值錯誤而造成系統恐慌。
SysRq:觸發當機傾印 核心傾印是以 sysrq-c 起始,或透過將 c 回應至 /proc/sysrq-trigger 來起始。
pathname/filename>:<line number> 的 <kernel BUG! 此格式是失敗 BUG 檢查的標準(就像 ASSERT 一樣,但邏輯是反轉的)。 檔名和行號會指出哪個 BUG 檢查失敗。
核心異常 - 未同步處理:軟鎖:已停止工作 軟鎖定偵測器發現 CPU 未在軟鎖定閾值內排程監視程式工作。
核心異常 - 未同步處理:監視程序偵測到 CPU 0 上的硬式 LOCKUP 硬式鎖定偵測器發現 CPU 在硬式鎖定閾值內未收到任何 hrtimer 中斷。
核心異常 - 未同步處理:hung_task:封鎖的工作 已停止的工作監視程序偵測到至少有一個工作處於無法中斷狀態,超過封鎖的工作逾時值。
核心異常 - 未同步處理:記憶體不足。 已選取panic_on_oom 系統已用盡記憶體和交換,並被迫開始終止進程以釋放記憶體(而非預設行為)。
核心異常 - 未同步處理:記憶體不足,且沒有可終止的進程... 系統已用盡記憶體和交換,並一直在終止進程以釋放記憶體,但已用盡進程來終止。
核心異常 - 未同步處理:發生 NMI,請參閱整合式管理記錄以取得詳細數據。 監視程式截獲了 NMI (不可遮罩的中斷)。
核心異常 - 未同步處理:NMI IOCK 錯誤:未繼續 系統從硬體收到 IO 檢查 NMI(不是記憶體同位錯誤),並已設定kernel.panic_on_io_nmi(不是預設值)。
核心異常 - 未同步處理:NMI:未繼續 系統收到 NMI(硬體或記憶體同位錯誤),並已設定kernel.panic_on_unrecovered_nmi(不是預設值)。
核心異常 - 未同步處理:nmi 監視程式 系統收到 NMI,並已設定kernel.panic_on_timeout或kernel.panic_on_oops(而非預設值)。
核心異常 - 未同步處理:嚴重計算機檢查 已針對嚴重狀況引發電腦檢查例外狀況事件。
核心恐慌 - 未同步處理:嘗試終止 init! init進程是第一個要啟動且不應該結束的進程。
核心異常 - 未同步處理:VFS:無法在未知區塊上掛接根 fs(0,0) 假設核心會使用 initramfs 掛接 rootfs。 當核心沒有 initramfs 時,就會發生此錯誤。

案例 1:開機時發生核心異常

開機時發生核心異常,可防止 VM 完成作業系統啟動程式。 每次啟動虛擬機時都會發生,且不允許登入。

這種事件通常相關,但不限於:

案例 1 的解決方案

若要處理這類核心異常狀況,可以使用下列方法:

方法 1:使用 Azure 序列控制台

使用 Azure 序列控制台來中斷開機程式,並選取先前的核心版本,如果有的話。 如此一來,VM 就可以再次開機,然後使用下列其中一種方法來修正非開機核心的特定問題:

方法 2:使用救援 VM 脫機修復

如果 Azure 序列主控台無法使用或沒有先前的核心可用,您需要救援/修復 VM 才能進行離線修復。

使用 [ 修復 VM ] 命令 來建立已鏈接目標 VM OS 磁碟復本的修復 VM。 然後使用 chroot 掛接修復 VM 中的 OS 檔案系統複本。 之後,請嘗試下列方法來修正核心問題:

案例 2:運行時間的核心異常

在操作系統啟動程式完成之後,這種核心異常通常會在無法預期的時候觸發,並導致 VM 停止回應,防止其登入。 它通常相關,但不限於:

案例 2 的解決方案

若要處理這類核心異常狀況,可以使用下列方法:

  • 檢閱資源使用量和整體系統效能。 核心恐慌可能與可能導致 VM 重設大小的資源短缺有關。
  • 可能的話,請安裝對應 Linux 發行版存放庫中可用的最新更新。 核心異常可能與核心或其他軟體中的已知錯誤有關。
  • 核心異常有可能與最近的核心變更有關,在此情況下,建議您透過先前的核心版本開機,如案例 1 的解決方式中所述
  • 如果上述選項不適用,可能需要設定 kdump 併產生核心傾印,以與支持共用以進行進一步分析。

更具體的核心異常案例

具有特定疑難解答/復原指示的常見核心異常案例:

Document 案例
主機節點升級後 Azure Linux VM 上發生以 3.10 為基礎的核心異常 本文討論在 Azure 中執行 3.10 核心的 Azure Linux VM 在主機節點升級後當機時所發生的問題。
如何從核心相關的開機問題復原 Azure Linux 虛擬機器 本文提供Linux虛擬機在套用核心變更之後無法重新啟動的問題解決方案。

與我們連絡,以取得說明

如果您有問題或需要相關協助,請建立支援要求,或詢問 Azure community 支援。 您也可以向 Azure 意見反應社群提交產品意見反應。