第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://wiki.xensource.com/xenwiki/HVM_Compatible_Processors

[Note]

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

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

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

下記の表には、テスト済みのゲスト側オペレーティングシステムと、それらの SUSE におけるサポート状態を示しています。下記にあるすべてのオペレーティング システムは、 x86 の 32 ビットおよび 64 ビットの両方に対応しています。 それ以外の対応 OS (SUSE ではテストを実施していない もの) については、 http://www.linux-kvm.org/page/Guest_Support_Status をお読みください。

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

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

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

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

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

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

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

openSUSE 11.2 またはそれ以降

PV ドライバ:

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

サポート状態:

完全サポート (完全な仮想化に対応)

SLES 11 SP2 / SLES 11 SP1 / SLES 10 SP4

PV ドライバ:

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

サポート状態:

完全サポート (完全な仮想化に対応)

SLES 9 SP4

サポート状態:

完全サポート (完全な仮想化に対応)

注意:

  • 32 ビット版のカーネルの場合: Linux 起動時のコマンドラインに clock=pmtmr を追加してください。

  • 64 ビット版のカーネルの場合: Linux 起動時のコマンドラインに ignore_lost_ticks を追加してください。

SLED 12.3 / SLED 11 SP1

PV ドライバ:

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

サポート状態:

技術プレビュー (完全な仮想化に対応)

OES 2 SP3 / OES 11

PV ドライバ:

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

サポート状態:

完全サポート (完全な仮想に対応)

RedHat Enterprise Linux 4.8+ / 5.5+ / 6.0+

PV ドライバ:

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

サポート状態:

現状ありのまま (完全な仮想化に対応)

注意:

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

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

PV ドライバ:

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

サポート状態:

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

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

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

カーネル内に同梱

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) として利用できます。これらのドライバは /usr/share/qemu-kvm/win-virtio-drivers.iso で提供 されているものより、優先してお使いになるとよいでしょう (iso で提供 されているドライバは古いものであり、将来のリリースでは含まれなくなる 場合があります) 。詳しくは http://www.suse.com/products/vmdriverpack/ をお読みください。

1.3. kvm パッケージ

kvm パッケージには、実際の エミュレーションを実行することのできるプログラム 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 カーネルモジュールについて

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


openSUSE KVM を利用した仮想化 12.3