完全仮想化なCentOS5.6を準仮想化にする[XenServer]

このエントリーをはてなブックマークに追加


2011-10-20


XenServer Tips 完全仮想化のLinux VMを準仮想化対応に変更する
http://techtarget.itmedia.co.jp/tt/news/1109/06/news01.html

という記事が出るよ!という予告があってからわくわくしてたら、CentOSの例がなかったので、しょんぼり。
きっと誰かやってるよね!と Google 先生に聞きながらやってみたら出来たので、以下に備忘録として書いとく。

ちなみに参考URLにも記載しましたが

PV enabling an HVM from VMware on XenServer (CentOS RedHat)
http://itproctology.blogspot.com/2009/06/pv-enable-hvm-on-xenserver.html

がすごく参考になりました

■ HVMなサーバでの作業

1. なにはともあれ、Xen対応kernelをインストールする

# yum install kernel-xen


2. PVドライバ付きの initrd を作成する。

# cd /boot
mkinitrd --omit-scsi-modules --with=xennet --with=xenblk --preload=xenblk initrd-$(uname -r)xen-no-scsi.img $(uname -r)xen


ただ、uname -r の結果と、インストールした kernel-xen のバージョンが違うこともあるので、違っていたら頑張って打ち込む。

# cd /boot
# mkinitrd --omit-scsi-modules --with=xennet --with=xenblk --preload=xenblk \
   initrd-2.6.18-274.3.1.el5xen-no-scsi.img 2.6.18-274.3.1.el5xen


次に、/boot/grub/menu.lst にある kernel-xen のあたりを下記のように書き換える。

title CentOS (2.6.18-274.3.1.el5xen-no-scsi)
 root (hd0,0)
 kernel /vmlinuz-2.6.18-274.3.1.el5xen ro root=/dev/VolGroup00/LogVol00 console=xvc0
 initrd /initrd-2.6.18-274.3.1.el5xen-no-scsi.img


CentOS5.6 だと、/etc/inittab に

co:2345:respawn:/sbin/agetty xvc0 9600 vt100-nav


がもともと記載されているので、コンソール周りでのこれ以上の対応は不要だと思います。

もちろん、このセクションの kernel で boot するように

default=0


あたりを適当に書き換える必要があります。

で、ここでのありがちなミスが "modules" を "initrd" に書き換え忘れ。忘れてると、あとで

VFS: Cannot open root device "VolGroup00/LogVol00" or unknown-block(0,0)
Please append a correct "root=" boot option
Kernel panic - not syncing: VFS: Unable to mount root fs on unknown-block(0,0)


とか言って、起動してくれません。

■ XenServerで、PV化を実施する。

次に、VMのパラメータを変更していきます。このあたりは、先日の vyatta のインストール [2011-10-19-1]とほとんど一緒です。
以下は、すべて XenServer上で実施します(対象VM名を HVM2PV にしてあります)

# xe vm-list name-label=HVM2PV params=uuid


ここで得られるのが、vm の uuid です。でこれをもとに作業していきます。

a) boot policyのクリアおよび bootloaderの指定

# xe vm-param-set uuid=<uuid> HVM-boot-policy=
# xe vm-param-set uuid=<uuid> PV-bootloader=pygrub


b) 利用している HDDの vbd uuid を調べる

# xe vm-disk-list uuid=<vm uuid>


で調べた vbd の uuid を指定して bootable にします。

# xe vbd-param-set uuid=<vbd uuid> bootable=true


これで、準仮想化(PV)の VM として起動してくれます。例によって、ログインプロンプトが出たけどコンソールから入力が受け付けられないよ!ってなった場合には、XenCenterを再起動してください。

まぁミスったら、この逆で

# xe vbd-param-set uuid=<vbd uuid> bootable=false
# xe vm-param-set uuid=<uuid> HVM-boot-policy="BIOS order"
# xe vm-param-set uuid=<uuid> PV-bootloader=


にして、起動させ、xen kernel じゃない kernel を grub menu から選択してもらえれば、復旧できるかと思います。

あとは、xen-tools を入れれば、XenMotionも可能になります。ただ、最初に紹介した記事にもあるように、仮想マシンにCDを入れっぱなしの状態にすると、

too many bootable disks


云々と言われて起動しなくなるので、注意が必要です。

参考URL
- http://itproctology.blogspot.com/2009/06/pv-enable-hvm-on-xenserver.html
- http://forums.citrix.com/thread.jspa?threadID=266975



IPv4/IPv6 meter
検索キーワードは複数指定できます
ChangeLogを検索
Google
Web www.kunitake.org
思ったより安い……時もある、Amazon

カテゴリ