Red Hat Training

A Red Hat training course is available for RHEL 8

第18章 入れ子仮想マシンの作成

RHEL 8 システム以降では、ネストした仮想マシンを作成できます。つまり、RHEL 8 物理ホスト (レベル 0 または L0) で実行している RHEL 8 仮想マシン (レベル 1 または L1) は、ハイパーバイザーとして機能し、独自の仮想マシン (レベル 2 または L2) を作成できます。

つまり、L0 ホストは L1 仮想マシンを実行でき、これらの L1 仮想マシンはそれぞれ独自の L2 仮想マシンをホストできます。この場合、L0 ホストおよび L1 ホストの両方が RHEL 8 システムである必要がありますが、L2 ゲストは、対応している RHEL または Windows システムになります。

警告

Red Hat は現在、ネストされた仮想化を テクノロジープレビュー としてのみ提供しているため、これはサポート対象外となります。

また、さまざまな 機能の制限 があるため、実稼働ユーザー環境ではネストされた仮想化を使用することは推奨されません。代わりに、ネストされた仮想化は、主に以下のような開発およびテストシナリオを対象としています。

  • 制限された環境でのハイパーバイザーのデバッグ
  • 限られた物理リソースでの大規模な仮想デプロイメントのテスト

IntelAMDIBM POWER9IBM Z などの複数のアーキテクチャーでは、ネストした仮想マシンを作成することもできます。使用されるアーキテクチャーに関係なく、ネスティングは テクノロジープレビュー であるため、Red Hat ではサポート対象外である点に注意してください。

18.1. Intel でのネスト化された仮想マシンの作成

以下の手順に従って、Intel ホストでネストされた仮想化を有効にし、設定します。

警告

ネストされた仮想化は現在、Intel アーキテクチャーで テクノロジープレビュー としてのみ提供されているため、サポート対象外となります。

前提条件

  • L1 仮想マシンを実行している L0 RHEL 8 ホスト。
  • ハイパーバイザー CPU でネストされた仮想化をサポートしている。L0 ハイパーバイザーで cat /proc/cpuinfo コマンドを使用して、サポートがあるか確認します。コマンドの出力に vmx および ept フラグが含まれる場合は、L2 仮想マシンを作成できます。通常、Intel Xeon v3 コア以降が対象です。
  • L0 ホストでネストされた仮想化が有効になっていることを確認します。

    # cat /sys/module/kvm_intel/parameters/nested
    • コマンドが 1 または Y を返すと、この機能は有効になっています。残りの前提条件の手順を省略し、手順セクションに進みます。
    • コマンドで 0 または N が返されたにも拘らず、システムがネストされた仮想化に対応している場合は、以下の手順に従って機能を有効にします。

      1. kvm_intel モジュールをアンロードします。

        # modprobe -r kvm_intel
      2. ネスト機能をアクティブにします。

        # modprobe kvm_intel nested=1
      3. ネスト機能は有効になりましたが、L0 ホストの次回起動後は無効になります。永続的に有効にするには、以下の行を /etc/modprobe.d/kvm.conf ファイルに追加します。

        options kvm_intel nested=1

手順

  1. ネストされた仮想化用に L1 仮想マシンを設定します。

    1. 仮想マシンの XML 設定を開きます。以下の例では、Intel-L1 仮想マシンの設定が開きます。

      # virsh edit Intel-L1
    2. <cpu> 要素を編集して、host-passthrough CPU モードを使用するように仮想マシンを設定します。

      <cpu mode='host-passthrough'/>

      仮想マシンで特定の CPU モデルを使用する必要がある場合は、custom CPU モードを使用するように仮想マシンを設定します。<cpu> 要素内に、<feature policy='require' name='vmx'/> 要素と <model> 要素を追加し、内部で CPU モデルを指定します。以下に例を示します。

      <cpu mode ='custom' match ='exact' check='partial'>
        <model fallback='allow'>Haswell-noTSX</model>
        <feature policy='require' name='vmx'/>
        ...
      </cpu>
  2. L1 仮想マシン内に L2 仮想マシンを作成します。これには、L1 仮想マシンの作成 時と同じ手順に従います。