释放Linux服务器的预留内存

KdumpLinux的内核崩溃转储机制,能在系统崩溃(如内核panic)时捕获内存信息,便于事后故障分析,该机制需要预留内存(称为crashkernel)来保存转储信息。如果您的Linux服务器内存较小,可参考本文档关闭kdump释放预留内存,提高内存的利用率。

操作步骤

重要

释放系统预留内存并关闭Kdump服务,在系统故障时可能无法收集内核崩溃信息,导致无法及时定位和修复内核相关的问题,从而影响服务器的稳定性,请您谨慎操作。

  1. 查看系统预留内存。

    1. 远程连接Linux服务器

    2. 执行以下命令,确认系统是否已开启crashkernel。

      cat /proc/cmdline

      如果返回结果中包括了crashkernel选项,说明已开启crashkernel。

      image

    3. 执行以下命令,查看系统预留内存大小。

      cat /sys/kernel/kexec_crash_size

      回显信息类似如下所示,表示系统预留内存大小为201326592 B,即192 MiB。

      image

  2. 释放系统预留内存并关闭Kdump服务。

    1. 执行以下命令,备份grub配置文件。

      sudo cp /etc/default/grub /etc/default/grub.bak
    2. 执行以下命令,删除crashkernel配置。

      sudo sed -i 's/crashkernel=[^[:space:]]*[[:space:]]*//g' /etc/default/grub
    3. 执行以下命令,更新grub配置。

      • Alibaba Cloud Linux/CentOS

        sudo grub2-mkconfig -o /boot/grub2/grub.cfg
      • Ubuntu/Debian

        sudo update-grub
    4. 执行以下命令,关闭Kdump服务并禁止开启自启动。

      • Alibaba Cloud Linux/CentOS

        sudo systemctl stop kdump
        sudo systemctl disable kdump
      • Ubuntu/Debian

        sudo systemctl stop kdump-tools
        sudo systemctl disable kdump-tools
    5. 执行以下命令,重启系统以使更改生效。

      sudo reboot
  3. 验证结果。

    1. 远程连接Linux服务器

    2. 执行以下命令,查看kdump状态。确认kdump状态为 inactive (dead),即 kdump 服务已停止运行。

      • Alibaba Cloud Linux/CentOS

        sudo systemctl status kdump

        image

      • Ubuntu/Debian

        sudo systemctl status kdump-tools

        image

    3. 执行以下命令,查看grub配置文件。

      cat /proc/cmdline

      如果回显信息中不显示crashkernel配置,表示删除crashkernel配置已生效。

      image

    4. 执行以下命令,查看预留内存大小。

      cat /sys/kernel/kexec_crash_size

      如果回显信息显示0,表示系统预留内存已释放。

      image