仮想化の導入により、物理ホストはオペレーティング・システムのインスタンスを 1 つしか使用できないという制約から解放されました。今では、複数のオペレーティング・システムを仮想マシン (VM) として使用し、効率的にホストを多重化するようになっています。しかし、1 つのホストにオペレーティング・システムが密集すると、どうしても管理の要件が増えてきます。この管理の問題を解決するのが、Virtual Machine Manager (別名 virt-manager) です。この記事では、virt-manager の使用方法を探るとともに、このツールが平均的なハードウェアで発揮する能力を明らかにし、実行中の VM のパフォーマンスを管理および監視する方法を紹介します。

M. Tim Jones, Independent Author, .

M. Tim JonesTim は組み込みファームウェア・アーキテクトであり、著書には『Artificial Intelligence: A Systems Approach』(現在は第 2 版)、『GNU/Linux Application Programming』(第 2 版)、『AI Application Programming』(第 2 版)、『BSD Sockets Programming from a Multilanguage Perspective』があります。彼の技術的な経歴は、静止軌道衛星用のカーネル開発から、組み込みシステム・アーキテクチャーやネットワーク・プロトコル開発まで多岐にわたっています。彼はコロラド州 Longmont 在住のソフトウェア・アーキテクトであり、著作者でもあります。


developerWorks 貢献著者レベル

2012年 11月 29日

サーバーの管理には昔から問題が付き物ですが、仮想化の管理によって軽減される問題もあれば、増幅される問題もあります。サーバー上で 1 つのオペレーティング・システムだけを使っていた時代は過去のものとなり、今や仮想マシン (VM) コンテナーに収容された数多くのオペレーティング・システムが使用されるようになっています。この性質 (「仮想マシン集約率」と呼ばれる指標で表されます) は、より多くの VM をより少ない数のサーバーで使用すればするほど、必要とされるサーバー・ハードウェアが少なくなるというメリットをもたらします。これにより、全体としてハードウェアが少なくて済むとともに電力も節約されますが、その一方で管理の複雑さが増してきます。

幸い、サーバーの仮想化がもたらす問題を軽減するソリューションは存在しており、その代表的な例がオープンソースのソリューションです。その 1 つである Red Hat の Virtual Machine Manager は (主要なオープンソースのスーパーバイザー上で実行される) VM を管理する機能を大幅に単純化するとともに、これらの VM に自身のパフォーマンスとリソース使用状況を測定するための「イントロスペクティブな」機能を提供します。

ハイパーバイザーと VM 管理

仮想化は、VM とそのリソース、そして物理ホストでベースとして使用されるリソースの管理に新たな課題を突き付けます。仮想化では、オペレーティング・システムと物理ホストを 1 対 1 で対応させるのではなく、複数のオペレーティング・システムが 1 つの物理ホストのリソースを VM として共有するようになっています。各 VM を表すのはコンテナーです。コンテナーには、1 つ以上の仮想ディスクと、VM の構成および制約を記述するその他のメタデータが保持されます。したがって、物理ホストのリソースを共有する VM ごとに構成が必要になるだけでなく、共有するリソースの使用状況を把握することも必要になってきます (ホストを最適な状態で使用し、使用可能なリソースに重い負担をかけることも、これらのリソースを無駄にすることもない、適切な VM 集約率を確実に実現するためです)。


virt-manager による仮想化管理手法

Virtual Machine Manager (virt-manager) は、VM 管理用のコマンドラインまたはグラフィカル・ユーザー・インターフェース (GUI) を提供する軽量のアプリケーション・スイートです。virt-manager は VM の管理機能を提供するだけでなく、ゲスト VM のフル・グラフィカル・コンソールとしての組み込み仮想ネットワーク・コンピューティング (Virtual Network Computing: VNC) クライアント・ビューアーも提供します。

アプリケーション・スイートとしての virt-manager は、共通の仮想化管理タスクをサポートしています。表 1 に、これらのアプリケーションを記載します。記載してあるアプリケーションが行うのは、VM の構成、複製、イメージ作成、表示などです。virsh ユーティリティーは、virt-manager パッケージには含まれていませんが、それ単独で貴重なツールとなります。

表 1. 仮想化管理のアプリケーション (コマンドライン・ツールを含む)
アプリケーション説明
virt-managerVM デスクトップ管理ツール
virt-installVM プロビジョニング・ツール
virt-cloneVM イメージ複製ツール
virt-imageXML 記述子から VM を作成するツール
virt-viewerVM グラフィカル・コンソール
virshvirsh ゲスト・ドメイン用の対話型ターミナル・ソフト

virt-manager は、使用可能なハイパーバイザーを管理するために libvirt 仮想化ライブラリーを利用します。libvirt が公開するアプリケーション・プログラミング・インターフェース (API) は、多数のオープンソース・ハイパーバイザーと統合して制御と監視を可能にします。libvirtlibvirtd というデーモンを使用可能にすることによって、このプロセスを支援します (以下に示すスタックの概略図を参照)。

図 1. QEMU を使用した virt-manager スタックの概略図
QEMU を使用した virt-manager スタックの概略図

Virtual Machine Manager は、Red Hat が VM のライフサイクルを制御するために Python 言語で開発したソリューションです。プロビジョニング機能、仮想ネットワーク管理機能、統計収集およびレポート作成機能を備えているだけでなく、VM 自体にアクセスするための簡単な GUI も用意されています。


virt-manager のインストール

virt-manager パッケージをインストールするには、使用しているディストリビューションに対応したパッケージ・マネージャーを使用してください。Ubuntu の場合は、以下のように apt を使用してインストールします。

$ sudo apt-get install virt-manager

この apt コマンドにより、約 22MB のディスク・スペースが virt-manager アプリケーション・スイートで使用されることになります。インストールの一環として、libvirt デーモンが実行中の状態になっているはずです。それを確認するには、以下のコマンドを実行します。

$ ps ax | grep libvirtd

上記のコマンドによって、libvirtd プロセスが実行中であることが示されます。-d オプションを指定すると、libvirtd がデーモンとして実行されます。libvirtd は、virt-manager アプリケーションからハイパーバイザーに接続できるようにするとともに、ハイパーバイザーを通じてさらにハイパーバイザーがホストする VM に接続できるようにするデーモンであることを思い出してください。

virt-manager パッケージがインストールされたことを確認し、virt-manager バイナリーの場所を明らかにするには、which コマンドを使用します。

$ which virt-manager

virt-manager の場所は、このスイートに含まれる他のアプリケーション (virt-installvirt-image など) のホームにもなります。

最後のステップとして、QEMU をハイパーバイザーとして使用してください。QEMU を使用する理由は、任意のハードウェアで実行できるためです。QEMU はエミュレーターであることから多少速度に劣りますが、QEMU を使用すれば、新しいハードウェアの仮想化拡張機能が不要になります。

$ sudo apt-get install qemu

次は、virt-manager を使用していくつかの VM の作成および監視を行います。


virt-manager による VM の作成および監視

このセクションの手順では、2 つの VM を作成します。

  1. SliTaz という Linux ベースのオペレーティング・システムをインストールします。SliTaz は、コミュニティーによって開発された Linux オペレーティング・システムのディストリビューションです。軽量のオペレーティング・システムでもあるため、QEMU を実行してハードウェア環境をエミュレートするには好都合です。この VM をダウンロードするには、以下のコマンドを実行します。
    $ wget http://mirror.slitaz.org/iso/4.0/slitaz-4.0.iso
  2. VM の作成プロセスを開始するには、sudo を使って root 権限で virt-manager を開始します。
    $ sudo virt-manager

    上記のコマンドによって、virt-manager ウィンドウが開きます。このウィンドウから、ローカル QEMU ハイパーバイザーに接続します (「localhost (QEMU)」を右クリックして「Connect (接続)」をクリックします)。複数のハイパーバイザーが使用できる場合には、このウィンドウにそのすべてが表示されるので、libvirt API を使って接続する対象のハイパーバイザーを選択することができます。

    図 2. Virtual Machine Manager ウィンドウ
    Virtual Machine Manager ウィンドウ
  3. ローカル QEMU ハイパーバイザーに接続したら、「Create Virtual Machine (仮想マシンの作成)」アイコンをクリックして、VM 作成ウィザードを開始します。
  4. この新規 VM には「slitaz1」という名前を指定し、(前のステップでダウンロードした) ローカル ISO からのオペレーティング・システムのインストールを要求します。
    図 3. VM の作成
    VM の作成
  5. Forward (進む)」をクリックした後、VM のインストール・メディアを定義し、オペレーティング・システムの情報を指定します。この例では、ISO ファイルを指定し、OS タイプのリストから「Linux」を選択した後、バージョンのリストから「Ubuntu 10.04 LTS (Lucid Linux)」を選択します。
    図 4. インストール・メディアの定義
    インストール・メディアの定義
  6. VM の実行環境を定義します。この VM には 1GB のメモリーと単一の CPU を割り当てますが、これらの割り当て量の選択は難解な作業になる可能性があります。というのも、メモリーは VM に合った適切なサイズにしなければならず (1GB は、この特定のインスタンスに割り当てるには過剰な量です)、CPU の数を多くすると、オペレーティング・システムの助けになりますが、場合によっては害にもなるからです。オペレーティング・システムが複数のコアを効率的に利用する場合には、それらのコアを VM に配分することができます。
    図 5. 実行環境の定義
    実行環境の定義
  7. VM 用のストレージ環境を定義します。この例では (自分で値を指定する代わりに) virt-manager に仮想ディスクを作成させて、そのサイズを最大 1GB まで動的に増加させるように設定します。ここで仮想ディスクに対して指定する内容が、インストールおよび実行速度に影響を及ぼす可能性があることに注意してください。ディスクのサイズを動的に変更するように指定すると、最初は小さなホスト・ファイルが作成され、VM によって使用されるのに伴い拡張されることになります。この動的プロセスに要する時間はわずかです。この例とは別の設定として、ホスト・オペレーティング・システム (ハイパーバイザー) において完全にサイズ設定される「ロー」ディスク・イメージを使用することも可能です。この場合のトレードオフは、必要となるホストのディスク・スペースが増える一方、動的なサイズ設定プロセスが不要になるため、VM の動作がより高速になることです。
    図 6. ストレージ環境の定義
    ストレージ環境の定義
  8. 最後のステップとして、virt-manager がこれまでのステップで構成された VM の設定内容の要約を表示するとともに、ネットワーク構成オプションを定義できるようにします (デフォルトのネットワーク・アドレス変換 (Network Address Translation: NAT) を選択してください)。ここでは、仮想ディスクの物理的な配置場所などといった、追加のオプションと情報も指定することができます。さらに、要求するプロセッサーのタイプを定義することもできます。この例ではアーキテクチャーとして AMD i686 を選択しますが、x86-64 も選択肢として用意されています。
    図 7. VM の最終チェック
    VM の最終チェック
  9. Finish (完了)」をクリックすると、VM のブート・プロセスが開始されます。このプロセスではまず、(インストール・イメージが収容された) CD-ROM をブートします。これで、VM が Linux ディストリビューションをインストールできるようになります。インストールが完了すると、リブート (自動的に CD-ROM との接続は解除されます) によって、稼働状態の VM が提供されます。注意する点として、このウィンドウは VM を操作できるように、VM 内部の情報を表示するだけのものなので、このウィンドウを閉じても、VM はバックグラウンドで稼働し続けます (virt-manager のルート・ウィンドウに表示されます)。
    図 8. 軽量の SliTaz Linux ディストリビューションを実行する VM
    軽量の SliTaz Linux ディストリビューションを実行する VM
  10. もう 1 つの新しい VM は、前にインストールした既存の VM を複製するだけで作成することができます。virt-manager で VM の複製を選択した後、ディスク全体を複製します (ディスクが共有されないようにするためです)。VM の詳細 (例えばネットワーク構成など) は、複製後に変更することができます。
    図 9. virt-manager 内での VM の複製
    virt-manager 内での VM の複製
  11. Clone (複製)」をクリックすると、最初の VM をベースに新規 VM が作成され、その VM に固有の QEMU 環境内でその VM にアクセスして同時に実行できるようになります。VM の複製は、オペレーティング・システムとアプリケーション環境のスナップショットを同時に取得するにも、特定のアプリケーション (Apache Hadoop など) でマシンを構成した後に、ローカルでマシンの仮想クラスターを作成するにも、最適な方法です。図 10 に示されているように、両方の VM が実行中になり、virt-manager のルート・ウィンドウ内にそれぞれの CPU 使用率のプロファイルが表示されます。
    図 10. virt-manager で複製した、同時に実行中の VM
    virt-manager で複製した、同時に実行中の VM

この例では、VM を作成して構成し、ベースにあるハイパーバイザーの詳細を知ることなく VM を実行する単純な方法と、公開される多数のオプション (ストレージおよびネットワーク構成の管理など) について説明しました。この例では QEMU によるエミュレーションを使用しましたが、(Intel Virtual Technology (VT) などのハードウェア・サポートを使用して) ベアメタルに近いパフォーマンスを実現するために、Linux Kernel Virtual Machine (KVM) ハイパーバイザーを使用することもできます。virt-manager アプリケーションが提供する機能は、VM を作成する機能のみならず、VM の複製や、VM の一時停止および再開などの機能も提供されます。


サポート・ツール

libvirt 仮想化 API を使用するツールの代表格は virt-manager ですが、このインターフェースを仮想化管理に利用するツールのエコシステムは拡大し続けています。例えば、virt-manager パッケージには、複数のハイパーバイザーとホストで VM を作成して管理するのに便利な GUI が用意されています。コマンドラインがお好みの場合には、コマンドラインでしか実現できない機能と制御を提供するツールがいくつもあります。

virt-install ツールは、新しい VM をプロビジョニングする機能を提供します。VM を作成する際に virt-manager で提供される構成オプションは数が限られていますが、virt-install は包括的な構成オプションを提供します。これには、インストール・メソッド、ストレージ構成、ネットワーク構成、グラフィック構成、仮想化オプション、さらには相当な数にのぼる仮想デバイス・オプションまで含まれます。

virt-image ツールは virt-install ツールと似ていますが、このツールでは VM 作成プロセスの詳細を XML で定義することができます。XML 記述子ファイルでは、VM の一般的なメタデータ、ドメイン属性 (CPU、メモリーなど)、ストレージ構成を指定します。

virt-clone ツールは、既存の VM イメージを複製する手段となります。ここで言う「複製」とは、新しい VM が一意であることを確実にして競合 (MAC (Media Access Control: メディア・アクセス制御) アドレスの競合など) を避けるために更新されたパラメーターで、既存の VM をコピーすることを意味します。

virt-viewer ツールは、VNC プロトコルを使用した特定の VM のグラフィカル・コンソールを提供します。virt-viewer は、ローカル・ホストで実行中の VM にも、リモート・ホストで実行中の VM にも接続することができます。

最後に挙げるのは、ゲスト・ドメインを管理するのに最も強力なツールである仮想化シェル virsh です。virsh は、VM ゲストの一覧表示、VM ゲストの起動と停止、VM の作成に使用することができます。要するに、他のツールには用意されていない機能を公開する virsh を使用して、ハイパーバイザー全体での仮想化を完全に管理できるということです。


その他の仮想化管理ソリューション

virt-manager とこれに関連するツールは、デスクトップ環境で VM を管理するのに役立つ環境を提供しますが、さらに機能の充実したプラットフォーム仮想化ソリューションのほうが好ましい場合もあります。Red Hat で提供している oVirt というソリューションは、virt-manager と同様に libvirt を使用して VM およびバックエンド・ハイパーバイザーを管理します。複数のバックエンド・ハイパーバイザーをサポートしている oVirt ソリューションは、Fibre Channel、iSCSI、Network File System (NFS) などといったエンタープライズ・レベルのストレージ・プロトコルまで管理することができます。さらに、oVirt ソリューションは、同種のインフラストラクチャー内での高可用性およびライブ・マイグレーションなどのエンタープライズ・レベルの機能を公開します。


さらに詳しく調べてください

virt-manager はよくあるツールの 1 つではありません。このツールは、オープン APU とオープン・クラウド・スタック (デスクトップ、サーバー、データ・センター) によるオープン・クラウドに向けた一歩です。virt-manager とこれに関連するツールは、デスクトップ PC 上で仮想化を管理するための単純ながらも強力な環境を提供します。強力な上にスクリプトを作成できるコマンドラインを選ぶにしても、シンプルさを持ち合わせた GUI を選ぶにしても、virt-manager およびその関連ツールが皆さんの選択に応えます。

参考文献

学ぶために

  • Virtual Machine Manager の Web サイトは、virt-manager アプリケーション・スイートに関するあらゆる情報の発信元です。ソース・リポジトリーとメーリング・リストに加え、ウィキと FAQ から詳細を学ぶことも、デスクトップ UI の開発計画について知ることもできます。Red Hat が公開している目標リストとロードマップで、今後の動向をチェックしてください。
  • Red Hat では、仮想化の管理に関する豊富なドキュメントを管理しています。Red Hat のマニュアル・サイトで、仮想化管理の詳細仮想化の導入方法ホストの構成とゲストのインストールに関する詳細を調べてください。
  • virt-manager はハイパーバイザーおよび VM との通信手段として libvirt をフル活用しています。libvirt について詳しく学ぶには、「libvirt 仮想化ライブラリーの徹底調査」(M. Tim Jones著、developerWorks、2010年1月) を読んでください。
  • Linux のページは、使用可能なツールについて学ぶには絶好の情報源です。この記事で取り上げた virt-managervirt-viewervirt-installvirt-imagevirt-clonevirsh など、各ツールの man ページの HTML バージョンが用意されています。
  • developerWorks Open source ゾーンには、オープソースのツールおよびオープンソース技術の使用に関する情報が豊富に揃っています。
  • データ・センターでの大規模な仮想化管理には、Red Hat の oVirt を検討してください。oVirt プロジェクトは、包括的な仮想化管理を目的とするプロジェクトのエコシステムです。

製品や技術を入手するために

  • ご自分に最適な方法で IBM 製品を評価してください。評価の方法としては、製品の試用版をダウンロードすることも、オンラインで製品を試してみることも、クラウド環境で製品を使用することもできます。また、SOA Sandbox では、数時間でサービス指向アーキテクチャーの実装方法を効率的に学ぶことができます。

議論するために

  • developerWorks コミュニティーに参加してください。ここでは他の developerWorks ユーザーとのつながりを持てる他、開発者によるブログ、フォーラム、グループ、ウィキを調べることができます。

コメント

developerWorks: サイン・イン

必須フィールドは(*)で示されます。


IBM ID が必要ですか?
IBM IDをお忘れですか?


パスワードをお忘れですか?
パスワードの変更

「送信する」をクリックすることにより、お客様は developerWorks のご使用条件に同意したことになります。 ご使用条件を読む

 


お客様が developerWorks に初めてサインインすると、お客様のプロフィールが作成されます。会社名を非表示とする選択を行わない限り、プロフィール内の情報(名前、国/地域や会社名)は公開され、投稿するコンテンツと一緒に表示されますが、いつでもこれらの情報を更新できます。

送信されたすべての情報は安全です。

ディスプレイ・ネームを選択してください



developerWorks に初めてサインインするとプロフィールが作成されますので、その際にディスプレイ・ネームを選択する必要があります。ディスプレイ・ネームは、お客様が developerWorks に投稿するコンテンツと一緒に表示されます。

ディスプレイ・ネームは、3文字から31文字の範囲で指定し、かつ developerWorks コミュニティーでユニークである必要があります。また、プライバシー上の理由でお客様の電子メール・アドレスは使用しないでください。

必須フィールドは(*)で示されます。

3文字から31文字の範囲で指定し

「送信する」をクリックすることにより、お客様は developerWorks のご使用条件に同意したことになります。 ご使用条件を読む

 


送信されたすべての情報は安全です。


static.content.url=http://www.ibm.com/developerworks/js/artrating/
SITE_ID=60
Zone=Cloud computing, Linux
ArticleID=847063
ArticleTitle=Virtual Machine Manager で VM を管理する
publish-date=11292012