CentOS 5 に xen を入れてみたら、うっかりハマった

今時のOSなら yumxen とか一発で入るから楽勝とかおもってたけどハードの問題でうっかりハマることになったので、そのへんをまとめます。

まずやっておきたいこと

CPUが xen に対応しているかどうかチェックする、以下のような表示の場合は対応してる

# grep pae /proc/cpuinfo
flags           : fpu tsc msr pae mce cx8 apic mtrr mca cmov pat pse36 clflush dts acpi mmx fxsr sse sse2 ss ht tm pbe nx lm constant_tsc up pni monitor ds_cpl tm2 cid cx16 xtpr lahf_lm

完全仮想化に対応しているかチェックする、以下のようになにも表示されなければ対応してない

# egrep -e 'vmx|svm' /proc/cpuinfo

BIOSで有効になっているかチェックする、以下のような表示の場合は対応してない

# cat /sys/hypervisor/properties/capabilities
xen-3.0-x86_32p

今回 xen の環境を作る上で完全仮想化に対応していなくて domain-U を作成するときにオプションが必要だった。

xen のインストール

xen 対応のカーネルのインストールと xen のインストールをする

# yum install kernel-xen xen

xen 対応のカーネルから立ち上がるようにする

# vi /etc/grub.conf

default=0
の部分をxen 対応のカーネルに指定、おそらく1になってるのを0にすればいいはず

kernel /xen.gz-2.6.18-164.6.1.el5 dom0_mem=380000
xen 対応カーネル部分のkernel行に dom0_mem= を追加して domain-0 に割り当てるメモリを指定する

再起動後、xenが動いているか確認する。

# xm list
Name                                      ID Mem(MiB) VCPUs State   Time(s)
Domain-0                                   0      372     1 r-----    415.7

domin-U の作成をする。promptはコンソールからインストールする場合でparavirtは準仮想化でインストールする。

# virt-install --prompt --paravirt
What is the name of your virtual machine? centos
 How much RAM should be allocated (in megabytes)? 256
 What would you like to use as the disk (file path)? /var/lib/xen/images/centos.img
 How large would you like the disk (/var/lib/xen/images/centos.img) to be (in gigabytes)? 8
 What is the install URL? http://ftp.iij.ad.jp/pub/linux/centos/5/os/i386/

または、コマンドラインで指定してやると対話する必要なくて楽だったりする

# virt-install --prompt --paravirt --name=centos --ram=256 --file=/var/lib/xen/images/centos.img --file-size=8 --location=http://ftp.iij.ad.jp/pub/linux/centos/5/os/i386/

読み込み終わったらコンソールに戻るので domain-U にコンソールを移動してインストール作業をする

# xm console centos

インストールが終わって再起動をしたら、またコンソールに戻るので domain-U を立ち上げる。(これは上手く再起動がかからなかったから必要なのかなー?)

# xm create /etc/xen/centos

domain-U が立ち上がってるのを確認する。

# xm list
Name                                        ID Mem(MiB) VCPUs State   Time(s)
Domain-0                                   0      372         1    r-----    418.6
centos                                       4      255         1    -b----     69.9

ということで domain-U ができた。 --paravirt が必要なことを知るのに時間を費やしてしまった。。。

また domain-U の削除をする場合は

# xm shutdown centos
# rm -rf /var/lib/xen/images/centos.img
# rm -rf /etc/xen/centos

とまぁ、直接消す感じでいいと思う