ubuntuの10.04から12.04にアップグレード(と言うクリーンインストールとリストア)

2013-03-04(Mon) Server

現在面倒を見ているとあるサーバーのUbuntu OSをバージョンアップした時のメモ

バージョンアップ前の10.04もLTSで2015年まではサポートされますが、自分の管理から外れることもあるでしょうし、その前に現時点で最新のバージョンにしておこうと思い立ったわけです。

アップグレードでなくクリーンインストールとリストア

をした理由は、アップグレードしてよかった試しがなかったことです。。。

仮想マシンでやってはブート出来なくなることが多くて、何か悪い物にとりつかれてるんじゃないかと思うぐらい。単純に何かミスしてるとは思いますが。。。

やったこと

必ず、リリースノートは見るべきです。が今回見忘れてた・・・
OSのディスクイメージなどはやる前に用意しましょう。今回は、Ubnuntu server 12.04 64bitを使いました。

  • バックアップ
  • OSのインストール
  • /homeの復元
  • 必要アプリ、デーモンのインストール
  • 設定の復元(/etcを戻す)

続きからやったことをまとめ

現状のバックアップ

いつも/home, /etc, mysqldumpしたものなどは定期バックアップを取っているのですが、念のためにシステム全体でバックアップしておきました。

このときはcpでも良いのですが、tarでファイル属性ごと固めておいたほうが良いです。接続したストレージのファイルシステムに左右されないはずなので。

(cpでやってたのですが、謝ってNTFSのストレージにバックアップしてしまったばかりに属性が保存出来ずに結局定期バックアップしたもので復元していた人です。)

定期バックアップももちろん日頃から行いましょう。ssh経由でtar.gzで固めたものを週に何度かしておきました。日頃から変わるものは一日置き。HTMLなどのあまり変わらないものは週に一度だったはず。

コマンドはこちらを参考に。
Vik's Linux Tips: tarとsshでバックアップを取る方法

OSのインストール

これは特段と普通にセットアップしています。普通はテスト環境用のネットワークを用意すべきでしたが、面倒だったので、ネットワーク周り(設定)も本番環境のものをそのまま利用。

パーティションは/homeとswapと/で分けました。これで次のバージョンアップも/homeが消える心配とか有りません。

(というのを10.04のセットアップで作っていたことを忘れていて本来以上によけいな時間をかけましたorz)
各パーティションのサイズとしては、/は40GB, swapはメインメモリが2GBだったので4GBほど確保。後は/homeに回しました。このへんは適当です。

/homeの復元

/homeは、バックアップしたものをそのままコピーしました。一応ログアウトしてログインし直します。パスワード含むユーザーやグループは、/etc/passwd, /etc/groupsがそれらしいです。 それもまとめて復元。/etcバックアップしておいて助かった(汗)

ユーザーやグループの復元 - 日記と覚書

WEBサーバーのコンテンツは/homeのユーザーに作っていたので、そのまま復元完了です。

必要アプリ、デーモンのインストール, /etcの復元

ここも、実は10.04のパッケージリストを保存しておくべきでした。。。

/etcのディレクトリと、依然書いたセットアップしたときのメモで戻しました。

各種サーバーデーモンも入れ直します。taskselでlamp server, ssh-serverを入れました。

このときに、mysqlがなぜか起動しない現象が現れたので、mysqlのみ一度削除(purge)しセットアップ(install)し直しました。原因がわからなかったのですがmysqlが作るユーザーの問題かも知れません。

byobu, vimなどはserver版を入れたので最初から入っていましたのでパス。

munin-nodeをインストールしたり、定期バックアップ用の設定など戻して終わりです。

DB周りもdumpしたものを流し込みなおして終わりです。(10.04 -> 12.04のmysqlではそれでいけました。文字コード周りはいじりませんでした。)
一応DBを使うWEBアプリの動きはみましたが、今のところ問題はない模様。

もうちょっと用意すべきだった

実は突貫工事で行った作業だった(1日しか時間を考慮しなかった)のですが、せめて以下をやっておけば良かったリスト

  • パッケージリストは作っておくべきだった
  • なにを入れたか解らなくなったため
  • ディスクのパーティションの確認はすべきだった
  • /homeパーティションを戻す時間に手間をかけてました。
  • リリースノートは必ずみる
  • やることはリスト化しておく。
  • 今日の日記がそうであるように
  • 心穏やかにする

というわけで1日面倒をおかけしました関係先皆様にお詫び申し上げます。この日記を教訓としておきます。