CentOS6からメジャーバージョンアップ出来なくて困っている方へ

CentOSはメジャーバージョンアップ出来ない

現在サポート期間中のCentOSはバージョン6,7,8ですが、メジャーバージョンアップが出来なくなっています。(RHELは出来ます)

アップグレード内容 対応・非対応
6->7 CentOS6.7以降はアップグレードツールが非対応
7->8 非対応・開発チームにツール提供の意思なし

ちまちまと依存関係を解決しながら問題を取り除ける自身がある人以外は、素直にクリーンインストールするしかないでしょう。

Debian系のアップグレード

Debianにはアップグレードのためのドキュメントが用意されているので、CentOS系よりはアップグレードが簡単だと思います。

しかしデスクトップ環境などがアップグレード後に動かなくなることは良くあり、自分で解決する必要があります。

最低限の情報だけダンプして、クリーンインストールしよう!

データ領域

ユーザディレクトリ(/home/)やWEBサイト(/var/www/)はバージョンアップ後にも必要だと思うので、どこかにバックアップを取っておきます。

ユーザ・グループ

ユーザやグループの情報は残しておきたいものです。 以下の4ファイルをバックアップしておきましょう。

  • /etc/password
  • /etc/shadow
  • /etc/group
  • /etc/gshadow

ホームディレクトリに設定された権限をそのまま使うには、ユーザ名ではなくuIDを揃える必要があるので、ファイルごとバックアップしましょう。

パスワードはハッシュ化されていますが、アルゴリズムがハッシュ化後の文字列に指定されています。なので、OSを変えてもそのまま使えます。

ネットワーク

前の環境の情報をメモしておきましょう。

$ hostname

ネットワーク構成にもよりますが、固定IPがある場合にはそれもメモします。

$ ifconfig

DHCPサーバやDNSを運用している場合には、その情報もダンプします。

  • /etc/dhcpd.conf
  • /etc/named.conf
  • /var/named/

セキュリティ

CentOS6ではiptablesを使いますが、CentOS7以降はfirewalldを使います。設定コピーというよりは、設定内容を理解して再設定することになるでしょう。

firewalldを使っている環境間で移行するなら、/etc/firewalld内の必要なファイルをダンプしましょう。特にzones/,services/ディレクトリは必要な方が多いでしょう。

SELinuxを使っている場合、その設定もバックアップが必要です。 例えば、ブール値は以下のコマンドでリストアップ出来ます。初期値と現在値が違う設定に注意しておけば良いでしょう。

# semanage boolean -l

SQL

SQLサーバを使用している場合はダンプファイルを作成しておきます。MySQL(MariaDB)の場合には以下のコマンドで十分です。

$ mysqldump -u [username] -p [password] [DB name] > db1.dumpl

ちなみに、mysqlというDBもダンプしておけば、復旧が楽です。

$ mysqldump -u [username] -p [password] mysql > mysql.dumpl

クリーンインストール後

基本的に、ダンプした内容を設定ファイルにコピペしていけばOKです。

設定ファイルをそのまま置き換えるのはお勧めしません。パッケージもバージョンアップされています。古いファイルを使い回さず、必要部分だけ書き加えるようにしましょう。

ユーザ・グループ

元のファイルにはすべてのユーザ・グループ情報が記述されていますが、一般的なユーザーはuID100番台からです。その部分をすべてコピーしましょう。

uID 1,2桁のものは、特にパスワードをせっていしていなければ、クリーンインストール後は弄らないことをお勧めします。rootパスワードは古いものと置き換えてもいいです。

ネットワーク

CentOS7以降は、設定ファイルを編集するのではなく、ツールを使うことが推奨されています。

CUIではnmcliコマンドを、GUIではNetwork Managerを使って古い設定を反映させて下さい。

セキュリティ

iptablesを使っていた場合、対応する設定をfirewalldに反映し直します。これは手作業になるでしょう。

以前からfirewalldを使っていたなら、設定ファイルを同じディレクトリに戻せば細かな設定が復元できます。 Ethernetポートごとのデフォルトzone設定は手動でし直すのが早いと思われます。

SELinuxも、setseboolコマンドを使って設定を戻しましょう。多くの場合はデフォルト値で良いはずです。

SQL

SQLはダンプファイルをmysqlコマンドに与えれば戻ります。

$ mysql -u [username] -p [password] < mysql.dump
$ mysql -u [username] -p [password] < db1.dump

おわりに

クリーンインストールしたOSに、古いサーバの情報を反映させるためのやることリストを作りました。

心配ならば、ディスク全体をどこかにバックアップしておけば漏れがあっても安心です。