Posted by & filed under いろいろ.


Ariel Advent Calendar 2011の24日目の記事です。

みなさん、3連休どのようにお過ごしでしょうか。

28日が仕事納めで4日が仕事始めの場合、
3連休→3日→6連休→3日→3連休
となるので、休日にあまり使わないタイプの社内サーバーのメンテナンスには絶好のチャンス…と言えなくもないです。

また、いまだに debian lenny や CentOS4 を使っているという場合は、
来年の2月にやってくるサポート終了に向けて、アップデート等をするのに良い機会…とも言えます。

そこで、(社内向けでなく対外的なサーバーですが)、ありえるえりあが動いているサーバーの debian lenny から squeezeへのアップデートを行う事にしてみる事にしました。

ありえるえりあのサーバーについて

ありえるえりあは、サーバールームの隅に置かれているPCサーバー上で動いています。

dev 3rd

現在のサーバー。 最近9980円くらいで売っている所もあったらしいですが、購入した時はもう少し高かったはずのExpress5800 GT110bです。CPUはそのままでメモリだけ増設しています。CPU: Celeron G1101、メモリ4GB


dev 2nd

先代のサーバー。 1万5千円くらいで売っていた ML115G1+CPUとメモリを交換。CPUはAthlonX2 5400BE, メモリ4GB


dev 1st

先々代のサーバー。 DELL Dimension 2100 で、CPUはCeleron 1GHz、メモリは384MB。結構長い間稼働していました。

いきなり実環境でアップデートするのは怖いので、一旦クローンを作り、社内のVMWare ESXiサーバーのVM上でアップデートを試し、確認後、実環境でアップデートしようという事になりました。

クローンの作成

ESXiサーバーのVMにするので、VMWare vCenter Converter StandaloneでP2Vをしようと思ったのですが、
sshで公開鍵の認証を使っている環境からのP2Vの方法がわかりませんでした。

どうするか途方に暮れていた所、稼働中のシステムをブータブルなisoイメージに変更出来るという
Mondo rescue というツールが見つかりました。
http://www.mondorescue.org/

とりあえず、

  1. 対象サーバーに mondo rescueをインストール
  2. ブータブルなisoイメージ作成
  3. ESXiサーバーで参照可能な場所にコピー
  4. 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に記事を書くようです。


関連文書:

Comments are closed.