2007年 10月 30日 火曜日
やっぱり Sun がスキ!
Xen ベースの仮想化技術 Solaris xVM
新たにリリースされた仮想化技術である Solaris xVM をご紹介いたします。
Solaris x86/x64 ユーザの皆様、お待たせいたしました。 オープンソースソフトウェアとして開発されている、hypervisor 形式の仮想 マシンモニタである Xen が Solaris の一機能として実装されました。
OpenSolaris Community: Xen
http://www.opensolaris.org/os/community/xen/
Hypervisor 形式の仮想化は、ハードウェアと OS の間に、仮想マシン モニタとなるレイヤーを用意し、I/O 処理などは、すべて Hypervisor へ一任することで、複数の OS を同一筐体内で動作させることが可能 となる技術です。 VMware ESX Server や Xen, LDoms, Microsoft Virtual Server などが Hypervisor 形式の仮想化を採用しています。
Sun が提供する Xen hypervisor は、「Sun xVM Hypervisor」と呼ばれます。 Xen ベースではありますが、Sun による実装も入っています。
xVM の開発にて得られたものは、Xen オープンソースコミュニティ側にもコ ミットされており、現在は、Xen 3.0.4-1 がベースとなっていますが、Xen 3.1 ベースへの移行が近い将来に予定されています。
現時点の Solaris xVM は、実験的な実装を得て、次期 Solaris リリース 候補となる Nevada Build 75 にて、ソースコードがマージされ、OpenSolaris xVM として利用することができるようになっています。
また、以下の図は、仮想化技術を簡単にまとめたものです。
Solaris xVM は、Xen ベースなので Virtual Machines のカテゴリに分類されます。
2 つの仮想化モデル
Solaris xVM には、2 つの仮想化モデルがあります。
準仮想化(ParaVirtualization) モデル
1 つは、完全にエミュレートした仮想ハードウェア環境をゲスト OS に提供 する、準仮想化(ParaVirtualization) モデルです。
この方法では、ハードウェアへアクセスする場合は、Hypervisor を必ず呼び 出さなければならないため、Hypervisor を意識した処理が OS のカーネルに 実装されていなければなりません。
つまり、xVM の仮想ハードウェアに対応した OS が必要となりますが、Xen のコンセプトでは、もっともパフォーマンスが得られる仮想化モデルとなります。 準仮想化環境にて、Solaris を利用する場合は、Solaris xVM をサポートした Solaris Express Community Release Build 75 が必要となります。 Solaris 10 8/07 は、xVM が提供する仮想ハードウェア用のドライバなどが 提供されていないため動作しません。(Solaris 10 Update 5 で対応予定)
完全仮想化(FullVirtualization)
2 つ目は、完全仮想化(FullVirtualization) です。
HVM domain とも呼ばれ、こちらは、実在のハードウェアをエミュレートし、 ゲスト OS には、完全に CPU およびハードウェアを制御しているように思わ せるモデルです。 完全仮想化では、ゲスト OS が準仮想化のように hypervisor を意識してい る必要はなく、手を加える必要もありません。 ただし、完全仮想化を実現するには、Intel VT か AMD-V など、CPU 側が 提供する仮想化機能が必要となります。 また、実在のハードウェアをエミュレートする部分は、QEMU と呼ばれる CPU エミュレータの技術を利用しています。
完全仮想化では、Solaris 10 や Windows などが動作します。
無印の Ultra 20 や X4200 などに搭載されている AMD Opteron では、 AMD-V がサポートされていませんので、完全仮想化環境を利用することは できませんので、注意が必要です。 (M2 以降であればサポートしています)
以下の図は、Solaris xVM のアーキテクチャ図となります。
動かしてみよう
Solaris xVM を動かすのは、実に簡単です。
- Solaris Express Community Release Build 75 (SXCR Build 75) または Build 75 以降を入手
http://www.opensolaris.org/os/downloads/sol_ex_dvd/
- とりあえず、普通にインストールを行います
Solaris Express Developer Edition を選択した場合、インストール が失敗してしまうバグがあります
- 再起動後、GRUB 画面に Solaris xVM のエントリが出現!
- Solaris xVM を選択し、起動します。
なにやら、大量のメッセージが出力されますが、これは xVM kernel の起動メッセージとなります。
- xVM kernel が起動し、先ほどインストールした Solaris 環境に処理が引き渡され何事もなく Solaris が起動します。
これが Dom 0 として動作している Solaris 環境となります。
これだけです。
この状態で、すでに、Sun xVM Hypervisor が動作しています。
Dom 0 は、Domain 0 とも呼ばれ、Hypervisor および実ハードウェアを管理する特別なドメインとなり。
このままでは、Solaris xVM が動作しているかもわかりませんので、確かめてみましょう。
まず、svccfg コマンドにて、xVM のサービスを確認します。
4 つのサービスが起動していることがわかります。
# svcs -a | grep -i xvm
online 10:17:34 svc:/system/xvm/store:default
online 10:17:51 svc:/system/xvm/xend:default
online 10:17:51 svc:/system/xvm/console:default
online 10:17:59 svc:/system/xvm/domains:default
次に、Solaris xVM の管理インターフェースである xm コマンドを利用してみます。
Domain-0 が動作していることがわかります。
# xm list Name ID Mem VCPUs State Time(s) Domain-0 0 1946 2 r----- 2937.8
xm top では、各 domain の状況を観察することができます。
また、起動時に表示されるメッセージは、xm dmesg で確認できます。
Dom U のインストール (ゲスト OS のインストール)
ここでは、Solaris Express Community Release Build 75 を利用した Domain U (ゲスト OS の領域をこのように呼びます)を作成してみます。
また、完全仮想化ではなく、準仮想化環境を作成してみます。
まず、mkfile にて、ハードディスクとして利用する空のファイルを作成します。
容量は必要な分だけ割り当ててください。
今回は、Core System Support にてインストールしてみますので、2G を割り当てることにします。
# mkfile 2g /usr/tmp/nv75xpv1.img
ドキュメントでは、/usr/bin/virt-install コマンドを利用したインストール方法が推奨されていますので、これに従った手順を示します。
http://www.opensolaris.org/os/community/xen/docs/virtinstall/
# virt-install -n nv75xpv1 -r 1024 -f /usr/tmp/nv75xpv1.img --nographics -p -l /Desktop/sol-nv-b75a-x86-v1.iso
それぞれのオプションは、次の意味となります。
-n : ゲスト OS ドメインの名前
-r : ゲスト OS に割り当てるメモリ量
-f : ゲスト OS が利用するハードディスク
--nographics : グラフィクスを利用しない
-p : 準仮想化を指定
-l : インストールに利用するイメージファイル
-f には、先ほど mkdir で作成したイメージファイルを指定します。 -l には、インストールに利用する SXCR Build 75 のイメージファイルを指定します。
準備ができたら、実行します。
いきなりインストーラ起動しますので、仮想環境などと気にせずにインストール作業を実施します。
# virt-install -n nv75xpv1 -r 1024 -f /usr/tmp/nv75xpv1.img --nographics -p -l /Desktop/sol-nv-b75a-x86-v1.iso Starting install... Creating domain... 0 B 00:07 SunOS Release 5.11 Version snv_75 64-bit Copyright 1983-2007 Sun Microsystems, Inc. All rights reserved. Use is subject to license terms. Configuring /dev Solaris Interactive Text (Console session) Using install cd in /dev/dsk/c0d1p0 Using RPC Bootparams for network configuration information. Attempting to configure interface xnf0... Skipped interface xnf0 Reading ZFS config: done. Setting up Java. Please wait... Beginning system identification... Searching for configuration file(s)... Search complete. Discovering additional network configuration...
インストールが終了すると、自動的に再起動が行われ、Dom U の ゲスト OS として稼働します。
Dom 0 側にて、稼働しているドメインを確認してみましょう。
nv75xpv1 の state に b があるので、起動していることがわかります。
# xm list Name ID Mem VCPUs State Time(s) Domain-0 0 1946 2 r----- 3137.9 nv75xpv1 23 1023 1 -b---- 20.1
あとは、普通に Solaris が起動してくるので、login してみます。
# uname -a SunOS nv75xpv1 5.11 snv_75 i86pc i386 i86xpv
prtconf にて、ハードウェア構成をみると、特殊な構成であることがわかります。
# prtconf -D
System Configuration: Sun Microsystems i86pc Memory size: 1024 Megabytes System Peripherals (Software Nodes): i86xpv (driver name: rootnex) scsi_vhci, instance #0 (driver name: scsi_vhci) isa (driver name: isa) xpvd, instance #0 (driver name: xpvd) xencons, instance #0 (driver name: xencons) xenbus, instance #0 (driver name: xenbus) domcaps, instance #0 (driver name: domcaps) balloon, instance #0 (driver name: balloon) xdf, instance #0 (driver name: xdf) xnf, instance #0 (driver name: xnf) iscsi, instance #0 (driver name: iscsi) pseudo, instance #0 (driver name: pseudo) options, instance #0 (driver name: options) xsvc, instance #0 (driver name: xsvc) cpus, instance #0 (driver name: cpunex) cpu (driver name: cpudrv)
ディスクも特別なドライバ(xdf)が割り当てられています。
# format
Searching for disks...done
AVAILABLE DISK SELECTIONS:
0. c0d0 <DEFAULT cyl 1020 alt 2 hd 128 sec 32>
/xpvd/xdf@0
ネットワーク構成は、以下のようになります。
virt-install では、自動的に bridge が利用されるように設定されます。 ネットワークインターフェース名も xnf0 と xVM に特化したものとなっています。
xVM では、Project: crossbow の Virtunal NIC 実装が利用されているのですが、そうなると、GLDv3 対応されたものが必須であり、今回、利用した環境では GLDv3 に対応していないため、利用することができませんでした。
# ifconfig -a
lo0: flags=2001000849<UP,LOOPBACK,RUNNING,MULTICAST,IPv4,VIRTUAL> mtu
8232 index 1
inet 127.0.0.1 netmask ff000000
xnf0: flags=201000843<UP,BROADCAST,RUNNING,MULTICAST,IPv4,CoS> mtu 1500
index 2
inet 192.168.0.10 netmask ffffff00 broadcast 192.168.0.255
ether 0:16:3e:41:aa:4a
lo0: flags=2002000849<UP,LOOPBACK,RUNNING,MULTICAST,IPv6,VIRTUAL> mtu
8252 index 1
inet6 ::1/128
以下、Dom U を管理するための基本的なコマンドとなります。
# xm start nv75xpv1 → ゲスト OS を起動します。 # xm shutdown nv75xpv1 → ゲスト OS をシャットダウンします State 項目が空の場合は、そのドメインは起動していないことを意味します。 -- # xm destroy nv75xpv1 → ドメインを強制的に終了させます。 # xm console nv75xpv1 →ゲスト OS ドメインのコンソールに接続します。 イメージとしては、zlogin -C ZONE のよう感じとなり、指定された ドメインのコンソールへ接続し、利用できるようになります。
ちなみに、GRUB メニューにて Solaris xVM を選択しない場合は、通常の Solaris kernel が起動します。
以上、簡単ではありますが、Solaris xVM についてご紹介してみました。
今回は、とりあえず Solaris xVM を動かしてみるというのが目的であり、 説明が足りないところなどがあるかと思います。ごめんなさい。
現状の Solaris xVM には、タイミングが必要とされる処理に不向き、激しい I/O 処理の発生、ハードウェアドライバの改良の余地ありなど、それなりの課題は残されています。 このあたり、どのように対応していくのかにも非常に 興味深く楽しみです。
多くの Linux ディストリビューションが、標準で Xen を含んでリリースされていますが、ようやく Solaris も仲間に入れます。
また、プロダクションレベルでの提供は、Solaris 10 Update 5 が予定されています。
UltraSPARC-T シリーズでは LDoms、x64 server (Inte, AMD) では Solaris xVM と、アーキテクチャの違いはありますが、どちらのプラットフォームでも Hypervisor による仮想化が利用できるようになりますね。
そして、データセンターの仮想化技術である Project BlackBox!! (11 月には日本に上陸しますね!)
Sun が提供する仮想化技術から、ますます目が離せない状況となっています♪
ちなみに、以下は、完全仮想化環境(HVM ドメイン)を実行している様子です。
以下は、Solaris xVM の情報源となります。
OpenSolaris Community: Xen
http://www.opensolaris.org/os/community/xen/
>> Solaris xVM の Portal site になります。
Solaris xVM は Xen ベースとなりますので、基本的な技術は Xen に準拠します。
http://xen.sf.net/
OpenSolaris xVM Documentation
http://www.opensolaris.org/os/community/xen/docs/
Solaris xVM の概要
http://www.opensolaris.org/os/community/xen/docs/xvm-idf-sf-sep2007.pdf
http://www.opensolaris.org/os/community/xen/docs/xvm-ktde-20070917.pdf
Introduction to OpenSolaris xVM Developers
http://opensolaris.org/os/community/xen/docs/developers/
>> Crash dump/DTrace にようる解析方法などが掲載されています。
Solaris xVM は、Nevada b75 に putback され利用可能です。
http://www.opensolaris.org/os/downloads/sol_ex_dvd/
>> 現状、問題があるため、パッケージ入れ替えが必要です。
http://dlc.sun.com/osol/on/downloads/6618392-packages/
Source code Nevada b75 にて、OS/Net 部分と分けられてリリースされています。
http://dlc.sun.com/osol/on/downloads/b75/
Posted at 03:27午後 10 30, 2007 by noriho in Sun | 投稿されたコメント[0]
