Xen PV、Xen KVM、HVMの違いは?


53

プロバイダーはXenでオーバーセルできないため、Xenは通常OpenVZよりも優れていることを知っています。しかし、違いは何ですかXen PVXen KVMHVM(私はこのプロバイダの通過つもりだったスペック 1は、どのような目的や理由のために優れていますか?


編集:

Webサイトをホストするだけのエンドユーザーにとって、どちらが良いですか?効率または他の観点から、一方が他方より優れている点はありますか?

回答:


47

Xenがサポートする仮想化タイプ

Xenは、2種類のゲストの実行をサポートしています。Xenゲストは、多くの場合domU(非特権ドメイン)と呼ばれます。両方のゲストタイプ(PV、HVM)を単一のXenシステムで同時に使用できます。

Xen準仮想化(PV)

準仮想化は、Xenによって導入された効率的で軽量な仮想化手法であり、後に他の仮想化ソリューションでも採用されています。準仮想化には、ホストCPUからの仮想化拡張機能は必要ありません。ただし、準仮想化ゲストには、Xenでネイティブに実行するように移植された特別なカーネルが必要です。そのため、ゲストはハイパーバイザーを認識し、エミュレーションまたは仮想エミュレートハードウェアなしで効率的に実行できます。Linux、NetBSD、FreeBSD、OpenSolaris、およびNovell Netwareオペレーティングシステム用のXen PVゲストカーネルが存在します。

PVゲストには仮想エミュレートハードウェアはありませんが、ゲストpvfb(準仮想フレームバッファー)を使用してグラフィカルコンソールを使用できます。PVゲストグラフィカルコンソールは、VNCクライアントまたはRedhatのvirt-viewerを使用して表示できます。各ゲストのPVFBに対して、dom0に個別のVNCサーバーがあります。

Linux 2.6.24以降のアップストリームkernel.org Linuxカーネルには、Linux pvopsフレームワークに基づくXen PVゲスト(domU)サポートが含まれているため、すべてのアップストリームLinuxカーネルは、追加のパッチや変更なしで自動的にXen PVゲストカーネルとして使用できます。

Linux pvops Xenサポートの詳細については、XenParavirtOps wikiページを参照してください。

Xen完全仮想化(HVM)

完全に仮想化された別名HVM(ハードウェア仮想マシン)ゲストには、ホストCPU(Intel VT、AMD-V)からのCPU仮想化拡張機能が必要です。Xenは、Qemuの修正バージョンを使用して、HVMゲスト用のBIOS、IDEディスクコントローラー、VGAグラフィックアダプター、USBコントローラー、ネットワークアダプターなどの完全なPCハードウェアをエミュレートします。CPU仮想化拡張機能は、エミュレーションのパフォーマンスを向上させるために使用されます。完全に仮想化されたゲストは特別なカーネルを必要としないため、たとえばWindowsオペレーティングシステムをXen HVMゲストとして使用できます。通常、完全仮想化ゲストは、必要なエミュレーションのため、準仮想化ゲストよりも低速です。

パフォーマンスを向上させるために、完全仮想化HVMゲストは特別な準仮想デバイスドライバーを使用して、ディスクおよびネットワークIOのエミュレーションをバイパスできます。Xen Windows HVMゲストは、オープンソースのGPLPVドライバーを使用できます。Linux HVMゲスト用のXen PV-on-HVMドライバーの詳細については、XenLinuxPVonHVMdrivers wikiページを参照してください。

これはhttp://wiki.xenproject.org/wiki/XenOverviewからです

KVMはまったくXenではなく、別のテクノロジーです。KVMはLinuxネイティブカーネルモジュールであり、Xenのような追加のカーネルではありません。これにより、KVMの設計が改善されます。ここでの欠点は、KVMがXenよりも新しいため、一部の機能が欠けている可能性があることです。


9
+1 KVMはXenではありません。KVMの方が優れた設計であることにはまったく異論があります。Xenはより優れた分離を提供し、Linuxカーネルに依存せず、潜在的な脆弱性があります。
アントワーヌ・ベンケモン

2
情報をありがとう!私はすべてを理解できませんでした。エンドユーザーの観点から、誰がWebサイトをホストするのでしょうか。一方に他方の大きな利点はありますか?

2
Xenには独自の脆弱性があります。しかし、2つのカーネルとOSをブートストラップ実行すると、設計上の欠陥、あなたがそれを行う方法もかかわらずである
dyasny

1
JP19:それはウェブサイトに依存します。VPSの負荷を定義できる場合は、ここに問い合わせるか、googleで最適なソリューションを見つけることができます。
dyasny

2
Xenはハイパーバイザーであり、KVMも同様です。KVMにはPVデバイスがあり、時間とともにさらに追加され、PCIパススルーも可能になります。だから、私はあなたの議論のポイントを見ていない、ニルス
-dyasny

32

Xen メタル(PC /サーバー)上で実行され、ドメインと呼ばれる仮想マシンをホストするハイパーバイザーです。

Xen PVドメインは、準仮想化ドメイン手段のオペレーティング・システム(通常は我々がここでのLinuxを話している)Xenの下で実行するように変更されたこと、そして実際にエミュレートハードウェアの必要はありません。これ、パフォーマンスに関して最も効率的な方法です。

Xen HVMドメインは、ハードウェアエミュレートされ、オペレーティング・システムが何らかの方法で変更されていないと、ハードウェアをエミュレートされます(何のLinux、Windowsの、することができる)ことを意味し、ドメイン。これはかなり遅いため、通常、重要なハードウェア(通常はディスクとネットワーク)のゲストOSにPVドライバーをインストールするため、ゲスト全体は完全に仮想化されて実行されますが、パフォーマンスが最も重要なハードウェアは準仮想化されて実行されます。最近のLinuxシステムでは、カーネルにディスクとネットワークの両方のpvドライバーがあり、Windows用のさまざまなPVドライバーも存在します。近年のHVMでのすべての開発では、通常、標準ワークロードの場合、HVMとPVのパフォーマンスの差はほとんどありません。

KVMXenではなく、Linuxカーネル内に構築された別の仮想化プラットフォームです。ゲストゲストは、完全に仮想化され実行され、いくつかの部分は(再び、ディスクおよびネットワーク)を準仮想化を実行するための特定のドライバがあります:ビューのポイント、それは、Xen HVMに似ています。

Xen HVMとLinux KVMの両方にハードウェア支援仮想化サポート(Intel VT-x、AMD AMD-V)が必要ですが、Xen PVはPVサポートなしではオペレーティングシステムを実行できません(WindowsはXen PVで実行できません)。

Xen HVMとLinux KVMはどちらもqemu仮想化ソフトウェアの一部を使用して、ゲストシステムでPVドライバーを使用していないデバイスの実際のハードウェアをエミュレートします。

Xen(PVとHVMの両方)は、実行中のゲストをある物理サーバーから別のサーバーにライブマイグレーションできます。KVMでもできるかどうかはわかりません。

XenとKVMはどちらもメモリをオーバーコミットできないため、通常は「真のRAM」を取得しますが、VMwareなどの他のプラットフォームはゲストRAMの一部をディスクにスワップできます。

違いはありますが、通常は特定のインストールに適用され、他の人に販売される汎用の仮想プライベートサーバーには適用されません。たとえば、最近のXenハイパーバイザーは、ゲストがサポートしている場合(Linuxカーネル> = 3.something)にメモリ使用率とゲストのパフォーマンスを改善できる超越メモリをサポートしています。

これらのテクノロジーはすべて、正しく実装されていれば素晴らしい経験となり、あなたの観点から大きな違いはありません。もちろん、物事がうまくいかない可能性のある千の方法がありますが、それは特定の仮想化ソリューションとは関係ありません(つまり、ゲストを低速のディスクに保存するとパフォーマンスが低下します)。


3
KVMはメモリをオーバーコミットでき、Xenもオーバーコミットできます。
dyasny

@dyasny KVMについては知りませんが、実際の意味でXenはメモリをオーバーコミットできないと確信しています(異なる最大サイズを許可することは別のことです)。信頼できる場合は、ソースをリンクしてください。
ルーク404

Xenはバルーニングをサポートしています。これに標準スワッピングを追加すると、少なくとも2つのオーバーコミットメカニズムが既にあります。これは2008年と同じくらい古いです:blog.xen.org/index.php/2008/08/27/...
dyasny

3
@dyasnyは、おそらくオーバーコミットがより高い最大値を許可することだと考えています。知る限り、受け入れられている意味は、ホストに物理的に存在するよりも多くのメモリを実際にゲストに割り当てることであり、これはXenには実装されていません。ホストに使用可能な物理メモリがない場合、ゲストバルーンを収縮させることはできません(たとえば、メモリを追加します)。すべてのホストメモリを既に割り当てている場合、新しいゲストを開始することはできません(膨張させない限り)ゲストバルーンを実行し、割り当てられたメモリを実際に減らして、何もオーバーコミットしないようにします)。
ルーク404

1
オーバーコミットについては、ホストが物理的に持っている以上のものを許可するだけでなく、実際にホストが持っている以上のものを実際に使用するものとして考えます。スワッピングは恐ろしいですが、プロセスであろうとVMであろうと、ホスト上で物理的に持っているよりも多くのメモリページを割り当てることができるメカニズムです-問題ではありません。これは、これに関するセマンティクスについて説明する限りです。
dyasny
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.