クラウドコンピューティングにまつわる話をつれづれなるままに。。。

2009年7月1日水曜日

EC2でkexecできないか?

EC2ではAMIをカスタマイズできるし、たくさんのAMIがアップロードされているけど、カーネルはあらかじめ用意されたAKI (Amazon Kernel Image)を使う必要がある。現状では、AKIはAmazonか一部のベンダにしか作れないようだ。それならば、kexecを使ってカーネルを起動してやればいいのではと考えたが、結論としてはうまくいかなかった。

kexecは現在起動中のカーネルとは別カーネルを起動する仕掛けで、BIOSやブートローダをスキップできるので、再起動が高速化される。特に高いサーバマシンになるほどBIOSの処理時間が長くなるので、頻繁にリブートが必要なときは便利な機能だ。また、kexecを利用したkdumpというカーネルダンプ機能もある。詳細は、「Kexecを使ってLinuxの起動を早める」などを参照のこと。

kexecを使うにはカーネルが対応していることはもちろん、kexec-toolsというパッケージをインストールする必要がある。大まかな動作の流れとしては、新しく起動するカーネルイメージをメモリにロードし、リブートという2段階になる。

で、早速EC2のインスタンス上で実行してみたところ、kexec -lでカーネルイメージをロードする段階で失敗してしまった。

[root@domU-12-31-39-03-2C-55 ~]# kexec -l --initrd=/boot/initrd-2.6.21.7-5.fc8xen.img \
--append='root=/dev/sda1 ro 4' /boot/vmlinuz-2.6.21.7-5.fc8xen
Invalid memory segment 0xc1000000 - 0xc12d3fff


一方、手元のCentOS 5.3環境で実行してみたところ、kexecの実行までは行くのだが、VMがシャットダウンしてしまった。

# kexec -l --append='root=/dev/xvda1 ro console=hvc0 xencons=tty' --console-serial /boot/vmlinuz-2.6.26
# kexec -e
Starting new kernel


ログ(/var/log/xen/xend.log)には、次のメッセージが出力されていた。

INFO (XendDomainInfo:994) Domain has shutdown: name=lenny id=3 reason=poweroff.


むぅ、domUのkexecってちゃんと対応されているものなのかな?ちなみに、Xenのバージョンは、EC2が3.0.3-rc5-8.1.14.eで、CentOSが3.1.2-128.1.14.el5。

関連情報