第1章 KVM のインストールと要件

目次

1.1. ハードウエア要件
1.2. 対応済みゲスト側オペレーティングシステム
1.3. kvm パッケージ
1.4. KVM のインストール

概要

KVM はハードウエア仮想化 (Intel VT または AMD-V) 機能のある x86 プロセッサ 向けに開発された完全仮想化ソリューションです。 KVM は主に 2 種類の コンポーネントから構成されています。 1 つは仮想化の中枢基盤を提供し、 プロセッサ固有のドライバでもあるカーネルモジュールのセット (kvm.ko, kvm-intel.ko, kvm-amd.ko) 、もう 1 つは仮想デバイス向けの エミュレーションを提供したり、 VM ゲスト (仮想マシン) の管理機構を提供したり するユーザスペース側のプログラムです。 KVM と言う用語は厳密にはカーネル レベルの仮想化機能のことを指しますが、実際にはユーザスペース側のコンポーネント までを含めた総称として利用しています。

VM ゲスト (仮想マシン) と仮想ストレージ、仮想ネットワークはそれぞれ libvirt ベースのツールと QEMU ツールで管理することができます。 libvirt は KVM や Xen など、異なる仮想化ソリューションをベースにした VM ゲスト について、これらの管理 API を提供するライブラリです。グラフィカル ユーザインターフェイスのほか、コマンドラインプログラムも提供しています。 一方の QEMU ツールは KVM/QEMU 固有のプログラムで、コマンドライン インターフェイスのみを提供しています。

1.1. ハードウエア要件

現時点では SUSE は x86_64 ホスト上での KVM 完全仮想化のみをサポート しています。また、 KVM は AMD (AMD-V) や Intel (VT-x) CPU に含まれる ハードウエア仮想化機能を利用するように設計されています。チップセットや PCI デバイスの仮想化機能も提供されていて、たとえば I/O メモリマッピング ユニット (IOMMU) やシングルルート I/O 仮想化 (SR-IOV) などを利用することが できるようになっています。

お使いの CPU がハードウエア仮想化機能に対応しているかどうか調べるには、 下記のコマンドを入力してください:

egrep '(vmx|svm)' /proc/cpuinfo

上記のコマンドを入力しても何も出力されない場合は、お使いのプロセッサが ハードウエア仮想化に対応していないか、もしくは BIOS でハードウエア仮想化 機能が無効化されていることを示します。

上記以外にも、下記の Web サイトでハードウエア仮想化に対応するプロセッサを 確認することができます: http://ark.intel.com/Products/VirtualizationTechnology (Intel CPU 向け) http://products.amd.com/ (AMD CPU 向け).

[Note]

KVM のカーネルモジュールは、お使いの CPU がハードウエア仮想化に対応して いない場合や、 BIOS でハードウエア仮想化機能を有効に設定していない場合には、 読み込みが行なわれません。

VM ホストサーバ を利用するにあたって、最小限となるハードウエア要件は openSUSE と同じです 。 に示されている概要と同じです。しかしながら、 それぞれの仮想化ゲストに対して、少なくとも物理的な (仮想化を伴わない) インストールと同じだけの RAM を割り当ててください。また、それぞれの仮想化 ゲストに対して、 1 つ以上のプロセッサコアまたはハイパースレッドを割り当てて おことを強くお勧めします。

1.2. 対応済みゲスト側オペレーティングシステム

下記の表には、テスト済みのゲスト側オペレーティングシステムと、それらの SUSE におけるサポート状態を示しています。すべてのゲスト側オペレーティング システムは完全仮想化と擬似仮想化の両方に対応していますが、 Windows ゲストのみ、 完全仮想化のみの対応となります。また、 OES, Netware ゲストについては、 擬似仮想化のみの対応となります。 さらに、 Netware は 32 ビットのみの対応となりますが、それ以外のすべてのオペレーティング システムは 32 ビットと 64 ビットの両方の x86 版に対応しています。 その他のオペレーティングシステムに対するサポート状態 (SUSE ではテスト していないもの) について、詳しくは http://www.linux-kvm.org/page/Guest_Support_Status をお読みください。

また、擬似仮想化ドライバ (PV ドライバ) についても、利用可能であればその旨を 示しています。

KVM 向けの擬似仮想化ドライバ

  • virtio-net: 仮想ネットワークドライバ。

  • virtio-blk: 擬似仮想化ブロックデバイス向けの仮想 ブロックデバイスドライバ。

  • virtio-balloon: 動的なメモリ割り当てのための メモリドライバ。ゲストに対して割り当てるメモリを、動的に変更することが できるようになります。

  • virtio-scsi: 高度な SCSI ハードウエアに対応する ストレージインターフェイス。

  • kvm-clock: 時刻同期ドライバ。

表1.1 openSUSE における KVM 対応済み KVM ゲスト側オペレーティングシステム

openSUSE 11.2 またはそれ以降

PV ドライバ:

kvm-clock, virtio-net, virtio-blk, virtio-balloon

サポート状態:

完全サポート

SLES 11 SP1/ SP2 / SP3

PV ドライバ:

kvm-clock, virtio-net, virtio-blk, virtio-balloon, virtio-console, virtio-rng

サポート状態:

完全サポート

SLES 10 SP4

PV ドライバ:

kvm-clock, virtio-net, virtio-blk, virtio-balloon, virtio-console

サポート状態:

完全サポート

SLES 9 SP4

PV ドライバ:

提供されていません

サポート状態:

完全サポート

必須起動パラメータ:

32 ビット版カーネルの場合: clock=pmtmr
64 ビット版カーネルの場合: ignore_lost_ticks

SLED 11 SP1 / SP2 / SP3

PV ドライバ:

kvm-clock, virtio-net, virtio-blk, virtio-balloon, virtio-console, virtio-rng

サポート状態:

技術プレビュー状態

RedHat Enterprise Linux 4.x / 5.x / 6.x

PV ドライバ:

http://www.redhat.com/ をお読みください。

サポート状態:

現状ありのまま

注意:

詳しくは RHEL 仮想化ガイドをお読みください。

Windows 2003 SP2+ / 2008 SP2+ / 2008 R2+ / 2012

PV ドライバ:

仮想マシン ドライバパック ( http://www.suse.com/products/vmdriverpack/) 内に ある virtio-net, virtio-blk, virtio-balloon の各ドライバの使用を推奨します

サポート状態:

Server Virtualization Validation Program (サーバ仮想化検証プログラム; SVVP) による完全サポート (完全な仮想化に対応)

注意:

ホスト側のプロセッサが、 constant_tsc と呼ばれる CPU 機能に対応して いなければなりません (下記のコマンドで確認できます: grep "constant_tsc" /proc/cpuinfo

Windows XP SP3+ / 2003 SP2+ / Vista SP2+ / 7 SP1+ / 8

PV ドライバ:

仮想マシン ドライバパック ( http://www.suse.com/products/vmdriverpack/) 内に ある virtio-net, virtio-blk, virtio-balloon の各ドライバの使用を推奨します

サポート状態:

現状ありのまま


[Important]

SUSE Linux Enterprise Server 11 SP1 で作成されたゲストイメージには対応していますが、それ以前の SUSE Linux Enterprise で作成されたものには対応していません。

1.2.1. 擬似仮想化ドライバの利用できる環境

仮想化を利用する際、ゲスト側のオペレーティングシステムの性能を向上させる 目的で、擬似仮想化ドライバが提供されている場合があります。これらは必須と いうわけではありませんが、ご利用になることを強くお勧めします。 擬似仮想化ドライバは下記のとおりに提供されています:

SUSE Linux Enterprise Server 11 SP1 / SP2 / SP3

カーネル内に同梱

SUSE Linux Enterprise Server 10 SP4

カーネルに同梱

SUSE Linux Enterprise Server 9 SP4

用意されていません

RedHat

RedHat Enterprise Linux 5.4 またはそれ以降のバージョンであれば 利用できます

Windows

SUSE では virtio ベースの Windows 向けドライバを開発していて、 これらは Virtual Machine Driver Pack (仮想マシンドライバパック; VMDP) として利用できます。詳しくは http://www.suse.com/products/vmdriverpack/ をお読みください。

1.3. kvm パッケージ

kvm パッケージには、 VM ゲスト 向けに I/O エミュレーションを行なうことのできるプログラム qemu-kvm が提供されています。 qemu-kvm プログラムに 加え、 kvm パッケージには デバッグレベルの監視ユーティリティ (kvm_stat) や ファームウエアコンポーネント、キーマッピングファイルやスクリプトが含まれて います。 そのほか、古い擬似仮想化向け Windows ドライバ (/usr/share/qemu-kvm/win-virtio-drivers.iso) が含まれています。

元々は kvm パッケージで KVM のカーネルモジュールも提供していましたが、これらのモジュールはカーネル内に 同梱されるようになったため、 kvm パッケージではユーザスペース側のコンポーネントのみを提供するようになっています。

また、 VM ゲスト を管理するにあたっては libvirt ベースのツールを使用する のがお勧めです。これは、他の仮想化ツールとの相互運用性がテストされていて、 こちらのツールを使用することが SUSE でのサポートからも推奨されている ためです。各種のツールは、そのツールと同名のパッケージで提供されています。

  • libvirt: VM ゲスト や仮想ネットワーク、仮想ストレージなどを管理する ツールキット。 libvirt は API のほか、デーモンやシェル (virsh) を提供しています。

  • virt-manager (Virtual Machine Manager): VM ゲスト 向けのグラフィカルな 管理ツールです。

  • vm-install: VM ゲスト を設定し、オペレーティング システムをインストールするツールです。

  • virt-viewer: VM ゲスト 向けの X ビューアクライアント です。 x509 証明書による TLS/SSL 暗号化に対応するほか、 SASL 認証にも 対応しています。

ファイルベースのディスクイメージを作成したり取り扱ったりするには、 qemu-img をお使いください。 qemu-imgvirt-utils パッケージで 提供されています。

1.4. KVM のインストール

KVM は既定ではインストールされていません。 KVM とすべての仮想化ツールを インストールするには、下記の手順で作業を行なってください:

  1. YaST を起動し、 仮想化+ハイパーバイザとツールのインストール を選択します。

  2. KVM を選択して 了解 を押します。

  3. インストールされるパッケージが表示されますので、内容を確認して インストール を押します。

  4. 次に はい を押してネットワークブリッジの設定を行ないます。 ブリッジ設定は VM ホストサーバ (仮想マシンのホスト) 上で推奨される設定です。 異なるネットワーク設定を手作業で行ないたい場合は、 いいえ を押して手順を飛ばすことができます。

  5. 設定作業が完了すると、 YaST はマシンの再起動を求めます。再起動を 行なう代わりに、カーネルモジュールを手作業で読み込んで libvirtd を起動することもできます:

    modprobe kvm-intel # on Intel machines only
    modprobe kvm-amd   # AMD マシンの場合
    modprobe vhost-net
    rclibvirtd start
[Note]vhost-net カーネルモジュールについて

vhost-net カーネルモジュールは、ゲストに対してより効率的なネットワーク転送 機能を提供します。これは qemu-kvm を読み込んだり利用したり した際に、ネットワークオプションに ,vhost=on を追記すれば libvirt で自動的に使用します。


openSUSE KVM を利用した仮想化 13.1