仮想化されたマシンは物理的な (仮想化をしていない) マシンのように振る舞い ますが、いくつかの制限事項があります。これらは VM ホストサーバ 側のシステムに 当てはまるものがあるほか、 VM ゲスト 側にも当てはまるものがあります。
KVM を利用するにあたって、一般的な制限事項は下記の通りです:
KVM ではメモリとディスク領域の両方に対してオーバーコミットを許可して います。これが何を意味するのかは利用形態によって変わりますが、 利用可能なリソースを超過することによって発生するハードウエアエラーは、 ゲスト側のエラーにもつながります。また CPU のオーバーコミットにも 対応していますが、性能面で問題を引き起こす可能性があります。
多くのゲストでは、時刻を正確に維持するのに追加のサポートを必要とします。
利用可能であれば、 kvm-clock
を使用してください。
それ以外にも NTP やその他のネットワークベースの時刻同期プロトコルを利用し、
安定した時刻を維持することを強くお勧めします (VM ホストサーバ と VM ゲスト の
両方に対して) 。ゲスト内での NTP は、 kvm-clock
を利用している場合には推奨されません。詳しくは 8.7項 「時計の設定」
をお読みください。
NIC に対して MAC アドレスを指定しない場合は、既定の MAC アドレスが割り当て られます。この場合、複数の NIC が同じ MAC アドレスになってしまい、 ネットワーク問題を引き起こすことが考えられます。それぞれの NIC に対して ユニークな MAC アドレスを割り当てることをお勧めします。
ライブマイグレーション機能は同じ機能の CPU を利用した VM ホストサーバ 間のみで
実現することができます。また、マイグレーションに対応する CPU モデルは、
-cpu qemu64
(既定値) のみであり、他の追加機能が有効化
されていない場合のみであることにも注意が必要です。さらに、物理デバイスを
ホストからゲストに渡すこともできません。ゲスト側のストレージは両方の
VM ホストサーバ からアクセスできなければならないほか、ゲストの定義がそれぞれ
互換性のあるものでもなければなりません。また、 VM ホストサーバ と VM ゲスト の
間では、適切な時刻維持機能が必要です。 AHCI インターフェイス
(virtfs
インターフェイス) を使用する場合や、
-mem-path
コマンドラインオプションもマイグレーション
には不適切です。 SP3 から SP2 もしくは SP1 でホスティングされた環境にも
移行することはできません。
管理ツール (Virtual Machine Manager, virsh, vm-install)
は libvirt
に対して認証を行なう必要があります (詳しくは
第6章 接続と権限 をお読みください) 。
また、 qemu-kvm をコマンドラインから実行するには、
ユーザが kvm
のメンバーで
なければなりません。
ゲストが稼働中の場合、 VM ホストサーバ システムのサスペンドやハイバネートには 対応していません。
ゲストに対する仮想的なハードウエア制限が確認されています。ただし、以下の ような制限に到達しても、最新のリリース以降であれば、ホストと VM のインストールと 動作の問題はありませんし、大幅な性能劣化 (CPU, メモリ, ディスク, ネットワーク) もありません。
ゲスト側の最大 RAM サイズ |
512 GB |
ゲスト 1 つあたりの最大仮想 CPU 数 |
64 |
ゲスト 1 つあたりの最大仮想ネットワークデバイス数 |
8 |
ゲスト 1 つあたりの最大ブロックデバイス数 |
エミュレーションで 4 個 (IDE) 、擬似仮想化
で 20 個 ( |
VM ホストサーバ 1 台あたりの最大 VM ゲスト 数 |
全てのゲストに割り当てた仮想 CPU 数の合計が、ホスト側の CPU コア数の 8 倍を超えない範囲 |
基本的には物理的な (仮想化を伴わない) インストール向けの作業はそのまま 仮想化することができるため、新しい仮想化技術の利点はそのまま享受できる ことになります。しかしながら、仮想化を利用することで、それなりに性能に 影響することがあります。そのため、 CPU や I/O に対して考えられる最大限の 仕事量を与えて、仮想化に耐えられるかどうかをお確かめください。様々な 要件に適合するかどうか、広範囲な仮想化ソリューションを利用して確認は 行なわれていますが、場合によっては KVM での仮想化に適さない作業である ことがありうるためです。
このことから、下記の通りガイドラインとしてゲスト側の性能予想を示して います。下記の表でのパーセント値は、非仮想化時と同じ仕事量を与えた場合に どれだけの性能を達成できるのかを示した値です。なお、下記の値はおおよその 値であり、性能が保証されるものではありません。
分類 |
完全仮想化 |
擬似仮想化 |
ホスト側でのパススルー | ||
---|---|---|---|---|---|
CPU, MMU |
7% |
該当せず |
| ||
ネットワーク I/O (1GB LAN) |
60% (e1000 エミュレーションの NIC の場合) |
75% ( |
95% | ||
ディスク I/O |
40% (IDE エミュレーションの場合) |
85% ( |
95% | ||
Graphics (アクセラレーション無効の場合) |
50% (VGA または Cirrus) |
該当せず |
該当せず | ||
時刻の正確さ (NTP を利用しない推奨設定の場合の最悪ケース) |
95% - 105% (100% を正確とした値) |
100% ( |
該当せず |