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 |
思ったより安い……時もある、Amazon |