Foreword
Under a normal execution of the OS, the number of installed and unused kernels does not affect server’s performance. However, removing old unused kernels will free some disk space. If your server is configured with a separate /boot
partition and you run into a issue with low disk space, removing unused kernels will give you a chance of getting over.
How to check which is the current Kernel
First, check what kernel is currently used by your server:
# uname -a Linux localhost.localdomain 3.10.0-693.5.2.el7.x86_64 #1 SMP Fri Oct 20 20:32:50 UTC 2017 x86_64 x86_64 x86_64 GNU/Linux
List all installed kernels
In this step we will list all currently installed kernels:
# rpm -q kernel kernel-3.10.0-327.36.3.el7.x86_64 kernel-3.10.0-514.2.2.el7.x86_64 kernel-3.10.0-693.5.2.el7.x86_64
Kernel kernel-3.10.0-693.5.2.el7.x86_64
is currently loaded and used. based on the about output this is the latest version.
Remove old kernels manually
At this stage we can use yum
command to manually remove unused Linux kernels:
# yum remove kernel-3.10.0-327.36.3.el7.x86_64 kernel-3.10.0-514.2.2.el7.x86_64 Loaded plugins: fastestmirror Resolving Dependencies --> Running transaction check ---> Package kernel.x86_64 0:3.10.0-327.36.3.el7 will be erased ---> Package kernel.x86_64 0:3.10.0-514.2.2.el7 will be erased --> Finished Dependency Resolution Dependencies Resolved ======================================================================================================================================================================================================================= Package Arch Version Repository Size ======================================================================================================================================================================================================================= Removing: kernel x86_64 3.10.0-327.36.3.el7 @anaconda 136 M kernel x86_64 3.10.0-514.2.2.el7 @updates 148 M Transaction Summary ======================================================================================================================================================================================================================= Remove 2 Packages Installed size: 284 M Is this ok [y/N]:
Remove old unused kernel automatically
Using package-cleanup
command which is a part of yum-utils
package we can uninstall any number of old kernels automatically. As an example using --oldkernels --count=2
option with package-cleanup
command the command will remove all unused kernel while keeping last three most recent kernel versions installed.
Let’s remove all kernels expect the latest currently loaded kernel:
# package-cleanup --oldkernels --count=1 Loaded plugins: fastestmirror --> Running transaction check ---> Package kernel.x86_64 0:3.10.0-327.36.3.el7 will be erased ---> Package kernel.x86_64 0:3.10.0-514.2.2.el7 will be erased --> Finished Dependency Resolution Dependencies Resolved ======================================================================================================================================================================================================================= Package Arch Version Repository Size ======================================================================================================================================================================================================================= Removing: kernel x86_64 3.10.0-327.36.3.el7 @anaconda 136 M kernel x86_64 3.10.0-514.2.2.el7 @updates 148 M Transaction Summary ======================================================================================================================================================================================================================= Remove 2 Packages Installed size: 284 M Is this ok [y/N]:
Configure yum to auto-remove old kernels
By default CentOS will keep last 5 kernels installed on your system. This behavior is defined by installonly_limit=5
line within /etc/yum.conf
file. Update the /etc/yum.conf
configuration file appropriately to keep desired number of old kernels on your system after update. The minimum value to be set is 2
. Example of /etc/yum.conf
configuration file to keep only last two kernel versions:
[main] cachedir=/var/cache/yum/$basearch/$releasever keepcache=0 debuglevel=2 logfile=/var/log/yum.log exactarch=1 obsoletes=1 gpgcheck=1 plugins=1 installonly_limit=2 bugtracker_url=http://bugs.centos.org/set_project.php?project_id=23&ref=http://bugs.centos.org/bug_report_page.php?category=yum distroverpkg=centos-release