こんにちは。天方です。
最近、お客様のサーバ構築や、会社の開発環境を構築する場合には、環境を仮想化することがほとんどになってきました。
以前は、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 + ] で解除できます。