第17章 Xenによる仮想化

目次

17.1. Xenのインストール
17.2. ドメインのインストール
17.3. xmによるXenドメインの開始および制御
17.4. トラブルシューティング
17.5. 関連情報

概要

Xenを使用すると、1台の物理的なコンピュータ上でLinuxシステムを複数起動できます。異なるシステム用のハードウェアは仮想的に提供されます。ここでは、この技術の可能性および限界についての概要を説明します。この概要は、Xenのインストール、設定、および起動についての章で構成されています。

仮想コンピュータでは通常、システムが必要とするハードウェアをエミュレートする必要があります。その欠点は、エミュレートされたハードウェアは、実際のハードウェアよりもかなり遅いという点です。Xenでは異なるアプローチを採用しています。それは、できるだけエミュレートするものを少なくするというものです。これを可能にするために、Xenは、paravirtualizationを使用します。これは、仮想コンピュータを基礎となるハードウェアと同じように見せますが、同一的には見せないテクニックです。そのため、ホストおよびゲストオペレーティングシステムは、カーネルレベルで適合します。ユーザスペースは変更のないままです。Xenでは、ハードウェアをhypervisorおよびドメイン-0と呼ばれる、制御ゲストによって管理します。ゲストシステムは、これらのバーチャルブロックおよびネットワークブロックを使用してシステムを起動し、他のゲストやローカルネットワークに接続します。Xenが稼動している複数の物理的コンピュータが、仮想ブロックおよびネットワークデバイスを利用可能な状態に設定されている場合、コンピュータの起動中に、あるハードウェアから他のハードウェアにゲストシステムを移動させることもできます。当初、Xenは1台のコンピュータ上に最大100個のシステムを起動するために開発されたのですが、この数字は、動作中のゲストシステムのシステム要件(特にメモリの消費量)に強く左右されました。

CPU使用量を制限するため、Xenのhypervisorでは、3つの異なるスケジューラが用意されています。このスケジューラは、ゲストシステムの動作中に変更することも可能です。これで、動作中のゲストシステムの優先順位を変更することができます。さらに高いレベルでは、利用可能なCPUのパワーをい調整するために、ゲストを移動させることもできます。

Xen仮想化システムには、サポートされるハードウェアに関して、不利な点もいくつかあります。Nvidia社またはATI社から提供されているような、オープンソースでないドライバのいくつかは、予想されたとおりに動作しません。このような場合は、可能であれば、チップの全機能をサポートしていないドライバでも、オープンソースのものを使用する必要があります。WLANチップおよびCardbusブリッジも、Xenを使用する環境ではサポートされていません。バージョン2では、XenはPAE(物理アドレス拡張)をサポートしません。つまり、4GBより大きいメモリはサポートしないということです。ACPIをサポートしません。電源管理およびその他の、ACPIに依存しているモードは機能しません。Xenの他の制約は、ブロックデバイスのみをブートすることは現在不可能な点です。ブートするには、ドメイン-0で使用可能なinitrdおよび適切なカーネルが常に必要です。

図 17.1 Xenの概要

Xenの概要

17.1 Xenのインストール

Xenのインストール手順には、ドメイン-0のドメインの設定およびXenゲストのインストールが含まれます。初めに、必要なパッケージがインストールされているか確認します。必要なパッケージは、pythonbridge-utilsxenxen-toolsxen-tools-ioemuおよびkernel-xenです。SUSEパッケージを使用する場合、XenはGRUBの設定に追加されます。インストール中にXenを選択すると、XenがGRUB設定に追加されます。その他の場合は、boot/grub/menu.lstの中にエントリが作成されます。このエントリは以下のような内容である必要があります。

title Xen3
    kernel (hd0,0)/boot/xen.gz
    module (hd0,0)/boot/vmlinuz-xen <parameters>
    module (hd0,0)/boot/initrd-xen

(hd0,0)を、お使いのシステムの/bootディレクトリを格納しているパーティションに置き換えます。第9章 ブートローダも参照してください。<parameters>を、Linuxカーネルをブートするのに通常使用されるパラメータと置き換えます。その後、Xenモードで再起動します。これにより、Xen hypervisorおよびほとんどのハードウェアを動作させるドメイン-0としてのLinuxカーネルが起動します。既に説明した例外を除き、すべてが通常通りに動作するはずです。既に説明した例外を除き、すべてが通常通りに動作するはずです。