Xenによる仮想化

Xenによる仮想化について、Domain0の構築、DomainUのインストールや基本操作方法、Xenを利用する上でのTipsを記載します。

環境にはCentOS-5を利用しましたが、GUIを利用しない環境で作業していますが、GUI環境ではvirt-managerでも作業可能です。

 

Domain0の構築

Domain0とは、仮想サーバのベースOSで、このベースOS上に仮想サーバをインストールし管理します。

Xenを利用する場合は、まず、これを準備します。

CentOS-5の場合、インストーラーで「仮想化」を選択していると、Xenに関連するファイルがインストールされKernelもXen用の物が準備されます。

ここでは、手動でインストール&設定を行います。

 

パッケージのインストール

xenパッケージや、xen用kernerlをインストールします。以下のコマンドで必要な関連パッケージがインストールされます。

yum install xen

 

起動デーモンの設定

Xen関連デーモンが自動起動するように設定します。

chkconfig xend on
chkconfig xendomains on

 

Xen用Kernelでの起動設定

Xen用Kernelで起動するよう、/etc/grub/grub.confでGRUBの設定をします。

default=0 <---ここでxen用kernelから起動するように選択する
timeout=5
splashimage=(hd0,0)/grub/splash.xpm.gz
hiddenmenu
title CentOS (2.6.18-164.11.1.el5xen)
	root (hd0,0)
	kernel /xen.gz-2.6.18-164.11.1.el5
	module /vmlinuz-2.6.18-164.11.1.el5xen ro root=/dev/VolGroup00/LogVol00
	module /initrd-2.6.18-164.11.1.el5xen.img

 

/etc/sysconfig/kerlenlの指定もxenに変更します。

# DEFAULTKERNEL specifies the default kernel package type
DEFAULTKERNEL=kernel-xen <---ここを変更

ここまでの準備ができたら再起動し、xen用kernelで起動するか確認してください。

xen用kernelで起動出来ているかどうかは、以下のコマンドを利用すると良いでしょう。

uname -r

 


DomainUのインストール

ベースメントは準備できましたので、仮想サーバをインストールして行きます。

ここでインストールするのは、準仮想化でイメージファイル方式です。

その他の方式としては、完全仮想化やLVMパーティションへのインストールなどもできます。

CentOS-5では、CUIで利用できるツールとしてvirt-installの補助ツールがありますので、今回はそれを利用します。

なお、インストールOSのイメージファイルは、外部のミラーサイトを利用しました。

 virt-install --paravirt -n vm01 --vcpus 1 -r 512 -f /var/xen/vm01 -s 8 \ --nonsparse --nographics -l http://ftp.riken.jp/Linux/centos/5/os/x86_64 

 

なお、VNCを利用する場合は –nographicsオプションを外します。

 virt-install --paravirt -n vm01 --vcpus 1 -r 512 -f /var/xen/vm01 -s 8 \ --nonsparse -l http://ftp.riken.jp/Linux/centos/5/os/x86_64 

virt-installコマンドオプション解説

オプション 説明
–paravirt 準仮想化を指定
-n vm01という識別子名を指定
–vcpus CPUの割当数を指定
-r メモリを割り当て数をMBで指定
-f イメージファイルの作成場所を指定
-s イメージファイルの容量をGBで指定
–nonsparse 通常のファイル形式で作成するように指定(Sparseファイルではなく)
–nographics GUIを利用しない
-l インストールに利用するミラーを指定

このコマンドでインストーラが起動し、仮想サーバ(DomainU)のインストールが実行されます。

インストールが終了すると、指定した場所にイメージファイルが作成され、/etc/xen/以下に、仮想サーバの設定ファイルが作成されます。

 

インストールTips

準仮想化、イメージファイルの構成を採用してますが、パフォーマンスを重視するなら、完全仮想化(対応CPU必須)、LVMパーティションへのインストールができます。

なお、今回イメージファイル方式でも、Sparseファイルを利用してまいません。これは書き込みのパフォーマンスを上げる為です。

Sparseファイル形式でDomainUを構築した場合、実際に利用したディスク容量しか消費されませんのでメリットもありますが、特に書き込みのパフォーマンスは犠牲になります。

 

DomainUの操作

DomainUを操作するには、xmコマンドを利用します。

主なコマンドを上げておきます。

コマンド 解説
ctrlキー + ] DomainUのコンソールから離れる
xm list 起動しているDomainをリスト表示する
xm console DomainID 指定したDomainUのコンソールをアクティブにする
xm create /etc/xen/DomainID -c 指定したDomainUの起動しコンソールをアクティブにする
xm create /etc/xen/DomainID 指定したDomainUを起動する
xm shutdown DomainID 指定したDomainUを停止する
xm reboot DomainID 指定したDomainUを再起動する
xm destroy DomainID 指定したDomainUを強制終了する
xm pause DomainID 指定したDomainUを一時停止する
xm unpause DomainID 指定したDomainUを一時停止から復帰する
xm mem-set DomainID メモリサイズ 指定したDomainUのメモリ割当を変更します。
xm save DomainID セーブファイル 指定したDomainUバックアップを作成します。
バックアップ時はDomainUは停止されます。
xm restore セーブファイル セーブファイルからDomainUをリストアします。

 

DomainUの自動起動

DomainUをDomain0が起動したときに自動起動するには、/etc/xen/autoにシンボリックリンクを作成します。

例えば、vm01という仮想OS(DomainU)をインストールしてあり、これを自動起動する場合は以下のようにします。

 cd /etc/xen/auto ln -s /etc/xen/vm01 vm01 

 

 

DomainUをコピーして利用する

同じ構成の仮想OSをインストールするのは面倒な作業になります。

そこで、イメージファイルをコピーして複製して行くと良いでしょう。

気をつける点は、Xenの設定ファイルにあるuuid識別子とMACアドレス、仮想OSのホスト名とネットワーク設定を必ず変更する事です。

ここでは、仮想OSのvm01をコピーしvm02を作成する例を示します。

 

仮想イメージのコピー

仮想イメージをコピーします。

cp vm01 vm02

 

設定ファイルのコピーと編集

/etc/xen/名前の設定ファイルをコピーし編集します。

cp /etc/xen/vm01 /etc/xen/vm02

 

/etc/xen/vm02ファイルの編集は以下の箇所が必要です。

name = "vm02" <---仮想OSの名前
uuid = "71c6c399-918d-48c5-a67e-09903450cda8" <---識別UUID
maxmem = 512
memory = 512
vcpus = 1
bootloader = "/usr/bin/pygrub"
on_poweroff = "destroy"
on_reboot = "restart"
on_crash = "restart"
disk = [ "tap:aio:/var/xen/vm02,xvda,w" ] <---イメージファイルの指定
vif = [ "mac=00:16:36:6c:f4:fc,bridge=xenbr0,script=vif-bridge" ] <---MACアドレス

 

UUID識別子は以下のコマンドで、ランダムなUUIDを生成し取得出来ます。

uuidgen

後は、vm02を起動して、ホスト名とネットワークの設定を行えば完了です。

 

 

2つのネットワークインタフェースを利用する

xenで複数のインタフェースを利用するには、ネットワークブリッジを増やしてあげる必要があります。

これには、Domian0の/etc/xen/scripts/network-bridgeを新たな内容で作成します。

 

network-bridge.xenの作成

network-bridgeをリネームし、network-bridge.xenを作成します。

mv network-bridge network-bridge.xen

 

network-bridgeファイルの作成

2つのインタフェースが利用出来るように、以下の内容で/etc/xen/scripts/network-bridgeを作成します。

#!/bin/sh
# Exit if anything goes wrong.
set -e

# First arg is the operation.
OP=$1
shift

script=/etc/xen/scripts/network-bridge.xen

case ${OP} in
	start)
		$script start vifnum=0 bridge=xenbr0 netdev=eth0
		$script start vifnum=1 bridge=xenbr1 netdev=eth1
		;;

	stop)
		$script stop vifnum=0 bridge=xenbr0 netdev=eth0
		$script stop vifnum=1 bridge=xenbr1 netdev=eth1
		;;

	status)
		$script status vifnum=0 bridge=xenbr0 netdev=eth0
		$script status vifnum=1 bridge=xenbr1 netdev=eth1
		;;

	*)
		echo 'Unknown command: ' ${OP}
		echo 'Valid commands are; start, stop , status'
		exit 1
esac

 

次に、作成したnetwork-bridgeファイルに実行権限を付加します。

chmod 755 network-bridge

これで、xendを再起動するとブリッジが増えて、2つのネットワークインタフェースが利用可能になっているはずです。

 

DomainU(仮想OS)での設定

DomainU側では、DomainUの設定ファイルの以下の所を編集します。

変更前
vif = [ "mac=00:00:00:00:00:1a,bridge=xenbr0" ]
変更後
vif = [ "mac=00:00:00:00:00:1a,bridge=xenbr0","mac=00:00:00:00:00:1b,bridge=xenbr1" ]

あとは、DomainUを起動して、ネットワークの設定を行ってください。

Leave a Comment


NOTE - You can use these HTML tags and attributes:
<a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <s> <strike> <strong> <img localsrc="" alt="">