インフラ

CentOS7からCentOS8にアップグレードする方法

CentOS7からCentOS8にアップグレードする利点


性能アップ

CPU等環境によりますが、CentOS7からCentOS8にアップグレードする事で性能がアップすると言われています。

実際DigitalOceanのStandard Plan 1CPU/1GB RAMでCPUがIntel(R) Xeon(R) Gold 6140 CPU @ 2.30GHzを引いた場合
CentOS 7.6ではどれだけUnixbenchをとっても477-605の範囲という成績でしたが
初めてCentOS 8にアップグレードした時に602→801(34%性能UP)、2回目には605→860(42%性能UP)という成績が出ました。

無視してそのままCentOS 7を使うには大き過ぎる差です。


サポート期限がより未来に

サポート期限がより未来になります。
CentOS 7=2024-06-30
CentOS 8=2029-05


より新しいソフト

バンドルされているソフトがより新しいバージョンになります。

apache 2.4.6 2.4.37
berkeleydb 5.3.21 5.3.28
gcc 4.8.5 8.2.1
git 1.8.3 2.18.1
kernel 3.10.0-957.27.2.el7 4.18.0-80.11.2.el8
mariadb 5.5.64 10.3.11
Perl 5.16.3 5.26.3
PHP 5.4.16 7.2
PostgreSQL 9.2.24 10.6
Python 3.6.8 3.6
Ruby 2.0.0 2.5.3

幾つかのツールが差し替え

yum => dnf
といった差し替えが行われています。


結論: 新規サーバー立ち上げるのならCentOS 8にアップグレードしよう

上記のメリットを考えると、2019/11時点でまだCentOS8を提供していないVPSも多いですが、ゼロからインスタンスを立ち上げる場合、こうしたメリットを考えるとCentOS8で始めたいという方も多いのではないでしょうか。

但し、残念ながらCentOS公式は7から8にアップグレードするツールを提供していません。

なので、ここでは自力でCentOS7から8にコマンドだけでアップグレードする手順を公開します。


CentOS7からCentOS8へアップグレードする手順

注意

既に使っているサーバーで実行する事はお勧めしません。
新たにこれから立ち上げるサーバーなど、失敗して壊れても良い新しいサーバーでやる事をお勧めします。
以下の手順はDigitalOceanのStandardプランのCentOS7.6のインスタンスを0から立ち上げた状態で検証してあります。


コマンド

以下のコマンドをrootで打っていきます。

yum -y update;
yum -y install epel-release;
yum -y install yum-utils;
yum -y install rpmconf;
rpmconf -a;

rpmconf -aを打って聞かれる問いにはひたすらリターンキー

またコピペでコマンドを実行

package-cleanup --leaves;
package-cleanup --orphans;
yum -y install dnf;
dnf -y remove yum yum-metadata-parser;
rm -Rf /etc/yum;
dnf upgrade -y;
dnf -y upgrade http://mirror.bytemark.co.uk/centos/8/BaseOS/x86_64/os/Packages/centos-release-8.0-0.1905.0.9.el8.x86_64.rpm;
dnf -y upgrade https://dl.fedoraproject.org/pub/epel/epel-release-latest-8.noarch.rpm;
dnf clean all;
rpm -e `rpm -q kernel`;
rpm -e --nodeps sysvinit-tools;
dnf -y --releasever=8 --allowerasing --setopt=deltarpm=false distro-sync;
dnf -y install kernel-core;
dnf -y groupupdate "Core" "Minimal Install" --allowerasing;

以下のコマンド

cat /etc/redhat-release;

を打つと

CentOS Linux release 8.0.1905 (Core) 

とCentOS 8にアップグレードされたことが確認できる情報が出てきます。

現在のkernelを確認

uname -a;

そうすると

Linux dev.sakuhindb.com 3.10.0-957.27.2.el7.x86_64 #1 SMP Mon Jul 29 17:46:05 UTC 2019 x86_64 x86_64 x86_64 GNU/Linux

といった値が表示される。

カーネル更新の反映の為サーバーを再起動

shutdown -r now;

起動したらログインして再度

uname -a;

と打って確認

Linux dev.sakuhindb.com 4.18.0-80.11.2.el8_0.x86_64 #1 SMP Tue Sep 24 11:32:19 UTC 2019 x86_64 x86_64 x86_64 GNU/Linux

kernelが3.xから4.xと大幅更新されている事が確認できました。

CentOS8へのアップデートが成功したので、他にもCentOS8のインスタンスを作りたい場合、Snapshotを取れるのなら、ここあたりでとって、snapshotからCentOS8を立ち上げれるようにしましょう。