CentOS/RHELで古いカーネルを削除して/bootを整理する方法

  • 16
    いいね
  • 0
    コメント
この記事は最終更新日から1年以上が経過しています。

はじめに

カーネルを更新し続けると、どんどん/boot領域に蓄積されて行き、ついには残り容量がなくなって更新さえできなくなってしまうことがあります。不要なカーネル情報は削除したいのですが、気をつけなければいけないのは、/etc/grub.confなどのようにカーネル情報を参照しているファイルが存在することです。よってこのあたりまで含めて綺麗にクリーンアップしてくれるツールがあると良いですね。

解決方法

yum-utilsパッケージのpackage-cleanupコマンドを利用します。例えば、下記の例だと

  • --oldkernelsを指定することで、古いkernel/kernel-develを削除すします。
  • --count=2にすることで、2世代残します。
実行例
# df -m /boot
Filesystem     1M-blocks  Used Available Use% Mounted on
/dev/xvda1           248   137        99  59% /boot

# yum install -y yum-utils
(途中略)

# package-cleanup --oldkernels --count=2
(途中略)
Is this ok [y/N]: y
(途中略)

# ls -l /boot
total 51779
-rw-r--r--  1 root root   106313 Mar 11 17:31 config-2.6.32-504.12.2.el6.x86_64
-rw-r--r--  1 root root   106313 Apr 22 02:16 config-2.6.32-504.16.2.el6.x86_64
drwxr-xr-x. 3 root root     1024 Dec  2 09:13 efi
drwxr-xr-x. 2 root root     1024 May 27 04:27 grub
-rw-------  1 root root 19389459 Mar 21 13:27 initramfs-2.6.32-504.12.2.el6.x86_64.img
-rw-------  1 root root 19386450 May 13 00:37 initramfs-2.6.32-504.16.2.el6.x86_64.img
drwx------. 2 root root    12288 Dec  2 09:10 lost+found
-rw-r--r--  1 root root   200256 Mar 11 17:32 symvers-2.6.32-504.12.2.el6.x86_64.gz
-rw-r--r--  1 root root   200317 Apr 22 02:17 symvers-2.6.32-504.16.2.el6.x86_64.gz
-rw-r--r--  1 root root  2545042 Mar 11 17:31 System.map-2.6.32-504.12.2.el6.x86_64
-rw-r--r--  1 root root  2545609 Apr 22 02:16 System.map-2.6.32-504.16.2.el6.x86_64
-rwxr-xr-x  1 root root  4152720 Mar 11 17:31 vmlinuz-2.6.32-504.12.2.el6.x86_64
-rwxr-xr-x  1 root root  4151344 Apr 22 02:16 vmlinuz-2.6.32-504.16.2.el6.x86_64

# cat /etc/grub.conf
# grub.conf generated by anaconda
#
# Note that you do not have to rerun grub after making changes to this file
# NOTICE:  You have a /boot partition.  This means that
#          all kernel and initrd paths are relative to /boot/, eg.
#          root (hd0,0)
#          kernel /vmlinuz-version ro root=/dev/xvda2
#          initrd /initrd-[generic-]version.img
#boot=/dev/xvda
default=0
timeout=5
splashimage=(hd0,0)/grub/splash.xpm.gz
hiddenmenu
title CentOS (2.6.32-504.16.2.el6.x86_64)
        root (hd0,0)
        kernel /vmlinuz-2.6.32-504.16.2.el6.x86_64 ro root=UUID=xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx console=hvc0 crashkernel=auto SYSFONT=latarcyrheb-sun16 LANG=en_US.UTF-8 KEYTABLE=us
        initrd /initramfs-2.6.32-504.16.2.el6.x86_64.img
title CentOS (2.6.32-504.12.2.el6.x86_64)
        root (hd0,0)
        kernel /vmlinuz-2.6.32-504.12.2.el6.x86_64 ro root=UUID=xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx console=hvc0 crashkernel=auto SYSFONT=latarcyrheb-sun16 LANG=en_US.UTF-8 KEYTABLE=us
        initrd /initramfs-2.6.32-504.12.2.el6.x86_64.img

# df -m /boot
Filesystem     1M-blocks  Used Available Use% Mounted on
/dev/xvda1           248    62       175  26% /boot

補足

/etc/yum.confにinstallonly_limitとうパラメーターを設定しておくと、自動的に世代管理されるようです。SoftLayerのCentOS6では、下記のように設定されていたので、これを2とか3ぐらいに設定しておくと/bootがあふれる可能性は少なくなるのではないでしょうか。

世代管理
# cat /etc/yum.conf | grep install
installonly_limit=5