このWebサイト ひつじ帳 は、管理者がWEB関連の技術をまとめた備忘録サイトです。 Linux,CentOS,PHP,MySQL,Blogger,JavaScript,CSS について記録しています。

CentOS-7/不要な古いカーネルを削除してboot領域を確保

CentOS-7でカーネルの更新を続けているとboot領域に更新されたファイルが、どんどん蓄積されていきます。
あまりカーネルの更新をしない人は関係ないと思いますので、必要ないと思います。

この作成されるファイルは、バックアップファイルのようなものです。
ですので、更新したけど調子が悪いといった場合は、古いカーネルバージョンを起動できるように用意してくれているのは、非常に有難いですネ。

この更新の度に作成されるファイルは、デフォルトでは自動で削除してくれません。
蓄積される一方ですので、更新を続けると残り容量が少なくなり、そのうち更新さえできなくなってしまうことがあります。

カーネルのファイルを直接削除することも可能でしょうが、これはやらない方が無難です。

CentOSには、yum-utils というパッケージが用意されています。
その中の package-cleanup コマンドを使えば、古いカーネルを簡単に削除できます。

下記では、package-cleanupコマンドでCentOS-7のkernel(カーネル)を削除する方法を解説しています。


CentOS インストール直後の状態を確認する

まずは現在の状態を確認することにします。
CentOS-7.6をインストールした直後(2019-05 時点)のディスク容量です。

私の場合は、/bootに1GMが割り当てられていましたのでまだ余裕がありそうです。
インストールした条件や環境によって違ってくると思います。

/bootのディスク容量を確認します

/bootのディスク容量 確認

[root@vm ~]# df -h
ファイルシス            サイズ  使用  残り 使用% マウント位置
/dev/mapper/centos-root    47G  1.5G   46G    3% /
devtmpfs                  484M     0  484M    0% /dev
tmpfs                     496M     0  496M    0% /dev/shm
tmpfs                     496M  6.7M  489M    2% /run
tmpfs                     496M     0  496M    0% /sys/fs/cgroup
/dev/sda1                1014M  132M  883M   13% /boot

kernel(カーネル)の確認

カーネルを確認します。
CentOS-7をインストールした直後なので、カーネルは1つです。

kernel(カーネル) 確認

[root@vm ~]# rpm -q kernel
kernel-3.10.0-957.el7.x86_64
[root@vm ~]#


kernel(カーネル)をインストールする

CentOS-7のインストールした時のCentOSバージョンは、7.6.1810です。
インストールした時のカーネルの更新日時は、2018-11-12になっていました。

カーネルの世代が現時点では1つしかなく削除の確認ができない為、カーネルを追加でインストールして、カーネルの世代を多くすることにします。

すでに、/boot の容量がいっぱいで残量がない場合は、インストール不要です。
インストールしようとしてもできないと思います。

カーネルの更新パッケージを確認する

下記の理研のミラーサイトでCentOS-7のkernel(カーネル)更新ファイルを確認します。
http://ftp.riken.jp/Linux/centos/7/updates/x86_64/Packages/

更新されているRPMファイルは、5つありました。
このうち4つのファイルをインストールしていくことにします。

カーネルのRPM

kernel-3.10.0-957.1.3.el7.x86_64.rpm                                     2018-11-30 01:54   48M
kernel-3.10.0-957.5.1.el7.x86_64.rpm                                     2019-02-02 01:20   48M
kernel-3.10.0-957.10.1.el7.x86_64.rpm                                    2019-03-19 00:45   48M
kernel-3.10.0-957.12.1.el7.x86_64.rpm                                    2019-04-30 00:45   48M
kernel-3.10.0-957.12.2.el7.x86_64.rpm                                    2019-05-16 00:07   48M

kernel(カーネル)をダウンロード

kernel(カーネル)のRPMファイルを任意の場所にダウンロードします。
wgetコマンドを使ってダウンロードしていますが、curlコマンドでも構わないです。
CentOS-7には標準で、wgetコマンドがインストールされていませんので、必要な場合はインストールしてください。

wgetコマンドをインストールする場合

# yum -y install wget



カーネル RPM ダウンロード

[root@vm ~]# wget http://ftp.riken.jp/Linux/centos/7/updates/x86_64/Packages/kernel-3.10.0-957.1.3.el7.x86_64.rpm
[root@vm ~]# wget http://ftp.riken.jp/Linux/centos/7/updates/x86_64/Packages/kernel-3.10.0-957.10.1.el7.x86_64.rpm
[root@vm ~]# wget http://ftp.riken.jp/Linux/centos/7/updates/x86_64/Packages/kernel-3.10.0-957.12.1.el7.x86_64.rpm
[root@vm ~]# wget http://ftp.riken.jp/Linux/centos/7/updates/x86_64/Packages/kernel-3.10.0-957.12.2.el7.x86_64.rpm

kernel(カーネル)インストール

ダウンロードしたkernel(カーネル)のRPMファイルをインストールします。

rpmコマンドのオプションに 「U」 は付けないように注意してください。
「U」を付けると上書きインストールされます。

カーネル RPM インストール

##★ kernel-3.10.0-957.1.3.el7.x86_64.rpm
[root@vm ~]# rpm -ihv kernel-3.10.0-957.1.3.el7.x86_64.rpm
準備しています...              ################################# [100%]
更新中 / インストール中...
   1:kernel-3.10.0-957.1.3.el7        ################################# [100%]
[root@vm ~]#

##★ kernel-3.10.0-957.10.1.el7.x86_64.rpm
[root@vm ~]# rpm -ihv kernel-3.10.0-957.10.1.el7.x86_64.rpm
準備しています...              ################################# [100%]
更新中 / インストール中...
   1:kernel-3.10.0-957.10.1.el7       ################################# [100%]
[root@vm ~]#

##★ kernel-3.10.0-957.12.1.el7.x86_64.rpm
[root@vm ~]# rpm -ihv kernel-3.10.0-957.12.1.el7.x86_64.rpm
準備しています...              ################################# [100%]
更新中 / インストール中...
   1:kernel-3.10.0-957.12.1.el7       ################################# [100%]
[root@vm ~]#

##★ kernel-3.10.0-957.12.2.el7.x86_64.rpm
[root@vm ~]# rpm -ihv kernel-3.10.0-957.12.2.el7.x86_64.rpm
準備しています...              ################################# [100%]
更新中 / インストール中...
   1:kernel-3.10.0-957.12.2.el7       ################################# [100%]
[root@vm ~]#

カーネルの確認

新しいカーネルがインストールされたか確認します。

カーネル 確認 rpmコマンドで確認

・rpmコマンド
[root@vm ~]# rpm -q kernel
kernel-3.10.0-957.el7.x86_64
kernel-3.10.0-957.1.3.el7.x86_64
kernel-3.10.0-957.10.1.el7.x86_64
kernel-3.10.0-957.12.1.el7.x86_64
kernel-3.10.0-957.12.2.el7.x86_64
[root@vm ~]#

カーネル 確認 lsコマンドで確認

[root@vm ~]# ls /boot/initramfs-*
/boot/initramfs-0-rescue-b7cf746b5ad248228aac1a8ed92faed5.img
/boot/initramfs-3.10.0-957.1.3.el7.x86_64.img
/boot/initramfs-3.10.0-957.10.1.el7.x86_64.img
/boot/initramfs-3.10.0-957.12.1.el7.x86_64.img
/boot/initramfs-3.10.0-957.12.2.el7.x86_64.img
/boot/initramfs-3.10.0-957.el7.x86_64.img
[root@vm ~]#

GRUBの状態を確認する

GRUBの設定状態も確認しておきます。
デフォルトで起動するカーネルを確認します。

カーネル 確認 lsコマンド

[root@vm ~]# grub2-editenv list
saved_entry=CentOS Linux (3.10.0-957.12.2.el7.x86_64) 7 (Core)
[root@vm ~]#

容量の確認

CentOS-7のディスク容量を再確認します。

ディスク容量 再確認

[root@vm ~]# df -h
ファイルシス            サイズ  使用  残り 使用% マウント位置
/dev/mapper/centos-root    47G  1.9G   46G    4% /
devtmpfs                  484M     0  484M    0% /dev
tmpfs                     496M     0  496M    0% /dev/shm
tmpfs                     496M  6.7M  489M    2% /run
tmpfs                     496M     0  496M    0% /sys/fs/cgroup
/dev/sda1                1014M  252M  763M   25% /boot
tmpfs                     100M     0  100M    0% /run/user/0
[root@vm ~]#


yum-utils インストール

カーネルを削除するコマンド package-cleanup は、yum-utils のパッケージに入っています。
yum-utils を yumコマンドでインストールします。

yum-utilsを確認

yum-utils が既にインストール済か否か確認します。

インストール 確認

[root@vm ~]# rpm -qa | grep yum-utils
[root@vm ~]#

yum-utilsパッケージを検索する

yum-utilsのパッケージを検索します。

パッケージ 検索

[root@vm ~]# yum list | grep yum-utils
yum-utils.noarch                            1.1.31-50.el7              base
[root@vm ~]#

yum-utilsをインストールする

yumコマンドで、yum-utilsをインストールします。

yum-utils インストール

[root@vm ~]# yum -y install yum-utils
読み込んだプラグイン:fastestmirror
Loading mirror speeds from cached hostfile
 * base: mirrors.cat.net
 * extras: mirrors.cat.net
 * updates: mirrors.cat.net
依存性の解決をしています
--> トランザクションの確認を実行しています。
---> パッケージ yum-utils.noarch 0:1.1.31-50.el7 を インストール
--> 依存性の処理をしています: python-kitchen のパッケージ: yum-utils-1.1.31-50.el7.noarch
--> 依存性の処理をしています: libxml2-python のパッケージ: yum-utils-1.1.31-50.el7.noarch
--> トランザクションの確認を実行しています。
---> パッケージ libxml2-python.x86_64 0:2.9.1-6.el7_2.3 を インストール
---> パッケージ python-kitchen.noarch 0:1.1.1-5.el7 を インストール
--> 依存性の処理をしています: python-chardet のパッケージ: python-kitchen-1.1.1-5.el7.noarch
--> トランザクションの確認を実行しています。
---> パッケージ python-chardet.noarch 0:2.2.1-1.el7_1 を インストール
--> 依存性解決を終了しました。

依存性を解決しました

========================================================================================
 Package                 アーキテクチャー
                                         バージョン                 リポジトリー   容量
========================================================================================
インストール中:
 yum-utils               noarch          1.1.31-50.el7              base          121 k
依存性関連でのインストールをします:
 libxml2-python          x86_64          2.9.1-6.el7_2.3            base          247 k
 python-chardet          noarch          2.2.1-1.el7_1              base          227 k
 python-kitchen          noarch          1.1.1-5.el7                base          267 k

トランザクションの要約
========================================================================================
インストール  1 パッケージ (+3 個の依存関係のパッケージ)

総ダウンロード容量: 861 k
インストール容量: 4.3 M
Downloading packages:
(1/4): yum-utils-1.1.31-50.el7.noarch.rpm                        | 121 kB  00:00:00
(2/4): python-chardet-2.2.1-1.el7_1.noarch.rpm                   | 227 kB  00:00:00
(3/4): python-kitchen-1.1.1-5.el7.noarch.rpm                     | 267 kB  00:00:00
(4/4): libxml2-python-2.9.1-6.el7_2.3.x86_64.rpm                 | 247 kB  00:00:06
----------------------------------------------------------------------------------------
合計                                                       135 kB/s | 861 kB  00:06
Running transaction check
Running transaction test
Transaction test succeeded
Running transaction
警告: RPMDB は yum 以外で変更されました。
  インストール中          : python-chardet-2.2.1-1.el7_1.noarch                     1/4
  インストール中          : python-kitchen-1.1.1-5.el7.noarch                       2/4
  インストール中          : libxml2-python-2.9.1-6.el7_2.3.x86_64                   3/4
  インストール中          : yum-utils-1.1.31-50.el7.noarch                          4/4
  検証中                  : libxml2-python-2.9.1-6.el7_2.3.x86_64                   1/4
  検証中                  : python-kitchen-1.1.1-5.el7.noarch                       2/4
  検証中                  : yum-utils-1.1.31-50.el7.noarch                          3/4
  検証中                  : python-chardet-2.2.1-1.el7_1.noarch                     4/4

インストール:
  yum-utils.noarch 0:1.1.31-50.el7

依存性関連をインストールしました:
  libxml2-python.x86_64 0:2.9.1-6.el7_2.3     python-chardet.noarch 0:2.2.1-1.el7_1
  python-kitchen.noarch 0:1.1.1-5.el7

完了しました!
[root@vm ~]#


カーネルを削除する

CentOSの初期設定では、最新カーネルと1世代前のカーネルは残るようになっています。
上記2つを対象外とした古いカーネル(kernelとkernel-devel)が削除されます。

もっと古いカーネルも残したいという場合は、オプションを指定すれば削除可能です。
--count=残すカーネル数を追加する。
例えば、最新版および2世代前のカーネルまでを残すならば、
# package-cleanup --oldkernels --count=3
となります。

削除数のデフォルトの値は、2になっているようです。
--count= を指定しなかった場合は、--count=2 と同様になります。

古いカーネルを削除する

今回は上記でカーネルを4つ更新しました。 この4つの中から古い3つのカーネルを削除してみます。

古いカーネル 削除

[root@vm ~]# package-cleanup --oldkernels --count=3
読み込んだプラグイン:fastestmirror
Not removing kernel 3.10.0-957.el7 because it is the running kernel
--> トランザクションの確認を実行しています。
---> パッケージ kernel.x86_64 0:3.10.0-957.1.3.el7 を 削除
--> 依存性解決を終了しました。

依存性を解決しました

========================================================================================
 Package         アーキテクチャー
                                 バージョン                    リポジトリー        容量
========================================================================================
削除中:
 kernel          x86_64          3.10.0-957.1.3.el7            installed           63 M

トランザクションの要約
========================================================================================
削除  1 パッケージ

インストール容量: 63 M
上記の処理を行います。よろしいでしょうか? [y/N]y
Downloading packages:
Running transaction check
Running transaction test
Transaction test succeeded
Running transaction
  削除中                  : kernel-3.10.0-957.1.3.el7.x86_64                        1/1
  検証中                  : kernel-3.10.0-957.1.3.el7.x86_64                        1/1

削除しました:
  kernel.x86_64 0:3.10.0-957.1.3.el7

完了しました!
[root@vm ~]#


削除後の状態確認

古いカーネルが実際に削除されたか確認します。
削除前は5つのカーネルがありましたが、1つ減って4つになっています。


[root@vm ~]# rpm -q kernel
kernel-3.10.0-957.el7.x86_64
kernel-3.10.0-957.10.1.el7.x86_64
kernel-3.10.0-957.12.1.el7.x86_64
kernel-3.10.0-957.12.2.el7.x86_64
[root@vm ~]#

/bootの残量を確認する

カーネル削除後、/bootの容量・残量を確認してみます。
252Mの容量を使用していたのが、222Mになって少し減っていました。

/boot容量確認

[root@vm ~]# df -h
ファイルシス            サイズ  使用  残り 使用% マウント位置
/dev/mapper/centos-root    47G  1.9G   46G    4% /
devtmpfs                  484M     0  484M    0% /dev
tmpfs                     496M     0  496M    0% /dev/shm
tmpfs                     496M  6.7M  489M    2% /run
tmpfs                     496M     0  496M    0% /sys/fs/cgroup
/dev/sda1                1014M  222M  793M   22% /boot
tmpfs                     100M     0  100M    0% /run/user/0
[root@vm ~]#


以上、CentOS-7で不要な古いカーネルを削除してboot領域を確保する方法でした。


0 件のコメント:

人気記事

このブログを検索