Ariel Advent Calendar 2011の24日目の記事です。
みなさん、3連休どのようにお過ごしでしょうか。
28日が仕事納めで4日が仕事始めの場合、
3連休→3日→6連休→3日→3連休
となるので、休日にあまり使わないタイプの社内サーバーのメンテナンスには絶好のチャンス…と言えなくもないです。
また、いまだに debian lenny や CentOS4 を使っているという場合は、
来年の2月にやってくるサポート終了に向けて、アップデート等をするのに良い機会…とも言えます。
そこで、(社内向けでなく対外的なサーバーですが)、ありえるえりあが動いているサーバーの debian lenny から squeezeへのアップデートを行う事にしてみる事にしました。
ありえるえりあのサーバーについて
ありえるえりあは、サーバールームの隅に置かれているPCサーバー上で動いています。
いきなり実環境でアップデートするのは怖いので、一旦クローンを作り、社内のVMWare ESXiサーバーのVM上でアップデートを試し、確認後、実環境でアップデートしようという事になりました。
クローンの作成
ESXiサーバーのVMにするので、VMWare vCenter Converter StandaloneでP2Vをしようと思ったのですが、
sshで公開鍵の認証を使っている環境からのP2Vの方法がわかりませんでした。
どうするか途方に暮れていた所、稼働中のシステムをブータブルなisoイメージに変更出来るという
Mondo rescue というツールが見つかりました。
http://www.mondorescue.org/
とりあえず、
- 対象サーバーに mondo rescueをインストール
- ブータブルなisoイメージ作成
- ESXiサーバーで参照可能な場所にコピー
- isoイメージを用いてVM作成
としてみます。
1. 対象サーバーに mondo rescueをインストール
debian5 (lenny)での Mondo Rescueのインストールは以下のページを参照して
http://www.tab2.jp/2009/05/debian-lenny-mondo-rescue.html
/etc/apt/sources.listに
——————————————–
deb ftp://ftp.mondorescue.org/debian 5.0 contrib
deb-src ftp://ftp.mondorescue.org/debian 5.0 contrib
——————————————–
を追加
# apt-get update
# apt-get install mondo
でインストール
2. ブータブルなisoイメージ作成
http://thinkit.co.jp/story/2010/12/22/1926?page=0,1やmanなどを参考に mondoarchiveコマンドでisoイメージを作成
圧縮方法として、bzip2とgzip、lzoを選べるようです。
圧縮率も0-9まで選べるようです。とりあえずは デフォルトのbzip2の圧縮と、lzoの圧縮を試してみました。
2.1. 通常のbzip2での圧縮の場合
# /usr/sbin/mondoarchive -Oi -N -p dev-20111213 -l GRUB -s 4480m -d /tmp
-Oi isoイメージ作成
-N nfsやsambaなどネットワークファイルシステムは対象外にする
-p isoイメージのファイル名のprefix
-l GRUB|LILO|ELILO|RAW ブートローダーの選択
-s isoイメージのサイズ。DVDだと4480mくらいらしい。これよりサイズが大きい場合はファイルが複数個生成
-d isoイメージの出力先
実行中は結構負荷が高めなので、深夜、早朝にするのが良さそうです。
* サイズ
-rw-r–r– 1 root root 4279570432 2011-12-15 23:44 dev-20111213-1.iso
* かかった時間
30分くらい
real 31m47.137s
user 25m58.173s
sys 2m11.944s
2.2. lzo圧縮の場合
-Lを追加してlzo圧縮をしてみます。
# /usr/sbin/mondoarchive -Oi -L -N -p dev-20111213 -l GRUB -s 4480m -d /tmp
こちらも実行中は結構負荷が高め。深夜、早朝にするのが良さそうです。
isoイメージ作成完了
* サイズ
-rw-r–r– 1 root root 4685103104 2011-12-13 23:47 dev-20111213-1.iso
-rw-r–r– 1 root root 167270400 2011-12-13 23:47 dev-20111213-2.iso
iso1個には収まりませんでした。
* かかった時間
15分くらい
real 14m34.298s
user 2m23.945s
sys 2m6.956s
圧縮率の指定をしていない場合、lzoの方が半分の時間で済みますが、
サイズは13%くらい大きくなりました。
3. ESXiサーバーで参照可能な場所にコピー
scpなどでコピー
4. isoイメージを用いてVM作成
ESXiサーバーでVMを作成し、isoイメージとしてmondo rescueで作成したisoイメージを使用します。
VMを起動し、isoイメージから起動すると画面に
boot:
と出てきますが、ここで
nuke ramdisk_blocksize=1024 と入力すると自動的にリストア開始
interactive ramdisk_blocksize=1024 と入力すると対話的なリストア開始
となります。(*1)
VMのディスクのサイズは実機とは異なるようにしたので、
interactive ramdisk_blocksize=1024 で実行
途中でパーティションなどの設定を変更しました。
ディスクサイズを揃えておけば、パーテションの設定変更はいらないと思います。
最後に終了しようとしても勝手にmondo rescueが再起動してしまう事態が発生。
どうしようもないので強制的にVMの電源を切りました。
その後VMを起動してみるとちゃんと起動しました。
(*1) ramdisk_blocksize=1024 は参考にしたページからそのまま
持ってきただけで、本当に必要かどうか、何故必要かどうかは、ちゃんと調べていません。すみません…
5. ネットワーク設定の変更
クローンのVMのホスト名をdev-clone.ariel-networks.comとしてみたので、
VMを起動し、/etc/network/interfaces, /etc/hostsname、/etc/hosts、/etc/mail あたりのネットワーク設定を変更しました。
wordpressのホスト名変更については、http://wpdocs.sourceforge.jp/Moving_WordPressを参考に、データベースのファイルをダンプし、
sed -e ‘s/dev.ariel-networks.com/dev-clone.ariel-networks.com/g’
で置換し、その後リストアしました。
wordpressのキャッシュのプラグインを入れている場合は、キャッシュを削除します。
これで、dev.ariel-networks.comのクローンのdev-clone.ariel-networks.comを作成出来ました。
mondo rescueで参考にしたページ
http://thinkit.co.jp/story/2010/12/22/1926?page=0,1
http://www.atmarkit.co.jp/flinux/rensai/mondorescue/mr_01/01a.html
debian5へのインストール
http://www.tab2.jp/2009/05/debian-lenny-mondo-rescue.html
CentOS5へのインストール
http://www.cozzbox.com/wordpress/archives/426
後編について
後編は単にdebian lenny ->debian squeeze にするだけなのですが、ちょっと後になると思います。
12/25のアリエルのAdvent Calendar
明日はCTO が狙っていたAriel Advent Calendar 2011の最終日を華麗に奪い去った @Shindows さんです。
最終日を奪われて失意のCTOは、元祖Ariel Advent Calendar 2011を立ち上げて12/25に書くとの事
他の賛同者10名も12/25に記事を書くようです。
最近のコメント