
AWS/EC2 で Ubuntu 12.04 を実行していますが、ホストの競合が発生しました。コアダンプを有効にしようとしていますが、カーネルパニックをシミュレートすると、.crashファイルはファイルシステムのどこにも記録されません。
私はここの指示に従いました。https://wiki.ubuntu.com/Kernel/CrashdumpRecipe
状況が正しく設定されているようです。
# cat /proc/cmdline
root=LABEL=cloudimg-rootfs ro console=hvc0 crashkernel=384M-2G:64M,2G-:128M
# dmesg |grep crash
[ 0.000000] Command line: root=LABEL=cloudimg-rootfs ro console=hvc0 crashkernel=384M-2G:64M,2G-:128M
[ 0.000000] Reserving 64MB of memory at 832MB for crashkernel (System RAM: 1708MB)
[ 0.000000] Kernel command line: root=LABEL=cloudimg-rootfs ro console=hvc0 crashkernel=384M-2G:64M,2G-:128M
# cat /sys/kernel/kexec_crash_loaded
1
しかし、実行すると:
# echo c | sudo tee /proc/sysrq-trigger
システムは期待どおりに再起動しますが、いかなる種類の「衝突」ファイルも生成されません。私は何を間違えることができましたか?
答え1
kdump initスクリプトが有効になっていることを確認してください。 kexec_crash パッケージは initscript を使用して一般的な起動ルーチンをバイパスします。現在の呼び出しが競合init
のために呼び出された呼び出しであることを確認し、それを使用して実際の再起動を実行する前に以前の実行状態ダンプが必要かどうかを判断します。
つまり、テストシステムが64Mbに収まるほど小さくなく、衝突が発生するたびにメモリ全体が減少することを知らない場合は、そうでない可能性があります。
確認する必要がある最も重要なのは、2番目がinit
発射されるかどうかです。システムクラッシュの直後にコンソールにinitscriptの起動シーケンスを表示する必要があります。以前の再起動なし。
- これが発生しないと、クラッシュカーネルはまったく実行されません。
- これが発生し、プロンプトが表示されたら、initスクリプトはその操作を実行していません。 (衝突後の状態が有効または検出されない)
- これが発生すると、2 番目が
init
実行され、システムが再起動して起動init
します。再びしかし、まだファイルがありません... kdump initscriptが再起動される前に何が起こっているのかを修正する必要があります。皮肉なことに、より良い方法の1つは、initscriptを無効にしてコマンドを手動で実行することです。 (注:これを試す前に、サービスがクラッシュしたカーネルのメモリに適していることを確認してください!)