1 つまたは複数のゲストシステム (VM ゲスト) を実行する仮想化サーバ (VM ホストサーバ) を動作させるには、サーバ内に仮想化コンポーネントをインストールする必要があります。インストールすべきコンポーネントは、利用したい仮想化技術によって異なります。
VM ホストサーバ を実行するのに必要な仮想化ツールをインストールするには、下記のいずれかの方式をとることができます:
VM ホストサーバ 側での openSUSE Leap のインストール時に、システムの役割を選択する方式
既にインストール済みで動作中の openSUSE Leap において、 YaST 仮想化 モジュールを実行する方式
既にインストール済みで動作中の openSUSE Leap において、特定のパターンを選択してインストールする方式
VM ホストサーバ 側での openSUSE Leap のインストールの際、仮想化に必要なツール類全てをインストールするよう選択することができます。具体的にはインストールの際、 画面でそれを行います。
ここで openSUSE Leap のインストールと共に必要なツールもインストールされるようになります。
もしくは のいずれかの役割を選択してください。これで必要なソフトウエアが選択され、どちらの仮想化ホストを選択した場合でも、 /var/lib/libvirt
にマウントされる専用のパーティションが作成されるほか、 firewalld
と Kdump サービスの有効化がそれぞれ設定されます。
VM ホストサーバ 側での openSUSE Leap のインストール指定にもよりますが、通常はお使いのシステム内に仮想化ツールは全くインストールされません。必要なツールは YaST 仮想化 モジュールでハイパーバイザを選択することによって、インストールを行うことができます。
なお、 YaST 仮想化 モジュールは yast2-vm パッケージ内に含まれています。仮想化コンポーネントをインストールするにあたっては、あらかじめ VM ホストサーバ 内に本パッケージをインストールしておいてください。
KVM 仮想化環境や関連ツールをインストールするには、下記の手順を実施します:
YaST を起動し、
› を選択します。libvirt
ベースの管理スタックも必要とする場合は、 も選択してください。選択が終わったら、 を押します。
YaST でのインストールを行った場合は、 VM ホストサーバ の設定の際、自動的にブリッジを設定するかどうかの確認を表示します。 VM ゲスト に対して適切なネットワーク環境を提供するのに必要な設定であるため、通常は
を押して進めてください。ネットワークが不要である場合は、 を押してもかまいません。インストールが終わったら、そのまま VM ゲスト の設定を開始することができます。 VM ホストサーバ の再起動は不要です。
Xen 仮想化環境をインストールするには、下記の手順を実施します:
YaST を起動し、
› を選択します。libvirt
ベースの管理スタックも必要とする場合は、 も選択してください。選択が終わったら、 を押します。
YaST でのインストールを行った場合は、 VM ホストサーバ の設定の際、自動的にブリッジを設定するかどうかの確認を表示します。 VM ゲスト に対して適切なネットワーク環境を提供するのに必要な設定であるため、通常は
を押して進めてください。ネットワークが不要である場合は、 を押してもかまいません。インストールが終わったらシステムを再起動します。起動時に Xen カーネル を選択してください。
全ての機能が期待通りに動作することを確認したら、 YaST を利用して既定で起動するカーネルを変更し、 Xen を有効化したカーネルを使用するようにしてください。既定のカーネルを変更する方法については、 12.3項 「YaST によるブートローダの設定」 をお読みください。
openSUSE Leap のソフトウエアリポジトリでは、関連するソフトウエアパッケージをまとめて インストールパターン という形で提供しています。動作中の openSUSE Leap でこれらのパターンをインストールすることで、特定の仮想化に必要なコンポーネントをまとめてインストールすることができます。パターンをインストールするには zypper
コマンドを下記のように入力して実行します:
zypper install -t pattern パターン名
KVM 環境向けには下記のようなパターンが用意されています:
kvm_server
KVM および QEMU を利用するための基本的な環境をインストールします。
kvm_tools
KVM 環境で VM ゲスト を管理したり監視したりするための libvirt
ツールをインストールします。
Xen 環境向けには下記のようなパターンが用意されています:
xen_server
基本的な Xen VM ホストサーバ をインストールします。
xen_tools
Xen 環境で VM ゲスト を管理したり監視したりするための libvirt
ツールをインストールします。
KVM の入れ子型仮想化は現在技術プレビューの段階にあります。そのため、テスト目的にのみ使用されるべきものであり、サポート対象にも入っておりません。
入れ子型のゲストとは、 KVM ゲスト内で KVM のホストを動作させて、そのホスト内でさらに KVM ゲストを動作させることを指します。入れ子型の仮想化を説明するにあたっては、下記のような仮想化レイヤを使用します:
KVM を動作させる物理マシンを意味します。
L0 内で動作する (1 段階目の) 仮想マシンを意味します。この中ではさらに KVM を動作させますが、これを ゲストハイパーバイザ と呼びます。
L1 内で動作する (2 段階目の) 仮想マシンを意味します。これを 入れ子ゲスト と呼びます。
入れ子型の仮想化を使用することで様々なメリットを受けることができます。たとえば下記のような用途が考えられます:
クラウド環境で必要な仮想化ソリューションを動作させ、その中に必要な仮想マシンを配置することができるようになります。
ハイパーバイザ自身のライブマイグレーションを行うことができるようになります。もちろんその中のゲスト (仮想マシン) も一括で移行することができます。
入れ子型の仮想化を行った仮想マシンの場合、ライブマイグレーションには対応していません。
ソフトウエアの開発やテストにも使用することができます。
入れ子型の仮想化を有効化するには、まず今読み込まれているモジュールをいったん解除したあと、 nested
KVM モジュールパラメータを指定して再読み込みを行う必要があります:
Intel CPU の場合、下記のように入力して実行します:
>
sudo
modprobe -r kvm_intel && modprobe kvm_intel nested=1
AMD CPU の場合は、下記のように入力して実行します:
>
sudo
modprobe -r kvm_amd && modprobe kvm_amd nested=1
入れ子型の仮想化を恒久的に使用したい場合は、 /etc/modprobe.d/kvm_*.conf
ファイルを作成して、その中に nested
KVM モジュールパラメータを指定してください:
Intel CPU の場合は、 /etc/modprobe.d/kvm_intel.conf
ファイルを作成して、下記のような行を記述します:
options kvm_intel nested=1
AMD CPU の場合は、 /etc/modprobe.d/kvm_amd.conf
ファイルを作成して、下記のような行を記述します:
options kvm_amd nested=1
L0 ホストが入れ子型の仮想化に対応していれば、 L1 ゲストに下記のいずれかの修正を加えることで、 L1 内で仮想化ができるようになります:
QEMU のコマンドラインオプションに -cpu host
を追加します。
QEMU のコマンドラインオプションの -cpu
以下に、 vmx
(Intel CPU の場合) もしくは svm
(AMD CPU の場合) を追加します。これにより、仮想 CPU 内で仮想化ができるようになります。
KVM ハイパーバイザ内で入れ子型の VMware ESX ハイパーバイザを動作させると、ネットワークの接続が不安定になる事象が発生します。この問題は特に、 KVM ゲストとハイパーバイザの間、もしくは KVM ゲストと外部ネットワークとの間で発生します。これは KVM ゲストの設定で、下記のような既定の CPU 設定が存在する場合に生じる問題です:
<cpu mode='host-model' check='partial'/>
この問題を解決するには、 CPU の設定を下記のように変更してください:
[...] <cpu mode='host-passthrough' check='none'> <cache mode='passthrough'/> </cpu> [...]