xen環境構築

xenの環境構築手順

環境

OS : Debian(squeeze)

xenのインストール

必要なものをaptでインストールします。

# aptitude update
# aptitude install bridge-utils debootstra
# aptitude install xen-linux-system-2.6.32-5-xen-amd64
# aptitude install xen-tools
# aptitude install linux-headers-2.6.32-5-common-xen

xend-config.sxpの編集

# cp -p /etc/xen/xend-config.sxp /etc/xen/xend-config.sxp.orig
# vi /etc/xen/xend-config.sxp

------------------------------------------------
# (network-script network-bridge)
↓
 (network-script network-bridge)
------------------------------------------------

grubの修正

起動順番を変更します。

まずは現状をチェック。

$ grep menuentry /boot/grub/grub.cfg

------------------------------------------------
menuentry 'Debian GNU/Linux, with Linux 2.6.32-5-xen-amd64' --class debian --class gnu-linux --class gnu --class os {
menuentry 'Debian GNU/Linux, with Linux 2.6.32-5-xen-amd64 (recovery mode)' --class debian --class gnu-linux --class gnu --class os {
menuentry 'Debian GNU/Linux, with Linux 2.6.32-5-amd64' --class debian --class gnu-linux --class gnu --class os {
menuentry 'Debian GNU/Linux, with Linux 2.6.32-5-amd64 (recovery mode)' --class debian --class gnu-linux --class gnu --class os {
menuentry 'Debian GNU/Linux, with Linux 2.6.32-5-xen-amd64 and XEN 4.0-amd64' --class debian --class gnu-linux --class gnu --class os --class xen {
menuentry 'Debian GNU/Linux, with Linux 2.6.32-5-xen-amd64 and XEN 4.0-amd64 (recovery mode)' --class debian --class gnu-linux --class gnu --class os --class xen {
------------------------------------------------

何もしないとDebian GNU/Linux, with Linux 2.6.32-5-xen-amd64が起動します。

Debian GNU/Linux, with Linux 2.6.32-5-xen-amd64 and XEN 4.0-amd64が通常起動するように修正します。

# mv -i /etc/grub.d/10_linux /etc/grub.d/21_linux
# update-grub

------------------------------------------------
Generating grub.cfg ...
Found linux image: /boot/vmlinuz-2.6.32-5-xen-amd64
Found initrd image: /boot/initrd.img-2.6.32-5-xen-amd64
Found linux image: /boot/vmlinuz-2.6.32-5-xen-amd64
Found initrd image: /boot/initrd.img-2.6.32-5-xen-amd64
Found linux image: /boot/vmlinuz-2.6.32-5-amd64
Found initrd image: /boot/initrd.img-2.6.32-5-amd64
done
------------------------------------------------

起動順番を確認。

$ grep menuentry /boot/grub/grub.cfg

------------------------------------------------
menuentry 'Debian GNU/Linux, with Linux 2.6.32-5-xen-amd64 and XEN 4.0-amd64' --class debian --class gnu-linux --class gnu --class os --class xen {
menuentry 'Debian GNU/Linux, with Linux 2.6.32-5-xen-amd64 and XEN 4.0-amd64 (recovery mode)' --class debian --class gnu-linux --class gnu --class os --class xen {
menuentry 'Debian GNU/Linux, with Linux 2.6.32-5-xen-amd64' --class debian --class gnu-linux --class gnu --class os {
menuentry 'Debian GNU/Linux, with Linux 2.6.32-5-xen-amd64 (recovery mode)' --class debian --class gnu-linux --class gnu --class os {
menuentry 'Debian GNU/Linux, with Linux 2.6.32-5-amd64' --class debian --class gnu-linux --class gnu --class os {
menuentry 'Debian GNU/Linux, with Linux 2.6.32-5-amd64 (recovery mode)' --class debian --class gnu-linux --class gnu --class os {
------------------------------------------------

Debian GNU/Linux, with Linux 2.6.32-5-xen-amd64 and XEN 4.0-amd64が最初に起動されるようになりました。

save/restore動作の変更

xenの終了時にログを残さないようにします

# vi /etc/default/xendomains

------------------------------------------------
#XENDOMAINS_RESTORE=true
XENDOMAINS_RESTORE=false

#XENDOMAINS_SAVE=/var/lib/xen/save
XENDOMAINS_SAVE=""
------------------------------------------------

再起動

# reboot

再起動後にxm listを実行してみます

# xm list

------------------------------------------------
Name                                        ID   Mem VCPUs      State   Time(s)
Domain-0                                     0  7192     8     r-----      9.1
------------------------------------------------

これでDomain-0が完了しました。

Domain-U (guests)作成ファイルの修正

# vi /etc/xen-tools/xen-tools.conf

環境に合わせて変更します。
------------------------------------------------ 
size   = 50Gb      # Disk image size.
memory = 512Mb    # Memory size
swap   = 2Gb    # Swap size
 
# Default gateway and netmask for new VMs
gateway    = x.x.x.x
netmask    = 255.255.255.0
 
# When creating an image, interactively setup root password
passwd = 1
 
# Let xen-create-image use pygrub, so that the grub from the VM is used, which means you no longer need to store kernels outside the VMs. Keeps things very flexible.
pygrub=1
------------------------------------------------

Domain-Uの作成

ipアドレスとホスト名を指定して実行します。

# xen-create-image --ip xxx.xxx.xxx.xxx --hostname hoge --passwd

これでDomain-Uが作成できました。

Domain-Uの自動起動

Domain-0が起動した際に自動で起動するように設定します。
Domain-0での作業します。

起動ファイルをxen-ryutekiとします。
xendが起動した後に起動するようにして、xendが終了するよりも前に終了するようにします。

# vi /etc/init.d/xen-ryuteki
------------------------------------------------
#!/bin/sh
### BEGIN INIT INFO
# Provides: xen-ryuteki
# Required-Start: $network xend
# Required-Stop: xend
# Default-Start: 2 3 4 5
# Default-Stop: 0 1 6
# Short-Description: xen-ryuteki start/stop script
# Description: Start and stop xen-ryuteki
# placed in /etc/init.d.
### END INIT INFO

domain=ryuteki

case "$1" in
  start)
    xm create ${domain}.cfg
    ;;

  stop)
    xm shutdown $domain
    ;;

  *)
    echo "Usage: $0 start|stop" >&2
    exit 3
    ;;

esac
------------------------------------------------

自動起動の設定

# update-rc.d xen-ryuteki defaults

参考URL

こちらを参考にしました。
http://wiki.debian.org/Xen