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 固有のプログラムで、コマンドライン
インターフェイスのみを提供しています。
現時点では 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
![]() | |
KVM のカーネルモジュールは、お使いの CPU がハードウエア仮想化に対応して いない場合や、 BIOS でハードウエア仮想化機能を有効に設定していない場合には、 読み込みが行なわれません。 | |
VM ホストサーバ を利用するにあたって、最小限となるハードウエア要件は openSUSE と同じです 。 に示されている概要と同じです。しかしながら、 それぞれの仮想化ゲストに対して、少なくとも物理的な (仮想化を伴わない) インストールと同じだけの RAM を割り当ててください。また、それぞれの仮想化 ゲストに対して、 1 つ以上のプロセッサコアまたはハイパースレッドを割り当てて おことを強くお勧めします。
下記の表には、テスト済みのゲスト側オペレーティングシステムと、それらの 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 | ||
|
サポート状態: |
完全サポート (完全な仮想化に対応) | |
|
注意: |
| |
|
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 の各ドライバの使用を推奨します | |
|
サポート状態: |
現状ありのまま (完全な仮想化に対応) | |
![]() | |
SUSE Linux Enterprise Server 11 SP1 で作成されたゲストイメージには対応して いますが、それ以前の SUSE Linux Enterprise で作成されたものには対応していません。 | |
仮想化を利用する際、ゲスト側のオペレーティングシステムの性能を向上させる 目的で、擬似仮想化ドライバが提供されている場合があります。これらは必須と いうわけではありませんが、ご利用になることを強くお勧めします。 擬似仮想化ドライバは下記のとおりに提供されています:
カーネル内に同梱
カーネルに同梱
用意されていません
RedHat Enterprise Linux 5.4 またはそれ以降のバージョンであれば 利用できます
SUSE では virtio ベースの Windows 向けドライバを開発していて、
これらは Virtual Machine Driver Pack (仮想マシンドライバパック; VMDP)
として利用できます。これらのドライバは
/usr/share/qemu-kvm/win-virtio-drivers.iso で提供
されているものより、優先してお使いになるとよいでしょう (iso で提供
されているドライバは古いものであり、将来のリリースでは含まれなくなる
場合があります) 。詳しくは http://www.suse.com/products/vmdriverpack/
をお読みください。
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-img
は virt-utils パッケージで
提供されています。
KVM は既定ではインストールされていません。 KVM とすべての仮想化ツールを インストールするには、下記の手順で作業を行なってください:
YaST を起動し、 + を選択します。
を選択して を押します。
インストールされるパッケージが表示されますので、内容を確認して を押します。
次に を押してネットワークブリッジの設定を行ないます。 ブリッジ設定は VM ホストサーバ (仮想マシンのホスト) 上で推奨される設定です。 異なるネットワーク設定を手作業で行ないたい場合は、 を押して手順を飛ばすことができます。
設定作業が完了すると、 YaST はマシンの再起動を求めます。再起動を
行なう代わりに、カーネルモジュールを手作業で読み込んで libvirtd
を起動することもできます:
modprobe kvm-intel # on Intel machines only modprobe kvm-amd # AMD マシンの場合 modprobe vhost-net rclibvirtd start
![]() | vhost-net カーネルモジュールについて |
|---|---|
vost-net カーネルモジュールは、ゲストに対してより効率的なネットワーク転送
機能を提供します。これは qemu-kvm を読み込んだり利用したり
した際に、ネットワークオプションに | |