企業の仮想化を加速するCitrix XenServer
オープンソースXenとCitrix XenServer
本連載では全5回にわたって、仮想化の様々なシーンで活躍するXenシリーズについて解説していきます。第1回では、Citrix XenServerの基本的な仕組みについて、最新バージョン5.5の紹介と合わせて解説していきます。
Citrix XenServerは、Xenとよばれるオープンソースの仮想ソフトウエアをベースにしています。Xenの開発は、2002年からケンブリッジ大学の研究プロジェクトXenoServer Projectとしてはじまりました。そのプロジェクトメンバーによって2005年に設立されたのがXenSource社です。2006年にはXenEnterprise1.0が出荷開始されました。
2007年には、Citrix Systems(以降Citrix)がXenSource社を買収し、Citrix XenServer(以降XenServer)と名前を変更しています。
また、2009年にはXenServerを無償化し、エンタープライズ向けの機能の無償提供をはじめました。最新のバージョンは2009年6月にリリースしたXenServer 5.5です。また、オープンソースXenプロジェクトも引き続き、Citrixによりけん引されています。
さらに、このオープンソースXenは、さまざまなベンダーに採用されていて、仮想化製品としては、Oracle、Virtual Iron(Oracle社に買収)、Sun、Citrixに、またOSの仮想化機能としては、SUSE Linux Enterprise Server、 Red Hat Enterprise Linux、その他に採用されています。
XenServerは、仮想化によるオーバーヘッドを軽減するために、準仮想化とよばれるアーキテクチャ(パラバーチャライゼーション)を採用しています。XenServerでは起動時に管理用の仮想マシンが必ず起動され、この管理用の仮想マシンが、物理デバイスへのI/Oを制御します。
XenServerでは仮想マシンのことをDomain(ドメイン)とよびます。管理用の仮想マシンのことを、Domain 0またはホストOSとよびます。またこのホストOSは、Linux(Cent OS)ベースで構成されています。通常のユーザーが作成する仮想マシンのことをDomain UまたはゲストOSとよびます。
図1-1のように、準仮想化ではゲストからのネットワークI/O、ファイルI/Oに関しては、ホストOS経由で実際の物理デバイスにアクセスします。また、CPUやメモリへのアクセスはゲストOSから仮想レイヤー経由でアクセスします。そのため、XenServerはインストールするためのハードウエア制限はあまりありません。ホストOSが対応している物理デバイスであれば、XenServerをインストールできます。
ゲストOSがWindows OSの場合、Intel VTやAMD-VというCPUの仮想化支援機能を使用することで、なるべく仮想化によるオーバーヘッドを小さくするように工夫をしています。Windows OSを起動する場合は、Intel VTやAMD-Vに対応したハードウエアである必要がありますが、最近リリースしている製品はほとんど仮想化支援機能に対応しているので、あまり心配する必要はありません。
Linux OSの場合、一般的に準仮想化対応は各ディストリビューションで、すでに済まされています。
XenServerのインストールと運用管理
XenServerのインストールは10分程度で完了します。非常に簡単なため、ホストOSのバックアップは一般的に必要ありません。万が一、ハードウエア障害などがあった場合でも、あらかじめ設定情報(メタデータ)をバックアップしておきゲストOSを共有ストレージに配置しておけば、基本的にはXenServerを再インストールし設定情報を復元することで、簡単に復旧できます。
一般的にXenServerの管理はGUIベースの管理ツール「XenCenter」より行います(図1-2参照)。非常に直感的で分かりやすいユーザーインターフェースで、また日本語化もされています。
最新バージョンのXenCenter 5.5日本語版も2009年7月23日にリリースされ、フォルダを作成してユーザーがViewをカスタマイズできたり、検索機能が充実されていたり、GUIからスナップショットがとれるようになっています。
さらに、Microsoftのアクティブディレクトリとの連携も可能で、アクティブディレクトリユーザーをXenCenterの管理者として追加することが可能です。
また、管理用に追加のサーバーなどを用意する必要はなく、無償で複数のXenServerを管理することができます。リソースプールを構成し、ネットワーク構成、ISOライブラリや仮想ディスク等のリソースを共有することも可能です。仮想ディスクを共有ストレージに配置している場合は、それらを停止させることなく移動できるライブマイグレーション「XenMotion」も無償で使用できます。
XenCenterはXenAPI経由でXenServerとのコミュニケーションをとります。XenAPIは、XML-RPCを採用していますので、どういった言語からも、非常に簡単にXenAPI使用してXenServerとコミュニケーションをとることが可能です。また、WindowsゲストOS等GUIデスクトップへの接続を行う際にはVNCを使用しています。
複雑な管理を行う場合は、xeコマンドでコンソールより行います。XenCenterより、ホストOSのコンソールにも接続できます。
XenServerでネットワークを使う場合のポイント
XenServerでは6枚までの物理ネットワークカードをサポートしていて、ゲストOSではWindowsは7枚まで、Linuxは3枚までの仮想ネットワークカードをサポートしています。ゲストOSからのネットワークパケットは、準仮想化ドライバからXen Hypervisorを経由し、ホストOSのLinuxのドライバを使用して送信されます。ネットワークの種類としては大きく分けて2つあります。
・外部ネットワーク(図2-1参照)
ゲストOSから準仮想化ドライバを使用して、ゲストOSごとに生成されている仮想ネットワークインターフェース(vif)経由で、仮想スイッチ(xenbr)に接続され、仮想スイッチから物理NIC経由で外部ネットワークと接続されます。外部ネットワークからは、ホストOSとゲストOSがそれぞれ独立したコンピューターのように見えます。また、VLANの設定も行うことも可能です。
・内部ネットワーク(図2-2参照)
ゲストOSから準仮想化ドライバを使用して、ゲストOSごとに生成されている仮想ネットワークインターフェース(vif)経由で、仮想スイッチ(xenbr)に接続されます。仮想スイッチから物理NICへは接続されません。外部ネットワークとは隔離されたネットワークとなりますが、リソースプール内では同一ネットワークを構成することが可能です。
また、XenServerでは複数のNICを搭載させている場合、それらのNICを1つの仮想的なNICとして扱うことが可能です。これをボンディングと言います(一般的には、チーミングとも言われます)。ボンディングは、ネットワークの負荷を分散させたり、スループットや信頼性を向上させたりする場合に用いられます。
一般的に、仮想ディスク用のストレージネットワークと、仮想マシンで実行されるアプリケーション用のネットワークは分けておき、ストレージネットワークはボンディング、ほかのネットワークについては必要に応じてボンディングを考慮することをお勧めします。
XenServerで主に使う4種類のストレージ
XenServerのディスクI/Oに関しても、ネットワークI/Oと同様に、準仮想化ドライバからXen Hypervisorを経由し、ホストOSのLinuxのドライバを使用してディスクにI/Oを行います(図2-3参照)。
ストレージの種類としては、主に4種類あります。ディスクについては、IDE、SATA、SAS、SCSIといったディスクの中でも、最近はSASディスクを考慮するのが最もパフォーマンスがよく、信頼性が高いです。
・ローカルストレージ
小規模で、XenServer間でのライブマイグレーションや、リソースの共有を行わない場合に採用を検討します。
・NFS
比較的安価な共有ストレージです。中規模仮想環境での採用を考慮できます。
・iSCSI SAN
IPネットワークで構成されるSANストレージでは比較的安価なストレージです。中大規模仮想環境での採用で検討されます。XenServerでは、iSCSIクライアントとしてOpen iSCSI Clientを使用しています。
・FC SAN
専用のネットワークを構成する必要がある高価なストレージです。大規模仮想環境での採用で検討されます。
図2-4は各ストレージの特徴です。ここで使われるファイル形式についてですが、Local File System(ext3)やNFSではVHDファイルという形式で仮想ディスクを作成します。また(XenServer 5.0までは)Local物理ディスクや、iSCSI、FC SANでは、LVM形式として仮想ディスクを作成していました。
VHD形式はパフォーマンスは若干低いのですが、仮想マシンが非常に扱いやすく、またLVM形式はパフォーマンスは高いのですが、ファイルのコピー等が若干遅いといった点で一長一短がありました。
XenServer 5.5からは、VHDとLVMそれぞれの良い点をもった、LVHDとよばれる新ファイル形式を採用しています。
XenServerにおけるサイジング
サイジングの際に重要となってくる要素は、CPUとメモリ、ディスクI/OとネットワークI/Oになります。なお、ここでのサイジング情報はあくまでも、参考レベルとして考えてください。このサイジング情報を元に仮想化した場合でも期待通りに動作するかは保証できません。
・準備
一般的には仮想化するサーバーごとに、図3-1のような情報を、Excelなどを使用して把握することが重要です。この情報を元に、物理サーバーを仮想化するために必要なリソース(メモリ等)や、複数のゲストOSから、どれとどれを同じXenServerで運用するとよいかといったところも考慮していきます。
・プロセッサー
CPUのクロック数と、コア数に大きく依存します。例えば、仮想化しようとしている物理サーバーのCPUのクロック数が1.0GHzで、運用時の最大CPU使用率が20%であったとすると、このサーバーを20台仮想化する場合には、図3-2のように計算します。
・メモリ
運用時の最大メモリが1GBのサーバーを20台仮想化する場合、図3-3のように計算します。
図3-1、図3-2のケースであれば、プロセッサー、メモリの観点から、例えば「プロセッサー:クアッドコア(2.0GHz)×2、メモリ:16GB」のようなサーバーを使用して仮想化をする場合、2台で十分と考えられるでしょう。
・ストレージ
ゲストOSのタイプにもよりますが、目安としては、1XenServerあたり10ゲストOS以下である場合、Local Disk(SATA)でも良いと思われます。XenServerをインストールするディスクはRAID1構成にすると冗長構成をとることが可能です。また10ゲストOS以上の場合にはSASを推奨します。HA構成やXenMotion等を考慮する場合、NFSまたはSANストレージを考慮します。
価格的にはやはり、「NFS<iSCSI SAN<FC SAN」となりますが、信頼性、パフォーマンス的には、「NFS≦iSCSI SAN<FC SAN」となり、NFSも共有ディスクとして使用することが十分考慮できるかと思います。
・ネットワーク
最低2系統考慮します。仮想ディスク用のストレージネットワークと、ゲストOSで使用するアプリケーション用ネットワークです。ストレージネットワークはボンディング構成とし、冗長性、スループットを高めます。アプリケーション用ネットワークも必要に応じてボンディングして使用します。
今回のまとめと関連サイトへのリンク
さて、一通りCitrix XenServerについて解説してきましたが、ご理解いただけましたでしょうか?まずは、こちらのサイト(http://www.citrix.co.jp/products/xenser/download.html)からXenServerをダウンロードして実際に使ってみることをお勧めします。ハードウエアの敷居もそれほど高くありませんし、インストールは10分程度で済みます。
また、以下にもいくつかのサイトを紹介しますので、活用していただければと思います。
「XenServer 5.5 日本語KBサイト」(http://support.citrix.com/product/xens/v5.5/?lang=ja&tab=tab-hotfix#tab-topic)
「XenServer 5.0日本語 KBサイト」(http://support.citrix.com/product/xens/v5.0/?lang=ja&tab=tab-hotfix)
「日本語フォーラム」(http://forums.citrix.com/category.jspa?categoryID=176)
「WIKIサイト(非公認)」(http://v12n.jp/index.php?%A5%B5%A1%BC%A5%D0%A1%BC%B2%BE%C1%DB%B2%BD%2FCitrix%20XenServer)
さらに複雑な仮想システムを管理するために、Citrix EssentialsというXenServer用とHyper-V用に仮想管理ツールを有償で提供しています。また機会があれば紹介したいと思います。
次回はデスクトップ仮想化、Citrix XenDesktopついて説明します。
※Think IT編集部注(2009.08.03):図3に誤りがありましたため、一部修正を行いました。