kdumpは、カーネルパニックなどのカーネルクラッシュがオペレーティングシステムで発生したときにメモリダンプ情報をキャプチャできるLinuxカーネルクラッシュダンプメカニズムです。 これは、クラッシュの原因を分析するのに役立ちます。 kdumpでは、オペレーティングシステムがクラッシュした場合でも、カーネルダンプ情報を格納するのに十分なメモリを使用できるようにするために、クラッシュカーネルメモリと呼ばれる予約済みメモリが必要です。 このトピックでは、Linux Elastic Compute Service (ECS) インスタンスの予約メモリのサイズを表示および変更する方法について説明します。
オペレーティングシステムの予約メモリサイズの表示
kdumpが予約メモリを使用できるようにするには、GRand Unified Bootloader (GRUB) 構成ファイルにcrashkernelパラメーターを追加し、各メモリセグメントの予約メモリのサイズを指定する必要があります。
デフォルトでは、GRUB設定ファイルは /etc/default/grubディレクトリに保存されます。 Alibaba Cloud Linux 3では、GRUB設定ファイルは /usr/share/alinux-base-setup/cmdlineディレクトリに保存されます。
オペレーティングシステムが起動すると、GRUBはcrashkernelパラメーターを構成ファイルからカーネルに渡し、起動時にkdump用に予約する必要があるメモリの量をカーネルに通知します。 システム実行時に /proc/cmdlineファイルを表示して、crashkernelパラメーターが期待どおりに機能するかどうかを確認できます。
次のコマンドを実行して、crashkernelパラメーターが有効かどうかを確認します。
cat /proc/cmdline次のコマンド出力には、
crashkernelパラメーターの設定が含まれています。これは、crashkernelパラメーターが有効であることを示します。
次のコマンドを実行して、予約メモリのサイズを表示します。
cat /sys/kernel/kexec_crash_size次のコマンド出力が返されます。これは、予約されたメモリのサイズを示します。 単位はバイトです。
この例では、201326592が返されます。これは、192 MBのメモリが予約されていることを示します。
予約メモリを解放してkdumpを無効にする
インスタンスのkdumpを有効にする必要がなく、リソースの無駄を防ぐために予約されたメモリアドレス空間をオペレーティングシステムに返す場合は、次の操作を実行して予約されたメモリを解放し、kdumpを無効にします。
予約されたメモリを解放してkdumpを無効にすると、オペレーティングシステムが故障したときにオペレーティングシステムがカーネルクラッシュ情報を収集できない場合があります。 その結果、カーネル関連の問題をできるだけ早く特定して修正することはできません。 これは、インスタンスのサービス継続性と安定性に影響します。 作業は慎重に行ってください。
Alibaba Cloud LinuxおよびCentOS
GRUB設定ファイルをバックアップします。
Alibaba Cloud Linux 2またはCentOSで次のコマンドを実行します。
sudo cp /etc/default/grub /etc/default/grub.bakAlibaba Cloud Linux 3で次のコマンドを実行します。
sudo cp /usr/share/alinux-base-setup/cmdline /usr/share/alinux-base-setup/cmdline.bak
GRUB設定ファイルから
crashkernelパラメーターの設定を削除し、ファイルを保存します。Alibaba Cloud Linux 2またはCentOSで次のコマンドを実行します。
sudo vim /etc/default/grub
GRUB_CMDLINE_LINUX行でcrashkernelパラメーターを見つけ、crashkernel=0M-2G:0M,2G-8G:192M,8G-128G:256M,128G-:384Mの設定を削除します。Escキーを押して:wqと入力し、enterキーを押して設定ファイルを保存して閉じます。Alibaba Cloud Linux 3で次のコマンドを実行します。
sudo vim /usr/share/alinux-base-setup/cmdline
crashkernel=0M-2G:0M、2G-8G:192M、8G-128G:256M、128G-:384Mの行を構成ファイルから削除します。Escキーを押して:wqと入力し、enterキーを押して設定ファイルを保存して閉じます。
次のコマンドを実行して、GRUB設定を更新します。
sudo grub2-mkconfig -o /boot/grub2/grub.cfg説明CentOS Stream 9、AlmaLinux 9、Rocky Linux 9などのRed Hat Enterprise Linux (RHEL) 9に基づくディストリビューションでは、
sudo grub2-mkconfig -o /boot/grub2/grub.cfg -- update-bls-cmdlineコマンドを実行してGRUB設定を更新します。次のコマンドを実行してkdumpを無効化および停止します。
sudo systemctl disable kdump sudo systemctl stop kdump次のコマンドを実行して、変更を有効にするためにオペレーティングシステムを再起動します。
sudo rebootkdumpのステータスとcrashkernelパラメーターを表示して、変更が有効かどうかを確認します。
次のコマンドを実行して、kdumpのステータスを表示します。 kdumpが
inactive (dead)状態の場合、kdumpは無効になります。sudo systemctl status kdump
次のコマンドを実行してインスタンスのGRUB設定ファイルを取得し、crashkernelパラメーターの設定が削除されているかどうかを確認します。
cat /proc/cmdline
UbuntuとDebian
次のコマンドを実行して、GRUB構成ファイルをバックアップします。
sudo cp /etc/default/grub /etc/default/grub.bak次のコマンドを実行して、GRUB設定ファイルから
crashkernelパラメーターの設定を削除し、ファイルを保存します。sudo vim /etc/default/grub
GRUB_CMDLINE_LINUX行でcrashkernelパラメーターを見つけ、crashkernel=0M-2G:0M,2G-8G:192M,8G-128G:256M,128G-:384Mの設定を削除します。Escキーを押して:wqと入力し、enterキーを押して設定ファイルを保存して閉じます。次のコマンドを実行して、GRUB設定を更新します。
sudo update-grub
次のコマンドを実行してkdumpを無効化および停止します。
sudo systemctl disable kdump-tools sudo systemctl stop kdump-tools次のコマンドを実行して、変更を有効にするためにオペレーティングシステムを再起動します。
sudo rebootkdumpのステータスとcrashkernelパラメーターを表示して、変更が有効かどうかを確認します。
次のコマンドを実行して、kdumpのステータスを表示します。 kdumpが
inactive (dead)状態の場合、kdumpは無効になります。sudo systemctl status kdump
次のコマンドを実行してインスタンスのGRUB設定ファイルを取得し、crashkernelパラメーターの設定が削除されているかどうかを確認します。
cat /proc/cmdline
メモリ予約とkdumpの有効化
kdumpを使用してインスタンスのメモリダンプ情報をキャプチャする場合は、次の操作を実行してcrashkernelパラメーターの設定を追加し、kdumpを有効にします。
Alibaba Cloud LinuxおよびCentOS
GRUB設定ファイルをバックアップします。
Alibaba Cloud Linux 3で次のコマンドを実行します。
sudo cp /usr/share/alinux-base-setup/cmdline /usr/share/alinux-base-setup/cmdline.bakAlibaba Cloud Linux 2またはCentOSで次のコマンドを実行します。
sudo cp /etc/default/grub /etc/default/grub.bak
crashkernelパラメーターの設定をGRUB設定ファイルに追加し、ファイルを保存します。Alibaba Cloud Linux 3で次のコマンドを実行します。
sudo vim /usr/share/alinux-base-setup/cmdline
crashkernel=0M-2G:0M、2G-8G:192M、8G-128G:256M、128G-:384Mの設定を設定ファイルに追加します。Escキーを押して:wqと入力し、enterキーを押して設定ファイルを保存して閉じます。Alibaba Cloud Linux 2またはCentOSで次のコマンドを実行します。
sudo vim /etc/default/grub
GRUB_CMDLINE_LINUX行でcrashkernelパラメーターを見つけ、crashkernel=0M-2G:0M,2G-8G:192M,8G-128G:256M,128G-:384M設定を設定ファイルに追加します。Escキーを押して:wqと入力し、enterキーを押して設定ファイルを保存して閉じます。
次のコマンドを実行して、GRUB設定を更新します。
sudo grub2-mkconfig -o /boot/grub2/grub.cfg説明CentOS Stream 9、AlmaLinux 9、Rocky Linux 9などのRHEL 9に基づくディストリビューションでは、
sudo grub2-mkconfig -o /boot/grub2/grub.cfg -- update-bls-cmdlineコマンドを実行してGRUB設定を更新します。次のコマンドを実行してkdumpを有効にします。
sudo systemctl enable kdump次のコマンドを実行して、変更を有効にするためにオペレーティングシステムを再起動します。
sudo rebootkdumpのステータスとcrashkernelパラメーターを表示して、変更が有効かどうかを確認します。
次のコマンドを実行して、kdumpのステータスを表示します。 kdumpが
active (exited)状態の場合、kdumpが有効になります。
次のコマンドを実行してインスタンスのGRUB設定ファイルを取得し、crashkernelパラメーターの設定が追加されているかどうかを確認します。
cat /proc/cmdline
UbuntuとDebian
次のコマンドを実行して、GRUB構成ファイルをバックアップします。
sudo cp /etc/default/grub /etc/default/grub.bak次のコマンドを実行して、
crashkernelパラメーターの設定をGRUB設定ファイルに追加し、ファイルを保存します。sudo vim /etc/default/grub
crashkernel=0M-2G:0M、2G-8G:192M、8G-128G:256M、128G-:384M構成をGRUB_CMDLINE_LINUX行に追加します。Escキーを押して:wqと入力し、enterキーを押して設定ファイルを保存して閉じます。次のコマンドを実行して、GRUB設定を更新します。
sudo update-grub次のコマンドを実行して、kdumpを有効にして起動します。
sudo systemctl enable kdump-tools sudo systemctl start kdump-tools次のコマンドを実行して、変更を有効にするためにオペレーティングシステムを再起動します。
sudo rebootkdumpのステータスとcrashkernelパラメーターを表示して、変更が有効かどうかを確認します。
次のコマンドを実行して、kdumpのステータスを表示します。 kdumpが
active (exited)状態の場合、kdumpが有効になります。
次のコマンドを実行してインスタンスのGRUB設定ファイルを取得し、crashkernelパラメーターの設定が追加されているかどうかを確認します。
cat /proc/cmdline