KVM (Kernel-based Virtual Machine) はIntel VT or AMD-Vなどの仮想化支援機能を持つx86ハードウェア上のLinuxのための完全仮想化(full virtualization)のソリューションです。KVMにより、複数の仮想マシンを実行してLinuxやWindowsを実行できるようになり、それぞれの仮想マシンは、ネットワークカード、ディスク、グラフィックアダプターなどの仮想ハードウェアを持ちます。
コアの仮想化インフラを提供するカーネルモジュールkvm.koとプロセッサ特有のkvm-intel.koまたはkvm-amd.koで構成されます。
KVMはLinuxのメインラインのソースコードに含まれており、オープンソースのソフトウェアです。
* 以下はKVMコミュニティのFAQを、一部日本向けに表現を加筆修正して翻訳しております。
ハードウェアとしてはIntel VT(Virtualization Technology)またはAMD-Vなどの仮想化機能をサポートするプロセッサを搭載したx86アーキテクチャのコンピュータが必要です。ソフトウェ アはRed Hat Enterprise Linux 5.4降の、KVMをサポートする最近のLinuxが必要です。
はい。現在のところ、Red Hat Enterprise Linux のKVMはIA-32アーキテクチャの64bit環境だけで提供しています。ゲストOSは32bitおよび64bit環境の両方をサポートしています。
Intel VTやAMD-Vは仮想化ソフトウェアに対して、プロセッサレベルでハードウェアによる支援を提供するための拡張命令セットです。これにより、仮想マシン上で、(処理によっては)ネイティブなハードウェアに劣らない性能を実現できます。
最近のLinuxカーネルであれば、以下のコマンドを実行してください。
$ egrep '^flags.*(vmx|svm)' /proc/cpuinfoこのコマンドの実行結果、何かが表示されたら、VTやAMD-Vがサポートされているはずです。また、プロセッサモデル名に関しては/proc/cpuinfoの実行結果をベンダのWebサイトと照らしあわせてください。
"KVM: disabled by BIOS" というエラーが表示された場合は、有効にするためのBIOS設定オプションを確認してください。もし設定できないようであれば最新のBIOSについて製造メーカにご確認ください。
KVMは少し修正を加えたQEMUによって仮想マシンのインスタンスを生成します。実行された仮想マシンは従来のLinux上のプロセスです。top, kill, taskset などのコマンドを仮想マシン管理のために使えます。
Red Hat Enterprise LinuxのKVMはrawイメージ、ネイティブQEMUフォーマット(qcow2)をサポートします。
はい。libvirtによりXenと同様に管理することができます。具体的にはvirsh およびVirtualization Managerにより管理が可能です。
ゲストOSの視点からは、それは電源コードを抜くのと同じです。ホストの視点からは、プロセスがkillされて全てのリソースが開放されます。
Red Hat Enterprise Linux 5.4の設定は以下を参考にしてください。
http://www.redhat.com/docs/en-US/Red_Hat_Enterprise_Linux/5.4/html/Virtualization_Guide/chap-Virtualization-Network_Configuration.html
またKVMのwikiのHowtoのページのNetwork related-Setting guest networkのリンクを参考にしてください。
http://www.linux-kvm.org/page/HOWTO
また、QEMUのドキュメンテーションも参考になるでしょう。
ほとんどのユーザビリティの問題は、QEMU のマニュアルでカバーされています。
またRed Hat Enterprise Linux 5.4 のKVMに関する情報はVirtualization Guideを参照ください。
http://www.redhat.com/docs/en-US/Red_Hat_Enterprise_Linux/5.4/html/Virtualization_Guide/index.html
RealVNC / xvnc4viewerなどのVNCクライアントがZRLEエンコーディングを選択しているときにこの問題が起きる可能性があります。VNCクライアントのオプションでHextileのエンコーディングを選択すれば、問題が解決するはずです。
ネットワークの設定については、Virtualization Guideで解説しておりますのでそちらを参照ください。
http://www.redhat.com/docs/en-US/Red_Hat_Enterprise_Linux/5.4/html/Virtualization_Guide/chap-Virtualization-Network_Configuration.html
Intel VTもAMD-Vも、ソフトウェアが現在のハードウェア仮想化の拡張機能を使用するかを判断するためのメカニズムを提供します。これにより、ロードされた 2つのカーネルモジュールがハードウェア仮想化の拡張機能使用しようとすると問題が発生します。もしも他のタイプの仮想化ソフトウェアを使ってKVMで問 題が起きる場合、バグとして報告する前に他のソフトウェアのカーネルモジュールなしでその問題を間違いなく再現できることを確認してください。
XenはOSの外部にあるハイパーバイザーとしてマシンの制御と ゲストOS間のリソース分割を行います。一方、KVMは、Linuxの一部であり、スケジューラとメモリ管理をLinuxが行います。したがって、はるか に小さく使いかたもシンプルです。また機能が豊富です。例えばKVMはメモリーを開放するためにゲストOSをディスクにスワップすることが可能です。
KVMはハードウェアの仮想化支援機能があるx86プロセッサでのみ動作しますが、Xenはparavirtualizationにより仮想化 支援機能のないx86プロセッサ上で修正されたOSを実行可能です。KVMはCPUのparavirtualizationをサポートしませんが、I/O パフォーマンスを向上させるためにデバイスドライバのparavirtualizationをサポートします。
VMwareはプロプライエタリな独自製品です。一方、KVMはGPLのもとにリリースされるオープンソースのソフトウェアです。
QEMUはプロセッサをエミュレーションします。KVMはプロセッサの拡張機能を仮想化のために使います。
いいえ。
ゲストOSを快適に実行できる十分なメモリーが必要です。ホストOSとしては1GB程度は必要になるでしょう。
はい。もし-m 6144と設定した場合、ゲストは必要に応じて最大6GBのメモリーを使います。(ただし、プラットフォームの制限があり、32ビットのゲストは、PAEを使用しないと4GB以上のメモリーを使えません。)
Red Hat Enterprise Linux 5.4のKVMのサポートOSは以下を参照してください。
http://www.redhat.com/docs/en-US/Red_Hat_Enterprise_Linux/5.4/html/Virtualization_Guide/chap-Virtualization-KVM_Restrictions_and_support.html
はい。
Red Hat Enterrise Linux 5.4のライブマイグレーションは以下を参考にしてください。
http://www.redhat.com/docs/en-US/Red_Hat_Enterprise_Linux/5.4/html/Virtualization_Guide/chap-Virtualization-KVM_live_migration.html
KVMは64ビットホスト上で32ビットゲストの実行をサポートし、PAEを使うゲストとPAEと使わないゲスト、ホストの組み合わせを使えます。
はい。USBデバイスを直接ゲストOSに割り当てて使用することが可能です。
はい。
はい。
いいえ。