no-image

さくらのVPSにXen入れて自宅サーバのイメージを動かした

さくらのVPSを契約したので、自宅サーバで動いていたXenイメージをさくらのVPS上で動かしてみる事にした。結果できたのでメモを公開。

基本的に、以下のサイトの手順を踏めばよい。簡単すぎる。UbuntuはKVMメインでいく事になってる都合でXenでDom0作るの超大変だったので、CentOSもしんどいかと思ったけど、コマンド一発でびっくりした。

CentOS上にDebian GNU/Linux lennyをインストール(Xen) – ククログ(2009-03-16)

新規にXenイメージ作るなら上のサイトだけ見ればいいんだけど、自分の場合は、自宅サーバのUbuntuの上で動いてるXenイメージをさくらのVPSのCentOSの上で動かすという事でいろいろ苦労した。

ディスク容量が足りない

さくらのVPSのディスク容量は20GB。自宅サーバで運用しているイメージは、元々10GBだったんだけど、

xenのディスクイメージを拡張する – /halt/Snapshot

で、20GBにしてしまった。VPS上で構築したDom0が2.5GBくらいもっていくので、その上で動くようにするには、ディスクサイズを縮めないといけない。

まず、自宅サーバのDomUを止めて、cpする。


sudo xm shutdown inhert
cd /xen/domains/inhert
cp disk.img disk_backup.img

みたいな感じ。

次に、resize2fsでディスクサイズを13GBに。resize2fsしようとするとe2fsckしてね。っていわれるのでやる事。

あとは縮めたディスクをscpでさくらのVPSに投げる。

xenの設定ファイルを作る

設定ファイルは自宅サーバにあったのをコピーする。ただし、kernelとramdiskはさくらのVPS上のやつにする。

イメージが起動しない

これでだいたい設定が終わるので、起動に入るんだけど、イメージが起動してくれない。
ぐぐりまくったら以下のコメントを発見して解決した。

Xenがあいかわらずうまくいかない – Ryoの開発日記

もう動いているかも知れないけれど。
> XENBUS: Device with no driver:device/vbd/2049
これは、root ramdisk image内にxenblk.koが無いので、kernelが仮想ブロックデバイスを扱えないよってことです。
CentOS5のxen kernelはconfig見てもらえばわかりますが、CONFIG_XEN_BLKDEV_BACKEND=mになっていてモジュールを組み込む必要があります。
#/sbin/mkinitrd /boot/initrd-2.6.18-8.1.3.el5xen.img `uname -r` --with xenblk --with xennet --preload xenblk --preload xennet
とかで作ったinitrdを使うと幸せになれるかも知れません。

起動途中でなんか止まる

これはもしかすると自宅サーバで動いてる時からそうだったような気がしてるんだけど、
ログインプロンプトがでる前にコンソール画面がかたまってしまう。
ひたすらぐぐって、以下あたりのページ内容を元に解決した。

nash-hotplugがCPU占有する問題

今までおきてなかったんだけど、nash-hotplugというプロセスがCPUくいまくるという事がおきてる。

What is nash-hotplug and why is it consuming 100% CPU? – VPSlink Forums

とりあえず毎回手動でぶっころす事にした。

移行してみて

今までサーバ移転といえば、大量のアプリをインストールしなおしたり、データをコピーしたりと死ぬほど面倒だったんだけど、イメージまるごと移転させる事で、そういう手間がほぼゼロになったのは感動。
これでもっと安いVPSがでたらまたDom0入れて移転すればいいわけだし、可能性がものすごく広がった感じがする。
あと、さくらのVPSが強力すぎるので、ほとんど重いとか感じない。イメージを動かしてるメモリ量は、前が1GBだったのにたいして、今回は370MBと、大変残念な感じなんだけど、それを意識させないくらいキビキビ動いてる。(ただ、本当に高負荷になった時にどうなるかはしらない)
仮想化+VPSは最高なので皆さんもやってみるべきだと思います。