Oracle VMの仮想化とは

Oracle VMは、オープンソースの仮想化エンジンとしてデファクトスタンダードであるXenをハイパーバイザに採用したOracleの仮想化ソフトウェアです。他の仮想化エンジンと比較してXenはその性能の高さ・安定性が特徴で、Oracle VMはその上に更にWebベースのGUIを提供することで、使い勝手を格段に向上させています。

Oracle VMの仮想化とは

日本オラクル株式会社

セールスコンサルティング統括本部 基盤技術SC本部

セールスコンサルタント

中嶋 一樹

Oracle VMは、オープンソースの仮想化エンジンとしてデファクトスタンダードであるXenをハイパーバイザに採用したOracleの仮想化ソフトウェアです。他の仮想化エンジンと比較してXenはその性能の高さ・安定性が特徴で、Oracle VMはその上に更にWebベースのGUIを提供することで、使い勝手を格段に向上させています。このようにXenの高速安定性能はそのままに、導入の敷居を下げたOracle VMは Webサイトから無償でダウンロードできます。サーバー統合という仮想化の醍醐味はもちろん、従来の物理環境で考えられなかったテンプレートを用いた瞬間的なOS環境の作成や、OSの複製、ライブマイグレーション、QoSといった数々のメリットを感じることができるでしょう。

目次

Oracle VMと他のサーバー仮想化ソフトウェアとの違い

Oracle VMは一つの物理的なサーバーハードウェア上に複数のOSを稼動させるためのソフトウェアです。

図1 仮想マシンとは

仮想化エンジンには、様々な方式がありますが、Oracle VMではハイパーバイザータイプと呼ばれる方式を採用しています(図2)。ハイパーバイザータイプは従来型のホストOSタイプと比べて、仮想マシンと実際のハードウェアがより直接的にやりとりができる仕組みになっています。OSとハードウェアでやりとりする命令や転送するデータが経由するレイヤが薄い分、従来型の仮想化ソフトウェアとは比較にならないパフォーマンスを誇ります。ホストOSタイプのサーバー仮想化ソフトウェアは、通常使っているWindowsやLinuxなどのOS上にインストールできて簡単に仮想環境を構築できますが、オーバーヘッドが発生するため、開発で使えても実運用には向きません。

図2 仮想マシンソフトウェアの種類

では、同じハイパーバイザータイプのOracle VM 2.1.2とVMware Infrastructure 3はどのような違いがあるのでしょうか。このような質問を受けることは多いのですが、機能的にはほぼ同等といってよいでしょう。細かく見ていけば、VMware Infrastructureでは1仮想マシンあたりに割り当て可能な最大CPU数が4CPUに対し、Oracle VMでは32CPUまで割り当てられることや、サポートするOSに若干の違いがあることがあげられます。このあたりの仕様はバージョンによって随時変更があるところなので、適宜その時点でのデータシートを参照いただくのが良いでしょう。また性能面での違いというのも大きな関心の対象だと思います。ただし公平な性能比較というのは非常に難しいもので、テストする項目、環境、設定によって結果は変わってきます。あえて申し上げますと、ハイパーバイザータイプを採用している仮想化ソフトウェア間で比較をしても、それほど大きな差は出ないでしょう。テスト項目が少なければその分だけどちらかのソフトウェアが優勢な結果になると思いますが、多岐に亘る項目を実施すればそれほど極端な結果にはならないと思います。ただし、やはりOracle VMがエンジンに採用しているXenは、準仮想化という性能面に大きなインパクトがある技術を注力して開発してきたこともあり、総じて言えばOracle VMはVMwareよりも高いパフォーマンスを発揮する傾向にあることは間違いありません。*なお、準仮想化については後ほど詳しくご説明します。

Oracle VMのアーキテクチャ

Oracle VMは、Xenハイバーバイザーを拡張したサーバー仮想化ソフトウェアである「Oracle VM Server」にてCPU・メモリ・Diskを仮想化し、仮想化環境に作成されたゲストOSを管理するためのプロセスである「Oracle VM Agent」と、統合管理ツールである「Oracle VM Manager」が連携する構成となっています(図3)。複数の仮想マシンを管理するOracle VM Manager用のサーバーが1台必要で、仮想マシンを実行するOracle VM Server用のサーバーが1台または複数台必要となります。つまり、最低2つのサーバーが必要です。Oracle VM Server用のサーバー上で稼動しているOracle VM AgentとOracle VM Managerが通信することで、Oracle VM Managerが複数の仮想マシンを管理するというのがOracle VMの基本的な構成です。

図3 Oracle VM アーキテクチャ全体像

この他にOracle VMではVM Server Poolという考え方があります。VM Server Poolは1つのストレージを共有するVM Serverのグループのことです。 Oracle VMではNFS、iSCSI、FibreChannelのストレージを共有ストレージとして利用することができ、この共有ストレージ上にすべての仮想マシンのイメージ(設定ファイルやディスクイメージ)を格納することで、この共有ストレージに接続されたVM Serverは1つのVM Server Poolというある種の「クラスタ」を構成することができ、このクラスタ内では仮想マシンを起動したままVM Server Pool内の他のVM Serverに仮想マシンを移動させる「ライブ・マイグレーション」機能や、VM Server障害時にその上で起動していた仮想マシンを他のVM Serverで自動復旧させる「H/A」機能を利用することができます。

図4 Oracle VMの構成全体図(共有ストレージ型)

完全仮想化と準仮想化

仮想マシンには、通常のOSをそのまま稼動させることができる完全仮想化(Hardware Virtualized Machine:HVM)と、よりネイティブに近い性能を発揮できるようにOSを仮想マシン専用に修正して稼動させる準仮想化(Para-Virtualized Machine:PVM)の2つのタイプがあります。このHVMとPVMは、オラクルのサイトが提供するテンプレートのファイル名にも付けられていますので、ダウンロードする際にどちらを使うかを判断してください。 PVMはハイパフォーマンスであることが大きなメリットですが、純粋なPVMは利用可能なゲストOSがLinux系のみという制約があります。 一方HVMは、Windows系などもゲストOSとして利用できますが、PVMと比較してパフォーマンスが落ちるというデメリットがあります。ただし、HVMでもパラバーチャルドライバという専用のドライバをインストールすることによってI/O関連のパフォーマンスを向上させることは可能です。現在、オラクルはこのパラバーチャルドライバを順次開発しており、 ホームページから「pvhvm」を目安に探せば、Oracle Enterprise Linux release 5 Update 1用とOracle Enterprise Linux release 4 Update 5用のパラバーチャルドライバがダウンロード可能です。

Oracle VM Serverのネットワーク構成とメモリ/CPU割り当て

Oracle VM Serverでは、サーバーの物理NIC(eth0)から仮想的なスイッチ(xenbr0)を介してそれぞれのゲストOSに接続するようなネットワーク構成になっています。これによって、物理NICと独立させた仮想的なスイッチ(xenbr1)を作り、物理サーバー上で動いているゲストOS同士だけの閉じたネットワークを構築させることができ、物理NICに接続されている仮想的なスイッチ(xenbr0)では各ゲストOSが同じL2ネットワーク上に接続されているようにすることができます。

図5 Oracle VM Serverのネットワーク構成

CPU割り当ての仕組みは、ドメインスケジューラと呼ばれる機能が仮想CPUに実CPUを適宜ディスパッチすることで、ゲストOS側が実CPUを占有していると認識するようになっています。また、ゲストOSを稼動させたまま仮想CPUを増減させたり、仮想CPUと実CPUを固定化して割り当てたり、あるいはCPU使用率の制限を設定することができます。たとえば、負荷の高いゲストOSを稼動させたまま仮想CPUを増やして処理能力を向上させたり、優先度の高いゲストOSは実CPUを占有するような構成を組んだりすることができます。

メモリについては単純に搭載している物理メモリを各仮想マシンで必要な分だけ配分して使うことになります。ゲストOSを稼動させたままメモリを増減することも可能ですが、特にメモリを減らす際には余裕を見て行う必要があることに注意してください。OSはそもそも稼動中に物理メモリ容量が変更されることを想定していませんので、予期せぬ動作を引き起こす可能性があります。VMwareでは搭載している物理メモリ以上の仮想メモリをゲストOSに割り当てるメモリのオーバーコミット機能を実装していますが、個人的にはこれは使えない機能だと思っています。メモリをオーバーコミットさせる仕組みは、実際に仮想マシンが物理メモリを超えるメモリを確保して書き込みを行おうとした際に、ちょうどOSがディスク上にSwap領域を設けているのと同じ要領でディスクをメモリとして割り当て、それを仮想マシンはメモリであるという様に認識させるというものです。ご存知のようにディスクというのは非常にアクセスに時間を要するデバイスです。これを当然のようにメモリとして使用すると耐え難いシステムのスローダウンを招きます。この速度の低下は通常本番稼動しているシステムが許容できる範囲を大きく超えています。このような不安定な動作を引き起こす仕組みは、プロダクションシステムはおろか開発環境でも使用をためらわざるを得ません。

Oracle VMの効果的な利用方法

Oracle VMの利用シーンとして効果的な2つのケースを紹介しましょう。1つ目は開発環境で利用するケースです。アプリケーションの開発時には、同一のテスト環境で効率的に検証することが必要ですが、テスト環境のためのハードウェア投資や環境構築の手間が問題になります。Oracle VMでは、事前に作成されたテンプレートを使って仮想マシンを作成し、その上にアプリケーションサーバーやアプリケーションを構築することで簡単に開発環境を作ることができ、開発環境とまったく同じテスト環境をクローンしてテストをおこなうことができます。また、開発環境のテンプレートを作成しておけば、開発中にいつでも元の状態に戻すことができますので、トライ&エラーを繰り返しながらの開発も容易におこなうことができます。

図6 Oracle VM 効果的な適用ケース #1 「開発&テスト」

ハードウェアの入れ替えなどで有効なのがOracle VMの「ライブ・マイグレーション」という機能です。ハードウェアが老朽化して最新のハードウェアを入れようとしますと、アプリケーションを止めて新たなハードウェアにインストールし、設定し直す手間がかかります。Oracle VMでは、仮想化された環境を新たなハードウェアに移すだけで簡単に入れ替えすることができ、その間アプリケーションを止める必要はありません。

図7 Oracle VM 効果的な適用ケース #2 「Live Migration」

VM Managerとxmコマンド

ゲストOSの作成、クローンの作成、テンプレートの作成などの作業は、VM Managerから数回のマウス操作でおこなえますので、非常に簡単です。VM ManagerからゲストOSを作成するには、通常通りOSのインストーラを用いて新規作成する方法と、テンプレートから作成する方法があります。 また、Oracle VMは、Xenのxmコマンドによる操作も可能です。Oracle VM 2.1.2はXen3.1.4ベースのxmコマンドを利用できるようになっており、VM Managerで提供されていない操作をおこなえます。たとえば、「# xm vcpu-set [ゲストOSのドメイン名] 2」と入力すれば、ゲストOSに割り当てる仮想CPUを2個に動的に変更できます。

Copyright © 2008, Oracle Corporation Japan. All rights reserved.

無断転載を禁ず

この文書はあくまでも参考資料であり、掲載されている情報は予告なしに変更されることがあります。日本オラクル社は本書の内容に関していかなる保証もいたしません。また、本書の内容に関連したいかなる損害についても責任を負いかねます。

Oracleは米国Oracle Corporationの登録商標です。文中に参照されている各製品名及びサービス名は米国Oracle

Corporationの商標または登録商標です。その他の製品名及びサービス名はそれぞれの所有者の商標または登録商標の可能性があります。

中嶋 一樹(なかじま かずき)

日本オラクルにて、Linuxと仮想関連のエンジニアリング・啓蒙活動を担当している。