15分でOK!ServersMan@VPSにCentOS6を入れる方法


最近、DTIのServersMan@VPSがお安いので良く使ってます。


今月頭にCentOS6が出て今月の定例アップデートでCentOS6来るかな?と期待してたんだけど流石にまだでした…。でもいい加減に痺れを切らせてしまったので自分で入れ替えてみることに挑戦してみました。ServeresMan@VPSはOpenVZの仮想化なのでとても単純な動作をしてくれるのが良いですね。
で、本当はCentOS6にしたかったんだけどOpenVZのCentOS6テンプレートはまだ無いみたいなので、自分でゼロからCentOS6のテンプレート作成にチャレンジしました。でも上手く動かなかったのでCentOS6を諦めてSL6(≒CentOS6)を入れることにしました。(※現在はCentOS6のテンプレートがあり、それを使う手順を最後に追記してあります)
てことでSL6(ScientificLinux6)を使うことにします。SL6はCentOS6と同様RHEL6のクローンで「貧乏人のRedHat: CentOSとScientific Linuxの違い | beroの日記 | スラド」によると、これらは殆ど同じと考えてしまっても良いようです。
更に入れ替え手順についても先人がいて、基本的にはこのサイトの手順通りにやれば出来てしまいます。実際にコレを試してみたところ何度かミスをしましたが最終的には上手くいったので今回の記事を書いてます。
あ、ちなみに、yum upgradeとかでCentOS5から6へアップグレードするのはちょっと前に格闘した結果、負けたので今回の手段を試してみた口です…。

スクリプト化してみた

で、今回はこの作業が一発でできたらいいなーってことで手順を整理して一つのスクリプトにしてみました。それが以下のスクリプトです。

内容は以下のようになってます。2つは内容はほぼ同じで、openvz.orgからダウンロードするテンプレートのURLが違うだけです。

# 作業のジャマなので不要なプロセスを停止
/etc/init.d/ajaxterm stop
/etc/init.d/crond stop
/etc/init.d/httpd stop
/etc/init.d/saslauthd stop
/etc/init.d/syslog stop
/etc/init.d/xinetd stop

# 公開されてるSL6のテンプレートを元に新環境を作る
mkdir /SL6
curl http://download.openvz.org/template/precreated/scientific-6-x86_64.tar.gz | tar xfzv - -C /SL6
/bin/cp -ap /etc/resolv.conf /SL6/etc/
/bin/cp -ap /etc/sysconfig/network /SL6/etc/sysconfig/
/bin/cp -ap /etc/sysconfig/network-scripts/ifcfg-venet0* /SL6/etc/sysconfig/network-scripts/
/bin/cp -ap /etc/ssh/ssh* /SL6/etc/ssh/
/bin/cp -ap /aquota.group /SL6/
/bin/cp -ap /aquota.user /SL6/
ln -sfn /usr/share/zoneinfo/Japan /SL6/etc/localtime

# 現行システムとSL6を入れ替える
yum -y install busybox
mkdir /CE5
/sbin/busybox mv /* /CE5/
/CE5/sbin/busybox mv /CE5/SL6/* /

# 終わり
echo "passwd コマンドで新環境のパスワードを設定して下さい。"
echo "デフォルトはパスワード未設定なのでそのままだとログインできなくなります。"
echo "管理コンソールから、停止(5分くらい?)→起動(2分くらい)すればSL6が起動します。"

実際の手順

入れ替え作業は超シンプルです。CentOSを選択して契約したVPSsshでログイン後、以下の1行を実行するだけです。入れ替え前のOSイメージは /CE5 に残ります。

curl http://www.kawaz.jp/tmp/openvz/OpenVZ-CE5toSL6-x86_64.sh | time sh

何回か試してみましたが月490円のEntryプラン環境で実行すると大体15分くらいで入れ替えが完了するようです。


再起動passwdコマンドで新環境のrootパスワードを設定するのを忘れないで下さい。入れ替え後はrootパスワードが未設定状態なのでこれを忘れるとログインできなくなります。万が一ログイン出来なくなったり起動しなくなったら管理画面(MyDTI)から完全初期化して最初からやり直して下さい。大抵の事は何をやらかしてもこの「手軽に完全初期化」をすれば無かったことになるので多少無茶なことも試しやすくて気が楽ですw
ServeresManで採用されているOpenVZという仮想化技術ではカーネルはホストOSのモノが使われるのでゲスト側ではカーネル周りのケアが不要、その為OS内のファイルを丸ごと入れ替えるという強行手段でも動いてしまうというのがパワフルで凄いですね(^^;


最後になりますが、利用規約の30条にあるように、今回の行為は保守範囲外にあたり、サポートが受けられなくなると思いますので肝に命じておいて下さい。ただ、ざっと読んだ感じは保守範囲外なだけで禁止事項には該当しないようなので自己責任ならOKじゃないかな?と思います。

公式から感謝された…、だと?

追記) CentOS6のテンプレートも出てきたのでスクリプトも追加しておいた

現在beta版テンプレートが公開されてるので以下でCentOS6への入れ替えが出来ます。

ベータが終わって正式版になったらopenvz側のURLで /beta/ が無くなる筈なので、そしたら↓のスクリプトで正式版のCentOS6テンプレートに入れ替えが出来るはず。
現在CentOS6正式版のテンプレートが公開されているので以下のスクリプトでCentOS6に入れ替えが出来ます。