web-dev-qa-db-ja.com

KVMとLXCの違い

KVMとLinux Containers(LXC))の違いは何ですか?私には、「名前空間」と「カーネルの制御グループ」機能。

38
JuliandotNut

https://access.redhat.com/site/documentation/en-US/Red_Hat_Enterprise_Linux/7-Beta/html/Resource_Management_and_Linux_Containers_Guide/sec-Linux_Containers_Compared_to_KVM_Virtualization.html からのテキスト= Copyright©2014 Red Hat、Inc。

KVM Virtualizationと比較したLinux Containers

KVM仮想化とLinux Containersの主な違いは、仮想マシンでは別個のカーネルインスタンスを実行する必要がありますが、コンテナーはホストオペレーティングシステムから展開できることです。これにより、コンテナーの複雑さが大幅に軽減されますまた、オーバーヘッドの削減により、起動とシャットダウンの速度が速い多数のコンテナを作成できます。LinuxコンテナとKVM仮想化には、それぞれのユースケースに影響する特定の利点と欠点がありますこれらの技術が通常適用されるもの:

KVM仮想化

KVM仮想化を使用すると、Linux以外のシステムであっても、さまざまな種類の完全なオペレーティングシステムを起動できます。ただし、複雑なセットアップが必要になる場合があります。仮想マシンはリソースを大量に消費するため、ホストマシンで実行できるのは限られた数だけです。

通常、個別のカーネルインスタンスを実行すると、分離とセキュリティが向上します。カーネルの1つが予期せず終了した場合、システム全体が無効になることはありません。一方、この分離により、仮想マシンがシステムの他の部分と通信することが難しくなるため、いくつかの解釈メカニズムを使用する必要があります。

ゲスト仮想マシンはホストの変更から分離されているため、ホストと仮想マシンで同じアプリケーションの異なるバージョンを実行できます。 KVMは、ライブマイグレーションなどの多くの便利な機能も提供します。これらの機能の詳細については、Red Hat Enterprise Linux 7仮想化の導入および管理ガイドを参照してください。

Linuxコンテナー:

Linux Containersの現在のバージョンは、主に1つ以上のアプリケーションの分離をサポートするように設計されており、近い将来に完全なOSコンテナーを実装する予定です。コンテナは非常に簡単に作成または破棄でき、メンテナンスが便利です。

システム全体の変更は各コンテナに表示されます。たとえば、ホストマシン上のアプリケーションをアップグレードする場合、この変更はこのアプリケーションのインスタンスを実行するすべてのサンドボックスに適用されます。

コンテナは軽量であるため、多数のコンテナをホストマシンで同時に実行できます。理論上の最大値は6000コンテナで、ルートファイルシステムディレクトリの12,000バインドマウントです。また、コンテナは作成が速く、起動時間が短いです。

ソース

31
Viswesn

[〜#〜] lxc [〜#〜]、またはLinuxコンテナは、軽量でポータブルなOSベースの仮想化ユニットであり、ベースオペレーティングシステムのカーネルを共有しますが、同時にその独立した環境として機能します独自のファイルシステム、プロセス、およびTCP/IPスタック。これらは、FreeBSDではSolaris ZonesまたはJailsと比較できます。仮想化のオーバーヘッドがないため、仮想マシンよりもはるかに優れたパフォーマンスを発揮します。

[〜#〜] kvm [〜#〜]は、独自のLinuxカーネルに組み込まれた仮想化機能を表します。前の回答ですでに述べたように、これはタイプ2のハイパーバイザーです。つまり、ベアメタル上で実行されていません。

7
Nedo

このホワイトペーパーでは、ハイパーバイザーコンテナーとLinuxコンテナーの違い、およびコンテナーの背後にあるいくつかの履歴について説明します http://sp.parallels.com/fileadmin/media/hcap/pcs/documents/ParCloudStorage_Mini_WP_EN_042014.pdf

論文からの抜粋:ハイパーバイザーは、ホストオペレーティングシステムにマシンハードウェアをエミュレートさせ、そのハードウェア上でゲストオペレーティングシステムとして他の仮想マシン(VM)を起動することで機能します。つまり、ゲストとホストのオペレーティングシステム間の通信は、ハードウェアパラダイムに従う必要があります(ハードウェアで実行できることはすべて、ホストからゲストに対して実行できます)。

一方、コンテナの仮想化(図2を参照)は、ハードウェアレベルではなく、オペレーティングシステムレベルでの仮想化です。そのため、各ゲストオペレーティングシステムはホストと同じカーネルを共有し、場合によってはオペレーティングシステムの一部を共有します。この強化された共有により、コンテナーがホストとはるかに多くの部分を共有しているという理由だけで、コンテナーがハイパーバイザーゲストよりもスリムで小さいという大きな利点が得られます。また、ゲストカーネルは、コンテナを管理対象のリソースと見なすため、コンテナ間でリソースを共有する効率がはるかに高いという大きな利点もあります。

例:コンテナ1とコンテナ2は同じファイルを開き、ホストカーネルはファイルを開き、そこからページをカーネルページキャッシュに入れます。これらのページは、必要に応じてコンテナ1とコンテナ2に渡され、両方が同じ位置を読みたい場合は、両方が同じページを取得します。 VM1とVM2が同じことを行う場合、ホストはファイルを開きます(ホストページキャッシュにページを作成します)が、VM1とVM2の各カーネルは同じことを行います。つまり、VM1とVM2が同じファイルを読み取る場合、コンテナと同じ方法でページを共有できないという理由だけで、3つの個別のページ(ホスト、VM1、VM2カーネルのページキャッシュに1つ)があります。コンテナーのこの高度な共有は、密度(システムで実行できる仮想マシンのコンテナーの数)が、ハイパーバイザーの場合と同様にコンテナーの場合で最大3倍になることを意味します。

要約:KVMは、仮想ハードウェアのエミュレートに基づくハイパーバイザーです。一方、コンテナーは共有オペレーティングシステムに基づいており、よりスキニーです。しかし、これにより、コンテナーに制限が生じます。単一の共有カーネルを使用しているため、同じ共有ハードウェアでWindowsとLinuxを実行できない

6
bhdeeps