このトピックでは、crash_kexec_post_notifiersパラメーターを使用して、Alibaba Cloud Linux 3を実行するElastic Compute Service (ECS) インスタンスでvmcoreファイルが生成されないという問題を解決する方法について説明します。
オペレーティングシステムの制限
Alibaba Cloud Linux 3
Anolis OS 8.x
問題の内容
crash_kexec_post_notifiersパラメーターがYに設定されているインスタンスでシステムパニックが発生した場合、vmcoreファイルは生成されません。
原因
crash_kexec_post_notifiersパラメーターがYに設定されているインスタンスでシステムパニックが発生すると、パニックカーネルはkdumpカーネルにジャンプする前にpanic notifiersを実行し、Notifiers関数でエラーが発生します。 例えば、Notifiers関数はデッドロックを引き起こす。 その結果、vmcoreファイルは生成されません。
パニック
オペレーティングシステムが安全に回復できない致命的なエラーをオペレーティングシステムが検出したときにオペレーティングシステムが行う緊急対策。
パニック通知
パニックにつながる可能性のある致命的なエラーのためにカーネルが再起動またはkdumpカーネルにジャンプしようとしているときに、登録されたモジュールまたはシステムコンポーネントが特定のコールバック関数を実行して、リソースのクリーンアップ、障害ログ、システムステータスデータの収集などの操作を実行できるようにするLinuxカーネルのメカニズム。
kdump
システムの信頼性とトラブルシューティング機能を向上させるために使用されるLinuxの重要なコンポーネント。
vmcore
Linuxカーネルがクラッシュしたときにカーネルクラッシュダンプメカニズムによって生成されるメモリイメージ。
解決策
kdumpサービスの状態を確認してください。
sudo kdumpctl statusコマンド出力を表示します。
コマンド出力に
kdump: Kdump is operationalメッセージが表示された場合、kdumpは期待どおりに実行されます。コマンド出力に
kdump: Kdump is not operationalメッセージが表示された場合、kdumpは実行されていません。 kdumpを開始します。sudo kdumpctl start
システムの
パニック後にvmcoreファイルが生成されているかどうかを確認します。<ip-time>をvmcoreファイルが格納されているフォルダの名前に置き換えます。 例:127.0.0.1-2024-10-11: 46:52ls /var/crash/<ip-time>vmcoreファイルが生成されない場合は、crash_kexec_post_notifiersパラメーターの値をNに変更します。次に、vmcoreファイルが生成されているかどうかを確認します。crash_kexec_post_notifiersパラメーターの値をNに一時的に変更します。sudo sh -c 'echo N > /sys/module/kernel/parameters/crash_kexec_post_notifiers'crash_kexec_post_notifiersパラメーターの値をNに完全に変更します。crash_kexec_post_notifiersパラメーターの値をNに変更します。sudo grubby --update-kernel="/boot/vmlinuz-$(uname -r)" --args="crash_kexec_post_notifiers=N"インスタンスを再起動して、変更を有効にします。
警告再起動操作により、インスタンスが短時間停止し、インスタンスで実行されているサービスが中断される可能性があります。 これにより、データが失われる可能性があります。 したがって、インスタンスを再起動する前に、重要なインスタンスデータをバックアップすることを推奨します。 また、オフピーク時にインスタンスを再起動することを推奨します。
sudo reboot
crash_kexec_post_notifiersパラメーターの値をNに変更した後にvmcoreファイルが生成されない場合、他の理由で問題が発生している可能性があります。 この場合、kdumpctlツールを使用して問題のトラブルシューティングを行います。 詳細については、「kdumpctlツールを使用したカーネルクラッシュダンプのブートログの表示」をご参照ください。