CentOSとXenで仮想サーバーを立てる。

ホストOS:32bit CentOS 5.4
ゲストOS:32bit CentOS 5.5


初めてのXen、仮想サーバーの構築手順。思っていたよりも遥かに手軽だったので、これからと言う方は参考にして下さい。間違った情報の可能性もあるので、間違っていたらご指摘いただけると幸いです。


その前に、仮想手段から。今後Linuxにおける仮想化技術はKVMへスイッチされ、CentOS 6からはそちらがメインストリートになる予想です。KVMは完全仮想化でCPUに対してVT等の制限がかかりますが、現状のCPUは殆どが完全仮想化対応しているので非常に現実的なものになっています。


これから仮想化を考えているならKVMも視野に入れておくと良いかも知れません。
一方、Xenは準仮想化ができる、技術としてかなり安定している、枯れている、情報が多い。と言うことがメリットでしょう。


ちなみにCitrixはOracle Linuxを推奨していく雰囲気です。
また、SolarisにはSunxVMと言う仮想技術がありますが、コレはほぼXenで通用するらしいので、この後長くXenを使う予定ならばSolarisも選択肢としてもアリだと個人的には思います。(Solarisの運営自体が右往左往していますがそれは別の問題)


■ハードウェアについて。
Xenならば準仮想を使用する事がメインとなると思うので、CPUに対する制限はありません。
メモリについては動かす仮想マシンの分だけ用意してやる必要があるので多いことに越したことは無いです。参考までに私は2GBでDmain-0:256MB DmainU-1:512MB DomainU-2:768MBで動かしています。
HDD容量も動かす仮想マシンの使う分だけ用意して上げてください。


■ホストOSのインストール
CentOSの最小構成(ベースシステム)のみでインストール。HDDのパーティションはお好みで。仮想マシン用のストレージはホストのHDD空間にディスクイメージファイルとして乗るので、仮想マシン専用にHDD領域をこの時点で残してしておく必要はありません。
再起動後不要なサービスを停止します。(青歯とかいらないよね、あとSELinuxは停止必須。)
ホストOSはXen専用にするので不要なアプリケーションはインストールしない方が良いでしょう。(このOSのパフォーマンスがゲストに直結するため。バイザーコールに専念させる。)
このマシンは基本的にスーパーユーザーで操作します。


XenXenカーネルのインストール


# vi /etc/modprobe.conf
alias scsi_hostadapter xenblk      最終行に追加

# yum -y install xen kernel-xen

# vi /etc/grub.conf          デフォルトカーネル変更
# grub.conf generated by anaconda
#
# Note that you do not have to rerun grub after making changes to this file
# NOTICE: You have a /boot partition. This means that
# all kernel and initrd paths are relative to /boot/, eg.
# root (hd0,0)
# kernel /vmlinuz-version ro root=/dev/Host/LogVol01
# initrd /initrd-version.img
#boot=/dev/sda

default=0 ←xenカーネルを選ぶ(下のtitle 0スタート)
timeout=5
splashimage=(hd0,0)/grub/splash.xpm.gz
hiddenmenu

title CentOS (2.6.18-8.1.1.el5xen)
root (hd0,0)
kernel /xen.gz-2.6.18-8.1.1.el5 dom0_mem=512M ←ホストOSのメモリ使用量の明記
module /vmlinuz-2.6.18-8.1.1.el5xen ro root=/dev/Xen/Host00
module /initrd-2.6.18-8.1.1.el5xen.img
title CentOS (2.6.18-8.1.1.el5)
root (hd0,0)
kernel /vmlinuz-2.6.18-8.1.1.el5 ro root=/dev/Xen/Host00
initrd /initrd-2.6.18-8.1.1.el5.img
title CentOS (2.6.18-8.el5)
root (hd0,0)
kernel /vmlinuz-2.6.18-8.el5 ro root=/dev/Xen/Host00
initrd /initrd-2.6.18-8.el5.img

# chkconfig xend on
# chkconfig xendomains on
# shutdown -r now

# uname -r  ←カーネルの確認。xenが付いていればOK
2.6.18-8.1.1.el5xen

# xm list# ←動作確認
Name ID Mem(MiB) VCPUs State Time(s)
Domain-0 0 510 2 r----- 12.6

■ゲストOSのインストール
ゲストOSにDebianOpenSolaris等は大変そうな感じです。CentOSだと素晴らしく手軽にインストールできるので個人的には超お勧めです。
インストールコマンドを打って対話式で設定、テキストモードでインストールしていきます。OSイメージはネットワーク越しにその場で取ってきます。


#virt-install --nographics --prompt --paravirt
[仮想サーバ名] ※この場合:TestOS
What is the name of your virtual machine? TestOS
[割り当てるメモリ量] ※この場合:512MB
How much RAM should be allocated (in megabytes)? 512
[インストール先仮想ディスク名] ※この場合:/hoge/foo/ディレクトリにbar.imgが保存される。
What would you like to use as the disk (path)? /hoge/foo/bar.img
[仮想ディスク割り当てサイズ] ※この場合:20GB(最低2GBは必要な感じです)
How large would you like the disk (/hoge/foo/bar.img) to be (in gigabytes)? 20
[パッケージ取得先] ※この場合:CentOS 5.5(アドレス先で好みのをチョイスしてください)
What is the install location? http://ftp.iij.ad.jp/pub/linux/centos/5.5/os/i386/
インストールがテキストモードで行われます。言語は日本語を選んでも英語になるのはデフォです。パーティション設定はしても意味が無いので飛ばしてください。


ゲストOS再起動後ログインし、適当に初期設定と確認。仮想マシンから抜ける場合は ctrl + ] で抜けれます。
xenコマンドで移動することも出来ますが、今後はホストやクライアントからはからSSHでログインするのが良いでしょう。


# xm list# ←動作確認
Name ID Mem(MiB) VCPUs State Time(s)
Domain-0 0 510 2 r----- 502.6
TestOS 1 510 1 -b---- 12.6


以上です。CentOS on CentOSなら意外にに簡単でしょう?