やかんブログ

Xenで作る仮想サーバ構築入門(10分コース)

2009年10月03日(土)09:00|天方

こんにちは。天方です。

最近、お客様のサーバ構築や、会社の開発環境を構築する場合には、環境を仮想化することがほとんどになってきました。

以前は、VMWareServerで構築することが多かったのですが、最近はXenを使った仮想化を行っています。

サーバを仮想化すると、障害が起こったときやサーバ増強時に、手軽に環境を引越したりできるのがいいですね。

今回は、自分なりに、Xenの簡単な入門をまとめてみたので、ここに公開したいと思います。

仮想化とは?

ここでいう仮想化とは、簡単にいうと、一つのコンピュータのハードウェアに複数のOSを同時に動かすために、仮想的なコンピュータを作る、すなわちコンピュータを仮想化するということです。

仮想化にはさまざまな方法があって、XenやVMWare Serverの動作を比較する際によく出てくるのが下の、完全仮想化、準仮想化の違いです。完全仮想化の場合には、汎用OS上にVM(仮想マシン)をつくり、その中でOSを動作させるのに対して、準仮想化では汎用OSを必要としないのが特徴です。

  • 完全仮想化 OS上に仮想マシンを構築するソフトウェアを利用してゲストOSを動作させる。 [  OS  ] [  OS  ] [  VM  ] [  VM  ] [     汎用OS    ] [  ハードウェア ] 例:VMWare Server等
  • 準仮想化 汎用OSを必要とせず、仮想マシンモニタ(VMM)を利用してOSを動作させる [  OS ]  [  OS  ] [      VMM       ] [ ハードウェア  ] 例: Xen

Xenの基本的な概念

Xenではドメイン-Xという風に仮想マシンのことを呼びます。Domain-0は特別な仮想マシンでVMMが動作するドメインになります。Domain-0以外のドメインをDomain-Uと呼びます。

  • Domain-0(1個) ホストOSを動作させる
  • Domain-U(0~n個) ゲストOSを動作させる

※CPU/メモリはすべていったんDomain-0に割り当てられ、 ※Domain-Uを作ってCPU/メモリを順次Domain-0から割り当てていく

[ Domain-U ] [ Domain-U ] [            Domain-0          ] [            ハードウェア       ]

Xenではネットワークも仮想化されます。標準で仮想イーサデバイスや、仮想HUB(ブリッジ)や仮想ルータがサポートされています。

Xen組み込みのネットワークのブリッジには xenbr0,xenbr1 といった名前がついてます。 Xenの組み込みネットワーク以外にlibvirtというライブラリのネットワークも使えます。こちらは virbr0,virbr1 という名前が付いています。

これらのネットワークデバイスを設定することで、Domainをネットワークに接続することができます。

Xenのインストール

CentOS5にXenを導入する手順を以下に示します。基本的にすべてroot権限で実行します。

  • Domain-0の構築
  • 仮想環境用ライブラリとXenのインストール yumをつかってインストールします

# yum groupinstall Virtualization
# yum install kernel-xen

  • Xen用仮想ディスク用デバイスのモジュール登録 Xen用のデバイスのモジュールを登録します

# echo alias scsi_hostadapter xenblk >>/etc/modprobe.conf

  • kernelの設定の切り替え kernelをXen用のものに切り替えます

# vi /etc/sysconfig/kernel
DEFAULTKERNEL=kernel-xen

  • grubの設定の切り替え
  • grubで起動するカーネルの種類を指定します。カーネルの番号等は、インストールしたkernelの番号によって変わるので注意してください。

# vi /etc/grub/grub.conf
root@host01 [~]# cat /boot/grub/grub.conf
... 省略 ...
default=0
timeout=5
splashimage=(hd0,0)/grub/splash.xpm.gz
hiddenmenu
title CentOS (2.6.18-128.1.10.el5xen)
root (hd0,0)
kernel /xen.gz-2.6.18-128.1.10.el5
module /vmlinuz-2.6.18-128.1.10.el5xen ro root=/dev/sda2
module /initrd-2.6.18-128.1.10.el5xen.img
... 省略 ...
# reboot

これで再起動されるとDomain-0が動いている状態となります。

状況確認

  • カーネル 実際にカーネルがXenに切り替わっているかどうかをチェックできます。「2.6.18-128.1.10.el5xen」のように末尾にxenが付いていればXen用のカーネルで動作していることになります。

# uname -a
Linux host01.itareri.jp 2.6.18-128.1.10.el5xen #1 SMP Thu May 7 11:51:15 EDT 2009 i686 i686 i386 GNU/Linux

  • DomainUの構築

CentOSではvirt-installというコマンドでDomain-0からCentOSを簡単にインストールできます。


# virt-install --paravirt --name=VM_CentOS_1 --vcpus=1 --ram=256 --file=/var/lib/xen/VM_CentOS_1 --file-size=20 --location=http://ftp.riken.jp/Linux/centos/5/os/i386/ --bridge=virbr0 --nographics

それぞれのオプションの意味は下記となります。

–paravirt 準仮想化 –name     VMの名前 –vcpus    CPU数 –ram       メモリ(MB) –file      仮想ディスクイメージファイル位置 –file-size 仮想ディスクサイズ(GB) –location  OSをインストールするためのロケーション –bridge    仮想ネットワークの接続先を指定 –nographics コンソールベースでのインストール

コマンドがうまく動作したら、通常のCentOSのインストーラの手順に従って作業を実施します。

VMの操作

Xenの 単純なコマンドについて紹介します。これらのコマンドはDomain-0で実行します。

  • VMリスト取得

# xm list
Name                                      ID Mem(MiB) VCPUs State   Time(s)
Domain-0                                   0     1508     2 r-----   7548.5
VM_CentOS_1                                7      255     1 -b----   1852.0

  • VMのコンソールに接続

# xm console VM_CentOS_1

  • VMのコンソール接続を解除

Ctrl + ] で解除できます。

この記事に関するお問い合わせはこちら

ページの先頭へ