特集 OXen [ 1 ] 図 5 VMware 上では Xen か動く CPU ホスト PC と同じプロセッサをエミュレートします。つ まり、ホスト PC が Pentium ならばゲスト PC も Pen- tium ですし、ホスト PC が Athlon ならばゲスト PC も AthIon です。 イン 0 上に作られた次のいずれかのデバイスにマップされ ドメイン U でエミュレートされるイ反想ディスクは、ドメ クとして扱われるわけではありません ( ややこしい うになっています。だからといって、 IDE や SCSI ディス きるように、便宜的に hd や sd リという名前カ吏えるよ ただし、デバイス・スペシャルファイルからアクセスで です ) 。 えます ( IDE や SCSI のデバイスドライバのロードも不要 でもなく、正体不明の、、 xen プロックデバイス " としてみ します。デバイスのインターフェイスは IDE でも SCSI ハードディスクと CD-ROM ドライプをエミュレート ティスク モードで動きます。 64 や E 64T 対応のものであってもゲスト OS は 32bit テクチャには対応していないので、ホスト PC が Athlon ただし、残念ながら現在のバージョンでは 64bit アーキ . ファイルシステム上のファイル ます。 UNIX MAGAZINE 2005 . 8 プタがエミュレートされます。 ドメイン 0 と 1 対 1 で通信できるネットワーク・アダ ネットワーク・アダブタ 荷状態になると安定性に問題が生じる " と書かれています。 ションのような感じです。ただし、マニュアルには、、高負 最後の NFS は、かってのディスクレス・ワークステー ットが実現できます。 ムです。これを利用すると、仮想ディスクのスナップショ 理的なパーティションを作るといったことが可能なシステ LVM は、複数の物理的なパーティションをまとめて論 あらためて説明するまでもないでしよう。 最初の 2 つは VMware Workstation にもあるので、 ・ NFS ・ LVM (Logical Volume Manager) 上のポリューム ・ IDE や SCSI ディスク上のパーティション 制御アプリアプリ う - ーション・ケーション ゲスト OS ゲスト OS xen マイクロカーネル 仮想 PC/AT アプリケーション ゲスト OS 仮想 PC/AT VMware Workstation ホスト OS 物理ハードウェア 図 6 Xen の上では VMware は動かない ドメイン 0 ドメイン U VMware Workstation 制御アプリケーション ゲスト OS ゲスト OS / 実行不許可 ! Xen マイクロカーネル 物理ハードウェア これも、、 xen 専用ネットワーク・アダブタ " なので、物 理的に接続されているデバイスのドライバをロードする必 要はありません。 Xen と VMware の合せ技 おもしろいことに、 Xen は VMware の仮想 PC 上で 動きます。このため、 xen を導入する前のテストや操イ信東 習を VMware 上でおこなうこともできます。 さきほど述べたように、 VMware の仮想、 PC は完全な PC 工竟をエミュレートします。したがって、 Xen も問題 なく動くのでしよう ( 図 5 ) 。 一方、 xen の上では VMware は動きません。 xen では、すべてのゲスト OS の下で Xen マイクロカ ーネルが働いていて、 CPU やデバイスへのアクセスを制 御しています。そのため、 VMware のカーネル・モジュ ールが CPU の特権命令を実行しようとすると、 Xen マイ クロカーネルがこれを拒否し、結果として VMware の仮 想 PC カ働かないのだと思います ( 図 6 ) 。 31
ドメイン 0 の xen カーネルを起動するために必要です。 Xen の場合、 LILO ではプートできません。 ・ lprotlte xen では、 ip コマンドを用いて仮想ネットワークの経 路を誌定します。 ・ Python xen を制御するプログラムは python スクリプトです。 ・ Twisted 、 libcurl xen のコマンドやスクリプトカリ用するライプラリで す。 ・ bridge-utils ( オプション ) ゲスト OS と物理ネットワークを bridge モードで接続 する場合に必要です。 Routed や NAT モードで接続するのであれは不要で す。 Xen をインストールするには、バイナリ・パッケージと ソースパッケージのどちらかを使います。 さきほど述べたように、 Xen のゲスト OS では Xen に 合わせた特別なカーネルを使います。カーネルをコンパイ ルする自信のない人やコンパイル作業が面倒な人、早く遊 びたくてうすうずしている人はバイナリ・パッケージを利 用するとよいでしよう。 バイナリ・パッケージには、ゲスト OS のカーネルがロ ードするカーネル・モジュールも含まれています。しかし、 パッケージには含まれていないデバイスを使いたい場合や、 サードバーティーのカーネルバッチを適用したいときには、 ソースパッケージからインストールします。 xe Ⅱの公式サイトにあるバイナリ・パッケージに含まれ ているカーネルは、 iptables カ吏えないなど、いろいろな 機能力哨リられています。このため、 Xen をサポートしてい ないディストリビューションを利用している場合は、自分 でソースからコンパイルするほうがよいでしよう。 コンパイル処理にはかなり時間がかかりますが、基本的 には通常の Linux カーネルのコンパイルと大きな違いは なく、作業自体はそれほと灘しくありません。 バイナリ・パッケージからのインストール バイナリ・パッケージには、 xen の公式サイトからダウ ンロードできるものと、 Linux ディストリビューションに UNIX MAGAZINE 2005 . 8 特集 OXen [ 1 ] した。 Fedora Core 4 では、 2005 年 6 月 13 日に、 Fedora Core 4 がリリースされま Fedora Core 4 と Xen ・ kernel-xenU-2.6.11 ・ kernel-xen0-2.6.11 ・ xen-2 ダウンロードしたら、 r 。 ot 権限で以下のコマンドを実行 ージから xen-2.0.6-install.tgz を入手します。 ます、デモ CD をダウンロードしたときと同じ Web ペ いるバイナリ・パッケージを利用します。 のパッケージは入っていません。公式サイトで配布されて Fedora Core 3 のディストリビューションには、 Xen Fedora Core 3 の場合 含まれるものの 2 種類があります。 からインストールしましよう。 Fedora Core 4 で xen を使いたい人は、ソースパッケージ 卩版のときは雹甬に動いていたので、ちょっと残念です。 せませんでした。 U のカーネルか跿師力しなかったりして、けっきよく Xen は動か みたところ、ドメイン 0 のカーネルがフリーズしたり、ドメイン このようにあっさりとインストールできたのでさっそく使って ( 図 11 を参考するとよいでしよう ) 。 で開き、ドメイン 0 のエントリにメモリサイズを指定します インストールできたら、 GRUB の設疋ファイルをエデイタ # yum insta11 xen kernel¯xen() kernel¯xenU 加インストールされます。 yum を使えば、 Twisted などの依存パッケージも自動的に追 簡単です。 ルできます。 GRUB のエントリも自動的に追加され、いたって の 3 つの RPM パッケージを入れるだけで Xen がインストー インストール・スクリプトを実行したとき、次のような # . /install . sh # cd xen—2.0—instaII # tar xvfz xen—2.0.6 ー install . tgz してインストールします。 くインストールされています。 工ラーメッセージのようにみえますが、 Xen 自体は正し FAILED check—twisted FAILED check—brctl メッセージが表示される場合があります。 35
特集 Oxen [ 1 ] 図 15 ドメイン 0 のブートメ ーン ッセ Of Cambridge Computer Laboratory http : //www. c1. cam. ac . uk/netos/xen University Latest ChangeSet : 2005 / 05 / 22 11 : 30 : 28 1 .1720 42905f44tK-V2k—UIPHIEmnW4Bg6Dg May 22 11 : 31 : 19 BST 2005 Xen version 2 . 0 . 6 (xenod@cl . cam. ac . (k) (gcc version 3.3 . 3 20040412 (Red Hat Linux 3.3 . 3 ー 7 ) ) Sun (XEN) ( XEN ) (XEN) (XEN) (XEN) (XEN) Physica1 RAM map : 0000000000000000 ー 000000000009f800 ー 00000000000Ca000 ー 00000000000dC000 0000000000100000 000000000009f800 (usable) 00000000000a0000 (reserved) 00000000000CC000 (reserved) 0000000000100000 (reserved) 000000000fef0000 (usable) Linux version 2 . 6 . 11 . 10 ー xe 0 (xenod@freefall. cl . cam. ac . (k) (gcc version 3.3.3 20040412 (Red Hat Linux 3.3.3 ー 7 ) ) # 1 Sun May 22 11 : 38 : 50 BST 2005 BIOS—provided physical RAM map: Xen: 0000000000000000 ー 0000000004000000 (usable) 64MB LOWMEM available . DMI present . IRQ lockup detection disabled A110cating PCI resources starting at 04000000 (gap: 04000000 : fC000000 ) Bui1t 1 zonelists Kerne1 command line : root=/dev/sdal ro consoIe=ttyO lnitializing CPU#O * * WARNING: Current1y emulating unsupported memory accesses * * mv /lib/tls /lib/tls . disabled execute the following as root : slow. TO ensure full performance you should in /lib/tls libraries . The emulation is very イメージのサンプルが用意されています。 ttylinux とは、 Xen の動作テストをおこなうために構成された、ごく小さ な Linux システムです。上記のインストール作業が終っ たら、これを使ってドメイン U の動作を確認しましよう。 まずはシステムを再起動し、 GRUB のメニューから 、 Xen 2.0.6 " を選択します。最初に Xen のメッセージが 表示されたあと、見慣れた Linux カーネルのプートメッセ ージカ咄力され ( 図 15 ) 、雹匝に Linux システムが立ち上 がります。これが Xen のドメイン 0 です。 プートの途中で図 15 の最後のようなメッセージが表示 されますが、無視してもかまいません。 システムが起動したら、 r 。。 t 権限で以下のコマンドを実 UNIX MAGAZ 工 NE 2005 . 8 行し、制御デーモンの起動と確認をおこないます。 # xm list # /etc/init . d/xend start Name ld Mem(MB) CPU State Time (s) Cons01e Domain—0 0 # brctl show 59 0 bridge name bridge id 8000.000C29CCa4e5 xen-br0 274.0 interfaces eth0 xm コマンドの出力に、、 Domain-0" というエントリが 表示されているかを確認してください。 Mem に表示され る数値は、図 11 や図 14 の dom()-mem に言定した値によ って変わります。 一方、 brctl コマンドの出力では、 xen-br0" という工 39
想ネットワークの定方法について説明します。 3 回目は、 Xen の使用例として、 SOHO ネットワーク に安全な公開サーバーを構築する方法を紹介します。 Xen のイ反想ネットワークを用いて DMZ を作り、バーチャルマ シンでサーバーホストを構成するため、 1 台の PC で安全 な公開サーバーが構築できます。 Xen と VMware こまで読んで、 xen と VMware はどこカ芍韋うねん ? " と思っている人も多いのではないでしようか。そのような 疑問をもつのも、ある未では当然です。 もちろん、バーチャル化を実現する技術的手法にも相違 はありますが、それよりもずっと大きな違いは想定されて いる用途です。つまり、前提としているユーザー層が異な っているわけです。これまで VMware Workstation を 利用してきた人が、明日から Xen に乗り換えられるかとい うと、かなり難しいと思います。 VMware Workstation は、おもにデスクトッフ環境で の利用を想定したものです。そのため、グラフィックス・ ディスプレイのエミュレートや、仮想ディスクのスナップ ショットなどの機能が大きなポイントになっています。た とえば、ゲスト OS として Windows を使用する場合には、 、、あのグラフィカルなインターフェイスカ駛えること " が第 一条件になるでしよう。また、 VMware Workstation は ノート PC 上で使うこともできます。 これに対し、 Xen はおもにサーバー環境での利用を前提 としています。このため、仮想ディスプレイはなく、すべ てテキスト端末で操作します。さらに、仮想ディスクのス ナップショットをとる必性もあまりないので、 Xen 自体 の機能としては用意されていません ( ほかのツールと組み 合わせれば実現できます ) 。また、 APM や ACPI などの 省電力機能には対応していないため、ノート PC での使用 には不向きです。 このように、 Xen と VMware Workstation では用 途がかなり異なるため、競合することはなさそうです。 方、 VMware ESX Server とはターゲットが重なるかも しれません。ただし、現時点で比較すると、操作性をはじ め、さまざまな点で ESX Server に軍配が - ヒがりそうで UNIX MAGAZINE 2005 . 8 特集 oxen [ 1 ] す。とはいえ、 Xen はフリー・ソフトウェアでソースコ ードも公開されています。さらに、最近は NoveII SUSE LINUX 9.3 や Fedora Core 4 というメジャーな Linux ディストリビューションに標準で含まれるようになったた め、今後はシェアカびそうな予感もします。ューザーが 増えていけば、いろいろと不足している機能が実装される かもしれません。その未では、 「 VMware ESX Server を使いたいんやけど、いかんせ んちょっと高いしなあ・・ と躊躇している人にお薦めします。 Xen の / ヾーチャ丿レマシン 本誌で何回カ齠介した VMware については、皆さんも ある程度以上の知識はあるでしようし、利用している人も 少なくないと思います。しかし、さきほども書いたように Xen で作成されるノヾーチャルマシンは、 VMware とはま ったく仕組みが異なります。そこでまず、このあたりから 説明しましよう。 VMware のバーチャルマシンは、完全な PC/AT 互 換機の環境をソフトウェアでエミュレートします。そのた め、基本的にその上で動作させるゲスト OS のカーネルや アプリケーションに手を加える必要はありません ( パフォ ーマンスを向上させるために専用モジュールを組み込むこ とはあります ) 。 VMware Workstation はホスト OS 上のユーザープ ロセスとして動作し、イ反想 PC / AT をエミュレートします ( 図 2 ) 。一部、 CPU の特権命令を処理するためのモジュ ールをカーネルに組み込みますが、その他のすべてのハー ドウェアはホスト OS が管理します。そして、ゲスト OS が仮想ハードウェアにアクセスすると、 VMware Work- station はホスト OS を通じて物理ハードウェアにアクセ スします。 一方、 VMware ESX Server はカーネル空間のなかで 動き、仮想 PC/AT をエミュレートします ( 図 3 ) 。すべ てのハードウェアは ESX Server が管理し、ゲスト OS か らのイ反想ハードウェアへのアクセスも ESX Server が処理 します。 ESX Server の制御は、管理コンソールと呼ばれ る特別なゲスト OS からおこない、 Workstation のよう な、、ホストとしての OS " はありません。 29
図 10 ゲスト OS のリスト表示 xendemo : ~ # xm 1ist ld Mem(MB) CPU Name State Domain-0 0 Debian-2 1 FreeBSD—5 4 NetBSD-4 3 247 47 47 47 0 0 0 0 Time(s) 263 . 4 18 . 3 35 . 7 20 . 9 Cons01e 9602 9605 9604 以下に、切断と接続の操作例を示します。 1 行目は Free- BSD のコンソールです。ここから Ctrl-] を入力してドメ イン 0 の端末に移り、ふたたび ID 番号 4 の FreeBSD に 民っています。 xendemo-freebsd# ← Ctrl-] を入力 xendemo: ~ # xm console 4 * * * * * * * * * REMOTE CONSOLE: CTRL—] TO QUIT * * * * * xendemo—freebsd# デモ CD でのゲスト OS には、 10.171.45 ュという IP アドレスが設定されるので ( 第 4 オクテットは自動的に割 り当てられます ) 、ドメイン 0 の端末から ping を実行した り、リモートログインしたりしてみましよう 4 。さらに、ゲ スト OS どうしの通信も可能です。 ただし、デモ CD では Xen の一磨課ネットワークと物理 ネットワークが分離されているので、ゲスト OS は外部ホ ストと直接通信することはできません ( おそらく、ゲスト OS の root ユーザーが、パスワードなしでログインできる ように設疋されているからだと思います ) 。 ゲスト OS 上で halt コマンドを実行すると、ドメイン U のバーチャルマシンも一緒に停止します。ゲスト OS のカ ーネルカ亭止したというメッセージか表示されたら、 Enter キーを何回か入力してみましよう。以下のようなメッセー ジと、ドメイン 0 のシェルのプロンプトが表示されます。 xendemo : ~ # これでノヾーチャルマシンが停止したはずです。確認のた めに、、 xm list " コマンドを実行し、エントリがなくなって テキストモードでのデモ いるかをチェックしましよう。 れます。どうやら設疋ファイルの言当丕ミスのようなので、手作業で IP アド 4 な・か、 FreeBSD だけは 10.171.45. ェではない IP アドレスカ第乂疋さ 、 Text only" を選択した場合は、起動後にシェルのプロン 34 レスを貨定しましよう。 プトが表示されて入力待ち状態になるので、あらためて口 グインする必要はありません。そして、この端末がドメイ ン 0 のコンソールになります。 こで AIt-F2 (AIt キーと F2 キーを同時に押す ) を 入力すると、端末が切り替わります。続けて Enter キーを 押すと、バーチャルマシンが作成されて Debian GNU/ Linux 3.1 ( カーネル 2.6.11 ) が起動します。 同様に、 AIt-F3 を入力すると NetBSD 2.0.1 が、 AIt- F4 を入力すると FreeBSD 5.3 が起動します。 Xen のインストール 以下では、 Fedora Core 3 と Novell SUSE LINUX 9.3 ( 以下、 SUSE 9.3 ) に Xen をインストールする手頂 を紹介します。プートローダに GRUB を使用している Linux であれば、これら以外のディストリビューションで も同様の手順でインストールできるでしよう。 準備 Xen を実行するには、以下のものが必要です。 ・ P6 以降の CPU lntel の Pentium Pro 、 Celeron 、 Pentium Ⅱ、 Pen- tium III 、 Pentium 4 、 Xeon や AMD の Athlon 、 Duron などの CPU です。さきほども述べたように Xen 2.0.6 は 64bit モードには対応していません ( ノヾー ジョン 3.0 でサポートされるようです ) 。 クロックに関する制限はありませんが、 500MHz 以上な らば十分でしよう。 ・ 128MB 以上のメモリ ゲスト OS 上でサーバーなどを運用するには、ホスト PC のメモリは 128MB 以上、できれば 256MB 以上 あったほうがよいと思います。 ・ 2GB 以上の空き容量のあるディスク Xen をソースパッケージからコンパイルする場合には、 Linux 2.6.11 に Xen 用のパッチを当て、ドメイン 0 と ドメイン U のカーネルを作るだけで約 400MB の容量 が必要です。さらに、ゲスト OS 用にイ反想ディスクを作 成するので、すくなくとも 2GB 以上の空き容量が必要 です。できれば 4GB 以上はほしいところです。 ・ GRUB プートローダ UN 工 X MAGAZINE 2005.8
特集 Oxen [ 1 ] 図 17 ttylinux のブートメッセージ ( 1 ) # xm create —c ttylinux Using config file "/etc/xen/ttylinux" Started domain ttylinux, co sole on port 9601 * * * * * * * * * * * * REMOTE CONSOLE: CTRL—] TO QUIT * * * * * * * * Linux version 2 . 6 . 11 .10—xenU (xenod@freefall . cl . cam . ac . (k) (gcc version 3 . 3.3 20040412 (Red Hat Linux 3.3 . 3 ー 7 ) ) # 1 Sun May 22 11 : 42 : 16 BST 2005 BIOS—provided physical RAM map: Xen: 0000000000000000 ー 0000000004000000 (usable) 64MB LOWMEM available . DMI not present . IRQ lockup detection disabled A110cating PCI resources starting at 04000000 (gap: 04000000 : fC000000 ) Bui1t 1 zonelists Kerne1 command line : : eth0 : off root=/dev/sdal ro ip = 192.168.1.2 : 1 . 2.3.4 : ・ lnitializing CPU#O PID hash table entries : 512 (order: 9 , 8192 bytes) Xen reported: 1599.861 MHz processor. Using tsc for high—res timesource Dentry cache hash table entries : 16384 (order: 4 , 65536 bytes) lnode—cache hash table entries : 8192 (order: 3 , 32768 bytes) vmalloc area: C4800000 ー fbff9000 , maxmem 34000000 Memory: 62384k / 65536k available ( 1630k kernel code , 3056k reserved, 412k data, highmem) Checking if this processor honours the WP bit even in supervisor mode . Ok . Mount-cache hash table entries : 512 (order: 0 , 4096 bytes) CPU: LI 工 cache: 32K , LI D cache: 32K CPU: L2 cache : 1024K CPU: lntel (R) Pentium(R) M processor 1600MHZ stepping 08 EnabIing fast FPU save and restore . done . Enab1ing unmasked SIMD FPU exception support . Checking 'h1t ' instruction. disabled NET: Registered protocol family 16 xen—mem: lnitialising ba1100n driver. 工 nitializing Cryptographic API 土 0 scheduler noop registered iO scheduler anticipatory registered i0 scheduler deadline registered iO scheduler cfq registered RAMDISK driver initialized: 16 RAM disks of 4096K size 1024 blocksize Xen virtual console successfully installed as tty Event—channe1 device installed . 112k init , xen_ NET : IP: TCP TCP TCP : NET : NET : blk: lnitialising virtual block device driver net : lnitialising virtual ethernet driver. Registered protocol family 2 routing cache hash table 0f 512 buckets , 4Kbytes established hash table entries : 4096 (order: 3 , 32768 bytes) bind hash table entries : 4096 (order: 2 , 16384 bytes) Registered protocol family 17 Registered protocol family 1 Hash tables configured (established 4096 bind 4096 ) IP—Config: Guessing netmask 255 . 255 . 255.0 IP-Config : Comp1ete : device=ethO, addr=192.168.1.2 , mask=255.255.255.0 , nis—domain= (none) , host = 192 . 168.1.2 , domain= bootserver=l . 2.3.4 , rootserver=l . 2.3.4 , rootpath= EXT3—fs : mounted filesystem with ordered data mode . VFS: Mounted て 00t (ext3 filesystem) readonly. UNIX MAGAZINE 2005 . 8 gw = 255 . 255.255.255 , 0k 41 ( 図 18 に続く )
特集 Oxen [ 1 ] 図 9 デモ CD のゲスト OS を走カ (a) Debian GNU/Linux xendemo : ~ # start_debian . sh Starting new guest domain Using config file "/etc/xen/xmdefconfigt VNC= 3 Started domain Debian—4, console on port 9603 * * * * * * * * * * * * REMOTE CONSOLE: CTRL-] TO QUIT * * * * * * * * Linux version 2 . 6 . 10 ー xenU (root@xendemo) (gcc version 3 . 3 . 5 (Debian 1 : 3.3 . 5 ー 8 ) ) # 1 Sun Mar 13 11 : 47 : 12 GMT 2005 BIOS-provided physical RAM map: Xen: 0000000000000000 ー 0000000003000000 (usable) 48MB LOWMEM available . DMI not present . IRQ lockup detection disabled Bui1t 1 zonelists (b) FreeBSD xendemo : ~ # start_freebsd. sh Starting new guest domain Using config file "/etc/xen/freebsd. py' Started domain FreeBSD—6, console on port 9605 * * * * * * * * * * * * REMOTE CONSOLE: CTRL—] TO QUIT * * * * * * * * WARNING: 10ader(8) metadata is missing! start_info 0XC0281000 start—info—>nr—pages 12288 Copyright (c) 1992 ー 2004 The FreeBSD Project . Copyright (c) 1979 , 1980 , 1983 , 1986 , 1988 , 1989 , 1991 , 1992 , 1993 , 1994 The Regents of the University of CaIifornia. A11 rights reserved. FreeBSD 5 .3-RELEASE # 37 : Mon Jan 24 16 : 11 : 53 PST 2005 kmacy@bldfl . eng ・ netapp ・ com: /t/niners/users/xen/bsd/sys—5.3 / i386 ー xeno . t0t/compiIe/XENCONF ・ Debian GNU/Linux 3.1 ( カーネル 2.4.29 ) 3 start-debian24. sh ・ NetBSD 2.0.1 start-netbsd. sh ・ FreeBSD 5.3 start-freebsd. sh これらのなかから適当なものを選んで実行してみまし よう。ドメイン U のバーチャルマシンカイ乍成され、ゲス ト OS のプートが始まります。図 9 に、 Debian GNU/ Linux と FreeBSD か起動するときの様子を示します。 上記のシェル・スクリプトを実行すると、それを起動し た端末がドメイン U のゲスト OS のコンソールになりま す。さらに、 Debian と NetBSD の場合は、さきほどの 図 1 のように VNC Viewer のウインドウも自動的に表示 UNIX MAGAZINE 2005.8 3 なぜか、 2.4.30 ではなく 2.4.29 になっています。 されます。一方、 FreeBSD では、なぜか VNC Viewer が表示されません。 それぞれのゲスト OS には、ユーザー名に root 、パス ワードなしでログインできます。 ゲスト OS のコンソール上で Ctrl-] を入力する (Ctrl キーと、、 ] " キーを同時に押す ) と、ドメイン U から切断さ れてドメイン 0 の端末に戻ることができます。このキーの 組合せは、 telnet のエスケーフ文字と同じなので億えやす いでしよう。 CtrI-] を入力して切断しても、ゲスト OS 自体は停止し ていません。裏でしつかり動いています。 ゲスト OS のコンソールに戻りたい ( 接続したい ) 場合 は、、、 xm console" コマンドを実行します。ただし、この コマンドは引数にゲスト OS の ID 番号もしくは識別名が 必要なので、あらかじめ、、 xm ⅱ st " コマンドを実行して ID 番号を確認しておきましよう ( 図 10 ) 。 33
図 14 SUSE 9.3 の /boot/grub/menu. lst に追加するエントリ t it 1 e Xen 2 . 0 . 6 kernel (hd0, l)/boot/xen. gz dom0 ー mem = 131072 module (hd0, 1)/b00t/vm1inuz-2.6.11.4-20a-xen r00t=/dev/sda2 cons01e=ttyO module (hdO, 1)/b00t/initrd—2.6.11.4 ー 20a ー xe Ⅱ テムにコピーできる構造でまとめられます。どこにどのフ ァイルがインストールされるかが -- ・ - ・目瞭然なので、インス トールする前に眺めておくとよいでしよう。 できあがったファイルをシステムにインストールするに を追加してください。 うに、 GRUB の設疋ファイルに Xen カーネルのエントリ その後は、バイナリ・パッケージのところで説明したよ # make insta11 は、次のコマンドを実行します。 イスドライバを追加したい場合は、カーネルの設疋ファイ iptables など、デフォルトの構成に含まれていないデバ れていません。 ルには、バイナリ・パッケージと同様に iptables が含ま ただし、デフォルトの設疋のままコンパイルしたカーネ することができます。 コマンドを実行するだけで、手軽にカーネルをコンパイル 定ファイルが含まれているので、さきほどのように make Xen のソースパッケージには、お薦め構成のカーネル設 カーネルのカスタマイス でおこなうことができます。 イン U 用の NetBSD カーネルのコンパイルは Linux 上 いるのに酥日感を覚えた人がいるかもしれませんが、ドメ 上記の make の実行で Iinux24 と netbsd20 が並んで ディレクトリにコピーされています。 できあがったカーネルファイルは、同様に dist/install やがな ) 。 す。もう一度、お昼ご飯に行っても大丈夫です ( 食べすぎ これらの make の実行にも、たつぶりと時間がかかりま # make netbsd20 # make 1inux24 行します。 のカーネルをコンパイルしたい場合は、次のコマンドを実 がコンパイルされますが、 Linux 2.4.30 と NetBSD 2.0 make world コマンドでは 2.6.11 の Linux カーネル 38 ルを変更する必要があります。 Xen 用のカーネルだからと いって特別に難しいことはなく、通常のメニュー形式で設 定できます。 成を変更するときは、以下のコマンドを実行します。 たとえば、ドメイン 0 用の L ⅲ ux2.6.11 カーネルの構 ルにはならないので注意してください。 を指定するところです。これを忘れると、 Xen 用のカーネ ポイントは、 make コマンドの引数に、 ARCH=xen # cd # make ARCH=xen menuconfig # cd li Ⅱ ux ー 2 . 6 . 11—xen0 UNIX MAGAZINE 2005 . 8 Xen の公式サイトには、 ttylinux という仮想ディスク 動作の確認 トリ以下にコピーされます。 ファイルとカーネル・モジュールが dist / ⅲ sta Ⅱディレク デフォルト構成のコンパイルのときと同じく、カーネル # make netbsd20 # vi netbsd—2. O-xenU/sys/arch/xen/conf/XEN をエデイタで編集します。 NetBSD カーネルの場合は、以下のように設疋ファイル # make 1inux26 コンパイルします。 設疋が終ったら、以下のコマンドを実行してカーネルを れているかを確認します。 は逆に、、 PriviIeged Guest (domain 0 ) " のチェックカト ドメイン U 用のカーネルでは、ドメイン 0 用の場合と # cd # make ARCH=xen menuconf ig # cd 1inux—2.6. 11—xenU ます。 ドメイン U 用カーネルの場合も同様のコマンドを実行し れているかを確認します。 Privileged Guest (domain 0 厂が built-in に設疋さ ドメイン 0 用のカーネルでは、 Xen メニューのなかの
図 1 Xen の上で動くゲスト OS ー 0 ( 、ーは物 0 : を 0 Ⅳ 00 ″わ xe れツ 0m0 毛 NetBSD 0 ト M 第 : 0 朝 OP 舳 0 E れれ紕 AbO'RthiS 要用を [ 00 0 以下のとおりです。 とはなさそうです。 Xen の目標は、 ・ http://www.cl.cam.ac.uk/Research/SRG/ netos/xen ・ 1 台のホスト PC 上で多数のバーチャルマシンを効率的 に動かすこと ホスト PC にインストールした Xen の上で Linux と NetBSD 、 FreeBSD が同時に動いているオ兼子を図 1 に示 です。どちらかといえば、ンヾーチャルなプレードサーバ します。図の右上と左下のウインドウは、それぞれ Net- " のようなイメージです。 BSD と Linux のゲスト OS 上で動いている VNC Server いきなり水を差されたように感じるかもしれませんが、 のイ反想ディスプレイの内容を VNC Viewer で表示したも あとで「期待してたもんとちゃうやんか」とならないよう のです。 に、、、 Xen が目指すところ " をしつかり頭に入れておきま 現実には、こんなにごちやごちゃした画面のデスクトッ しよう。 プで仕事をしたり、種類の異なる複数のゲスト OS を同時 この特集の内容 に動かしたりすることはあまりないでしよう。図 1 は、あ この特集では Xen の使い方を 3 回に分けて紹介します。 くまでも皆さんの目を惹くためのサンプルです。 今回は、最初に Xen の概要を紹介します。今後の記事で こまで読んで、、、あの OS とこの OS を入れて、そ 出てくる Xen 特有の用語や概念を説明するので、はやる心 れから、あれもこれも・ " と期待に胸を膨らませすぎて をぐっと抑えて飛ばさずに読みましよう。後半では、 Xen いる人がいるといけないので、あらかじめ断っておきます。 のデモ CD を使って Xen を体鋼ーる方法を紹介しますに Xen は、たくさんの種類の OS をバーチャルマシン上 の部分は飛ばしてもかまいません ) 。そして、最後に Xen で動かすことを目指しているわけではありません。現在の のインストール手順を説明します。 ところ、サポートされている OS は Linux 、 NetBSD 、 FreeBSD の 3 つだけで、今後も積極的に増やすようなこ 2 回目は、ゲスト OS のインストール手川頁と、 Xen の仮 想”製Ⅳ′を代 0 し・ 日で 0 Ⅳー 6 ・物 ) - を朝 ) い 00 ) ー内ⅲ : root 当 2 ミ : : 45 0 ・ 0- 耘を eb ⅵー朝 : 第 1 し川 (roo い ) しを一凶ⅵ : を日 14 : 3 : 0 10 0 れ ) 00 しチーー 9 一ー簿的 0 勾社 !. ( 一学 ( 0 ) ア 3. ー第わー引ー . 1 1 9 , ー対し一 2. ー対引軈 ル Re 日い 0 を ! 物れいをヴ第ね . ⅱ代をョ、今」 . 行” 05.3- LE ( : 第 ) ・引 : 版の一 24 : Ⅱ : ーム 蘯一冪ャ TEi 、 is 噛・第 0 誂 4 ・ , ・第・ Cti(kri bt 第 0 ー・ト宿 0 廚ー 0 ′ー 0 ー・ 0 を、要ー 0 ′ー羲 0 ート・ⅳ・ pli ( ・れ・物、 . 「 00 きを tH 川 / r00 を 00 ” i 28 UNIX MAGAZINE 2005 . 8
図 2 VNffware 、 Vorkstation アプリケーション ゲスト OS 仮想 PC/AT アプリケーション ゲスト OS 仮想 PC/AT VMware Workstation ホスト OS 物理ハードウェア 図 3 VMware ESX Server コンソール OS 制御アプリケーション ゲスト OS 仮想 P C/AT アプリケーション ゲスト OS 仮想 PC/AT VMware ESX Server 物理ハードウェア 図 4 Xen ドメイン 0 制御アプリケーション ゲスト OS ドメイン U アプリケーション ゲスト OS どちらの場合も、、、仮想的な PC / AT " の層がある点が VMware の特徴です。さきほど触れた Virtual PC や Bochs もこのタイプです 2 Xen の場合は、物理ハードウェアの上に xen のマイクロ カーネルがあり、その上で複数のゲスト OS のカーネルが 動きます ( 図 4 ) 。物理ハードウェアへのアクセスは、 xen のマイクロカーネルが制御します。そのため、それぞれの ゲスト OS のカーネルは、 xen マイクロカーネルのサービ スを使うように修正しなければなりません。ただし、その 2 Bochs の場合は、 IA-32 のエミュレートもおこなうため、仮 PC/AT の層の下に仮想 IA-32 の層があります。 Xen マイクロカーネル 物理ハードウェア 30 上で動くアプリケーションの修正は不要です。 Xen 自体の制御は、ドメイン 0 と呼ばれる特別なゲス ト OS からおこないます。ドメイン 0 では、 xen を制御 するユーザー・インターフェイスだけでなく、物理ハード ウェアのデバイスドライバを含むドメイン 0 カーネルか動 いています。そのため、 Xen のマイクロカーネルとドメイ ン 0 は同じタイミングで起動します。 一方、その他のゲスト OS カ働くバーチャルマシンをド メイン U と呼びます。そして、このドメインで動くドメ イン U カーネルでは、物理デバイスへのアクセスをドメイ ン 0 にイ頁するドライバカ働いています。このため、ドメ イン U カーネルには物理デバイスを操作するデバイスドラ イバは組み込みません。 VMware のように、完全な PC 環境をエミュレートす るタイプを Full Virtualization と呼ぶようです。この方 式の利点は、ホスト OS を修正する必要がないことです。 ただし、エミュレーションにともなうオーバーヘッドがあ るため、どうしても、、もたもた感 " カ咄てしまいます。 一方、 Xen のような方式は paravirtualization と呼ば れます。この場合は、ゲスト OS のパフォーマンスの低下 がほとんどないのが大きな利点です。ただし、ゲスト OS のカーネルを Xe Ⅱ用に修正しなくてはならないので、利用 できるゲスト OS の種類が限られてしまいます。現在のバ ージョン 2.0.6 で正式にサポートされているのは、 Linux カーネル 2.4.30 と 2.6.11 、 NetBSD 2.0 、 FreeBSD 5.3 の 4 つだけです。 このほかに、 Windows XP への対応も進められている ようですが、ライセンス上の制約により一般には配布され ていません。残念です。 さらに、 Plan9 への対応も予定されているそうです。実 現すれば、楽しみです。 Xen の仮想デバイス Xen のドメイン U バーチャルマシンでエミュレートさ 図 17 ~ 18 ( 41 ~ 42 ページ ) に示します。こちらもあわせ ドメイン U 上で Linux ゲスト OS がプートする様子を れるイ反想デバイスについて説明します。 て参照してください。 UNIX MAGAZINE 2005.8