1

raw ディスク パーティションを引き継いだ Red Hat Linux マシンのコア ダンプ (vmcore) があります。vmcore が生成され、シリアル コンソールの出力で確認できました。を使用してコア ダンプ プロセスをトリガーしましたが、echo c > /proc/sysrq-triggerそれを分析する方法がわかりません。

/etc/kdump.confファイルに指定されたオプションは でした"raw /dev/sda5"。事前に fdisk コマンドを使用して /dev/sda5 パーティションを作成し、ダンプ ファイルの場所として指定しました。クラッシュなどのためにメモリを予約するなど、他のことも行っていました。

これをグーグルで検索すると、次のような情報が得られました:-

「raw ディスク パーティションと専用ファイル システム オプションを使用すると、ローカル システムにダンプできますが、破損している可能性のあるファイル システムを再マウントする必要がないため、vmcore がキャプチャされない可能性が低くなります。想定/dev/ sda5 はフォーマットされていないままで、kdump.conf は 'raw/dev/sda5' で構成でき、vmcore ファイルは dd 経由で partition/dev/sda5 に直接コピーされます。

/proc/vmcoreマシンの再起動後 (ダンプを取った後) に見つかりません。そのダンプを分析する方法の手がかり/手順を誰かが教えてくれますか? 「dd」または「mknod」または同様のことを行う必要がありますか(Googleで不明確なヒントが得られました)。

4

1 に答える 1

0

こんにちは、たまたまあなたの質問を見ました。あなたがすでにあなたの答えを得たかどうかわからない..とにかく..

vmcore は、/var/crash/ またはパス パラメータで定義された場所 (存在する場合) にコピーされます。

save_raw 関数が定義されているため。

function save_raw()
{
        local raw_part=$(awk '$1 ~ /^raw$/ { print $2; }' $KDUMP_CONFIG_FILE)
        local kdump_dir
        if [ "$raw_part" ]; then
                [ -b "$raw_part" ] || {
                        echo "raw partition $raw_part not found"
                        return 1
                }
                kdump_dir=`grep ^path $KDUMP_CONFIG_FILE | cut -d' '  -f2-`
                if [ -z "${kdump_dir}" ]; then
                        coredir="/var/crash/`date +"%Y-%m-%d-%H:%M"`"
                else
                        coredir="${kdump_dir}/`date +"%Y-%m-%d-%H:%M"`"
                fi
                mkdir -p "$coredir"
                [ -d "$coredir" ] || {
                        echo "failed to create $coredir"
                        return 1
                }
                if makedumpfile -R $coredir/vmcore <$raw_part >/dev/null 2>&1; then
                        # dump found
                        echo "Dump saved to $coredir/vmcore"
                        # wipe makedumpfile header
                        dd if=/dev/zero of=$raw_part bs=1b count=1 2>/dev/null
                else
                        rm -rf "$coredir"
                fi
        fi
        return 0
}

この関数は、再起動後に kdump が起動するときに呼び出されます。

function start()
{
        save_raw
于 2013-02-12T09:53:55.227 に答える