市場には多数の仮想マシンソフトウェアがあります。一部はメインラインLinuxにも含まれています。
それらはどのように異なり、選択する際にどの基準を考慮する必要がありますか?
答え1
VirtualBox(別名xVM)やVMWareなどのより専門的なツールは、マルチスナップショットと「シーン」レプリケーションをサポートします。
VMWareには、一部の制限付き3Dアクセラレーション、Eclipseデバッグとの統合(VMの外部からVM内のアプリケーションをデバッグすることもできます)、仮想ネットワーキング機能、マルチモニターサポート、および記録/再生機能(並行性問題のデバッグに役立ちます)もあります。コア)とコマンドが実行された順序)。
VirtualBoxとカーネル仮想マシンはカーネルドライバをコンパイルする必要がないため、作業が簡単です。どちらも無料で、VMWareの価格は約190ドルです。 KVMは完全にオープンソースですが、VirtualBoxの一部だけがオープンソースです。
私の経験によると、さまざまな仮想化ツールのパフォーマンスはどこでもほぼ同じですが、VirtualBoxとVMWareはKVMよりもわずかに優位にあります。お客様のマイレージは、ハードウェアとシステム構成によって異なります。
最後に、サーバーグループの仮想化を検討している場合は、LinuxではなくVMWareのESXi、MicrosoftのHyperV、Xenなどのハイパーバイザーベースのオペレーティングシステムを検討してください。これは通常、より少ないオーバーヘッドでリアルタイムの移行、メモリ共有、フォールトトレランスなどの機能を提供します。ただし、通常は実行中のコンピュータでは使用できず、代わりにvSphereやSystem Centerなどのリモート管理ツールに依存します。 3つの管理プログラムはすべて無料です。ただし、VMWareのすべての優れた機能にアクセスするには3,000ドルが必要です。マイクロソフトおよびXenソリューションのすべての機能は無料製品に含まれています。 (Microsoftのソリューションは、Active Directoryがすでに展開されていないと正しく機能しません。)
答え2
一般人の観点から見ると、私が考慮するいくつかの明確な基準は次のとおりです。免責事項:私は仮想マシンについて何も知りません。私は少し使用経験があります。禅、仮想ボックス、Linuxコンテナ、仮想デバイスとLinux仮想サーバー。 VMwareは独自のソフトウェアであり、他のすべてはフリーソフトウェアです。これらすべてには特別なカーネルサポートが必要です。Linux Containers
メインラインカーネルでサポートされている唯一のものです。
すべてJoe Brockmeierの有用な記事仮想化には大きく2つのバリエーションがあります。 1つは、ホストオペレーティングシステムの上で本格的なゲストオペレーティングシステムを実行することです。これは…呼ばれるhypervisor virtualization
。ゲストもUnixの場合、これはゲストがホストとは異なるUnixカーネルを実行していることを意味します。どちらもLinuxでも同じディストリビューションでも同じです。 2つ目は、ゲスト仮想マシンがホストオペレーティングシステムと同じカーネルを使用することです。これは…呼ばれるcontainer-based virtualization
。以下では、hypervisors
これらを簡単に言及しますcontainers
。
上記のXen、VirtualBox、およびVMWareはhypervisors
Linux ContainersとLinux-Vserverですcontainers
。
明らかに妥協案があります。主な違いは、hypervisors
ハードウェアをサポートするすべてのオペレーティングシステムを実行できることです。つまり、Linux上でWindowsを実行できるということです。の場合、containers
ホストカーネル(ダイアグラムで実際に唯一の「オペレーティングシステム」)が分離とリソース管理を行っています。この場合、仮想マシンは人工的な構成であり、抽象化に穴がある可能性があります。つまり、仮想化が完璧ではないため、迷惑な問題が発生する可能性があります。例えば。仮想マシンのポートxでサービスを実行すると、ホストマシンのポートxで実行されているサービスが妨げられる可能性があります。
したがって、これら2つのタイプを考慮して参照しようとするいくつかの具体的な問題があります。
まず(質問に示すようにLinuxで実行していると仮定するとき)、Linuxディストリビューションを望むクライアントですか、それとも別のオペレーティングシステムですか?前者がcontainers
オプションであれば、そうでなければそうではありません。オプションであっても、ゲストオペレーティングシステムのさまざまなディストリビューションを作成するために、仮想化ソフトウェアメンテナンス担当者が提供するサポート/アクセス方法によっては、実際に実装または実装されない場合があります。 DIYに手をつけたくないならば。理論的には、これはLinuxカーネルが周囲のユーザースペースと非常に弱く結合しているため、可能な場合が多いです。したがって、ほとんどすべての「最新」カーネルはすべてのディストリビューションで実行されます。
関連ソフトウェアにカーネルパッチが必要ですか、それともカーネル自体がそれをサポートしていますか?パッチが必要な場合は、パッチが絶えず変化するカーネルに追いつく必要があるため、これは大きな欠点になります。その機能がすでにカーネルにある場合は問題になりません。もちろん、一部の仮想マシンはカーネルサポートを必要とせず、ユーザースペースで実行されます。特別なカーネルサポートが必要であり、それをメインラインカーネルが提供する仮想マシンは比較的少ないです。私が知っている唯一の2つは、Linuxコンテナ(container
)とKVM(hypervisor
)です。
ユーザーコミュニティの規模。これは主にカーネルをパッチする必要がある場合に発生する問題です。この場合、このプロジェクトをカーネルの外に維持し、すべてが正しく機能していることを確認する人員がいない可能性があります。
仮想マシンソフトウェアは独自のソフトウェアですか、それともフリーソフトウェアですか?それが排他的であれば、決してLinuxカーネルには含まれません。もちろん、哲学に応じて、イデオロギー的な理由で、どちらかが良いことを見つけることができます。
仮想化のパフォーマンス。どのくらい早く?違いは大きくないかもしれませんが、一般的にはcontainers
高速です。hypervisors
システムの他のプロセスとのメモリ共有を許可しますか、それとも専用メモリが必要ですか?私の考えでは、共有メモリを許可することは、システムの残りの部分からそのメモリを削除する必要がないことを意味するので、これは良いことです。メモリを共有できる場合は、メモリを共有できない場合よりも多くの仮想マシンを実行できます。定義によると、hypervisors
共有メモリは別々のオペレーティングシステムであるため、許可されません。通常、containers
共有メモリは同じオペレーティングシステムであるため、再び許可されますが、通常はメモリ制限も設定できます。専用メモリブロックを割り当てることも可能です。しかし、私はこれを試したことがありません。
システムの残りの部分との分離レベル。一部の仮想マシンはこの点で異なります。理想的には、仮想マシンが何らかの方法でホストシステムまたは他のゲストシステムを知ったり対話したりすることは望ましくありません。定義によると、hypervisors
これらは完全に隔離されています。分離レベルはcontainers
実装ごとに異なります。この点で、実装は非常に多様です。