概要
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://ark.intel.com/Products/VirtualizationTechnology (Intel CPU 向け) http://products.amd.com/ (AMD CPU 向け).
KVM のカーネルモジュールは、お使いの CPU がハードウエア仮想化に対応して いない場合や、 BIOS でハードウエア仮想化機能を有効に設定していない場合には、 読み込みが行なわれません。 |
VM ホストサーバ を利用するにあたって、最小限となるハードウエア要件は openSUSE と同じです 。 に示されている概要と同じです。しかしながら、 それぞれの仮想化ゲストに対して、少なくとも物理的な (仮想化を伴わない) インストールと同じだけの RAM を割り当ててください。また、それぞれの仮想化 ゲストに対して、 1 つ以上のプロセッサコアまたはハイパースレッドを割り当てて おことを強くお勧めします。
下記の表には、テスト済みのゲスト側オペレーティングシステムと、それらの 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 ドライバ: |
提供されていません | |||
サポート状態: |
完全サポート | |||
必須起動パラメータ: |
| |||
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 の各ドライバの使用を推奨します | |||
サポート状態: |
現状ありのまま |
SUSE Linux Enterprise Server 11 SP1 で作成されたゲストイメージには対応していますが、それ以前の SUSE Linux Enterprise で作成されたものには対応していません。 |
仮想化を利用する際、ゲスト側のオペレーティングシステムの性能を向上させる 目的で、擬似仮想化ドライバが提供されている場合があります。これらは必須と いうわけではありませんが、ご利用になることを強くお勧めします。 擬似仮想化ドライバは下記のとおりに提供されています:
カーネル内に同梱
カーネルに同梱
用意されていません
RedHat Enterprise Linux 5.4 またはそれ以降のバージョンであれば 利用できます
SUSE では virtio ベースの Windows 向けドライバを開発していて、 これらは Virtual Machine Driver Pack (仮想マシンドライバパック; VMDP) として利用できます。詳しくは http://www.suse.com/products/vmdriverpack/ をお読みください。
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-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 カーネルモジュールについて | |
---|---|
vhost-net カーネルモジュールは、ゲストに対してより効率的なネットワーク転送
機能を提供します。これは qemu-kvm を読み込んだり利用したり
した際に、ネットワークオプションに |