Windows XP Windows 7 Windows 2003 Windows Vista Windows 綜合教學 Linux 系統教學
Windows 10 Windows 8 Windows 2008 Windows NT Windows Server 電腦軟體教學
您现在的位置: Windows教程網 >> Windows教程 >  >> Linux 系統教學 >> Linux 教學

Linux 系統當機處理全攻略:核心轉儲、磁碟轉儲與網路轉儲完整指南

編輯:Linux 教學

Linux 系統發生當機時,往往讓管理員感到無從下手:系統日誌沒有記錄任何崩潰前後的資訊,似乎無法分析故障原因。但實際上,Linux 提供了多種機制,能在系統崩潰後捕獲有價值的診斷資料,幫助判斷是硬體故障還是應用程式 Bug 導致的問題。本文將系統介紹三種核心的崩潰資訊獲取方法:Core Dump、Diskdump 與 Netdump,並提供詳細的配置步驟與實操指令。

一、Core Dump:應用程式崩潰的「黑盒子」

Core Dump 主要用於偵錯應用程式錯誤。當應用程式異常終止時,開啟 Core Dump 功能可生成一個包含程式崩潰時記憶體狀態的核心轉儲檔案,供事後分析。

啟用與配置步驟

  1. 設定核心檔案大小限制
    編輯 /etc/profile,加入或修改:
    ulimit -c unlimited
    (預設為 0 表示關閉,設為 unlimited 允許生成完整核心檔案)
  2. 指定核心檔案儲存路徑與命名格式
    執行命令:
    sysctl -w "kernel.core_pattern=/coredump/%e.core"
    此命令將核心檔案存放在 /coredump 目錄下,檔名為「程式名稱.core」。

配置完成後,當應用程式崩潰時,系統會自動在指定目錄生成核心檔案,可使用 gdb 等工具進行分析。

二、Diskdump:單機核心轉儲的利器

Diskdump 工具能在單機上建立並收集 vmcore(核心轉儲),無需網路支援。當核心本身崩潰時,當前記憶體、CPU 狀態及相關資訊會被保存到支援 Diskdump 的磁碟保留分區。下次重啟時,初始化腳本會從保留分區讀取資料並建立 vmcore 檔案,存放於 /var/crash/ 目錄,檔名格式為 127.0.0.1-<日期>。

以 HP SCSI 設備為例的配置流程

若非 HP SCSI 設備(即裝置名為 /dev/sdX 形式),可跳過第 3、4 步,但需在第一步前先執行 modprobe diskdump。

  1. 編輯 /etc/sysconfig/diskdump
    指定一個空白分區的裝置名,例如:
    DEVICE=/dev/cciss/c0d0p2
  2. 初始化轉儲裝置
    # service diskdump initialformat
    警告:該分區所有資料將遺失。
  3. 替換 cciss 模組為 cciss_dump
    編輯 /etc/modprobe.conf,找到:
    alias scsi_hostadapter cciss
    修改為:
    alias scsi_hostadapter cciss_dump
    新增一行:
    options cciss_dump dump_drive=1
    註:假設 diskdump 配置為 /dev/cciss/c0d[#a]p[#b],請設定 options cciss_dump dump_drive=[#a]
  4. 重建 initrd 檔案
    # mv /boot/initrd-`uname -r`.img /boot/initrd-`uname -r`.img.old
    # mkinitrd /boot/initrd-`uname -r`.img `uname -r`
  5. 設定 Diskdump 服務開機自啟
    # chkconfig diskdump on

三、Netdump:網路核心轉儲方案

適用於不支援 Diskdump 的舊版系統(如紅旗 DC 4.0/3.0)。Netdump 需要至少一台伺服器與任意數量的客戶端。伺服器接收客戶端當機時的資訊,客戶端為頻繁當機的機器。

伺服器端配置

  1. 檢查並安裝 netdump-server
    rpm -q netdump-server
    若未安裝,從光碟 RedFlag/RPMS/ 目錄安裝:
    rpm -ivh netdump-server-x.x.x.rpm
  2. 設定 netdump 使用者密碼
    passwd netdump
  3. 啟用並啟動服務
    chkconfig netdump-server on
    service netdump-server start

客戶端配置

  1. 檢查並安裝 netdump
    rpm -q netdump
    未安裝時同樣從光碟安裝 netdump-x.x.x.rpm。
  2. 編輯 /etc/sysconfig/netdump
    新增:
    DEV=eth0
    NETDUMPADDR=172.16.81.182 (Netdump 伺服器 IP)
    NETDUMPMACADDR=00:0C:29:79:F4:E0 (伺服器 MAC 位址)
  3. 傳播金鑰並啟動服務
    service netdump propagate (依提示輸入密碼)
    chkconfig netdump on
    service netdump start
  4. 測試配置
    在客戶端執行:
    cp /usr/share/doc/netdump-xxxxxx/crash.c .
    gcc -DKERNEL -DMODULE -I/lib/modules/$(uname -r)/build/include -c crash.c
    insmod ./crash.o
    此操作會觸發系統崩潰。在伺服器的 /var/crash/<客戶端IP>-<日期>/ 目錄下將生成 vmcore 檔案(轉儲過程中暫名為 vmcore-incomplete,完成後自動重命名)。512MB 記憶體系統測試約產生 510MB 的 vmcore。

掌握這三種方法,無論是應用程式異常、核心崩潰,還是無法本地儲存轉儲的環境,都能有效獲取診斷資料,快速定位故障根因。

Copyright © Windows教程網 All Rights Reserved