LinuxコンテナーとLinuxハイパーバイザーとは何ですか?


10

私はstackexchangeサイトを見ましたが、何も見つかりませんでした。Linuxコンテナhttps://en.wikipedia.org/wiki/LXCとハイパーバイザーhttps://en.wikipedia.org/wiki/Hypervisorのwikipediaエントリを確認しましたが、両方に対する説明は、どちらにも取り組んでいないことがわかります。http://www.linux.com/news/enterprise/cloud-computing/785769-containers-vs-hypervisors-the-battle-has-just-begunも見ましたが、それでも説明がありません。

virtualboxなどのVMで遊んだことがあります。私の限られた理解への最初のアイデアの1つは、仮想マシンに関するものであったかもしれませんが、おそらくサンドボックス環境でソフトウェアをテストすることでした(マシンを購入する/購入する余裕がないときにSolarisボックスを持ち、ソフトウェアをどのように開発しているのかまだわかっているそのターゲットハードウェアは機能しています。)制限されている間、それを使用していました。これはおそらく、クラウドコンピューティングも飛躍的に進歩させた方法の1つです。質問は幅広いので、これが私がそれを蒸留する方法です-

一部の人々は、ハイパーバイザーと* nixコンテナーが何であるかを説明できますか?
* nixハイパーバイザーは仮想マシンと同じですか、それとも違いがありますか?

回答:


9

仮想マシン(VM)は、多くの仮想化技術のための非常に一般的な用語です。

仮想化テクノロジーには多くのバリエーションがありますが、主なものは次のとおりです。

  • ハードウェアレベルの仮想化
  • オペレーティングシステムレベルの仮想化

qemu-kvmVMWare最初の例です。ハイパーバイザーを使用して、完全なオペレーティングシステムが実行される仮想環境を管理します。たとえば、qemu-kvmシステムでは、1つのVMでFreeBSD、別のVMでWindows、別のVMでLinuxを実行できます。

これらのテクノロジーによって作成された仮想マシンは、ゲストに対して隔離された個々のコンピューターのように動作します。これらには、ゲストが本物の記事であると信じている仮想CPU、RAM、NIC、グラフィックスなどがあります。このため、VMにはさまざまなオペレーティングシステムをインストールでき、変更を加えることなく「そのまま」動作します。

これは非常に便利ですが、多くのOSは簡単にインストールできますが、ハイパーバイザーがすべてのハードウェアをシミュレートする必要があるため、速度が低下する可能性があるという欠点があります。代替手段は、準仮想化ハードウェアであり、仮想環境でのパフォーマンスを目的として設計されたゲスト用に新しい仮想デバイスとドライバーが開発されます。 このためのデバイスとドライバーの範囲をqemu-kvm提供しvirtioます。これの欠点は、ゲストOSをサポートする必要があることです。ただし、サポートされている場合、パフォーマンス上のメリットは非常に大きくなります。


lxcオペレーティングシステムレベルの仮想化またはコンテナの例です。このシステムでは、1つのカーネル(ホストカーネル)のみがインストールされています。各コンテナーは、単にユーザーランドプロセスの分離です。たとえば、Webサーバー(たとえばapache)がコンテナにインストールされています。そのWebサーバーに関する限り、インストールされているサーバーはそれ自体です。別のコンテナがFTPサーバーを実行している可能性があります。そのFTPサーバーは、Webサーバーのインストールを認識していません-それだけがインストールされています。別のコンテナーには、Linuxディストリビューションの完全なユーザーランドインストールを含めることができます(そのディストリビューションがホストシステムのカーネルで実行できる限り)。

ただし、コンテナを使用する場合、個別のオペレーティングシステムのインストールはありません。ユーザーランドサービスの分離されたインスタンスのみです。このため、コンテナに異なるプラットフォームをインストールすることはできません-Linux上のWindowsはインストールできません。

コンテナは通常、を使用して作成されchrootます。これにより、/プロセスで使用する個別のプライベートルート()が作成されます。多くの個別のプライベートルートを作成することにより、プロセス(Webサーバー、またはLinuxディストリビューションなど)は、独自の分離されたファイルシステムで実行されます。などのより高度な手法では、cgroupsネットワークやRAMなどの他のリソースを分離できます。


どちらにも長所と短所があり、どちらが最善であるかについて、長期にわたる多くの議論があります。

  • コンテナは軽量で、それぞれに完全なOSがインストールされていません。これはハイパーバイザーの場合です。したがって、それらは低スペックのハードウェアで実行できます。ただし、Linuxゲスト(Linuxホスト上)のみを実行できます。また、カーネルを共有しているため、侵害されたコンテナが別のコンテナに影響を与える可能性があります。
  • ハイパーバイザはより安全であり、フルOSが各VMにインストールされ、ゲストは他のVMを認識しないため、異なるOSを実行できます。ただし、これはホストでより多くのリソースを利用するため、比較的強力でなければなりません。

2

コンテナーは、ユーザー空間のより完全な分離を実現することを除いて、chroot環境に少し似ています。実際のVMではなく、仮想オペレーティングシステムを提供します。VMは複数のマシンのような錯覚を引き起こし、その内部で実際の完全なオペレーティングシステムがベアメタル上であるかのように実行できます。ここでの「完全なオペレーティングシステム」には、カーネルが含まれます。一部のVM(QEMUなど)では、さまざまな種類の「ベアメタル」アーキテクチャを刺激することもできます。

代わりに、コンテナは、それぞれが完全なユーザーランドを実行している複数のカーネルのような錯覚を作り出します。たとえば、Debianを1つのコンテナーで実行し、Archを別のコンテナーで実行すると、コンテナー内からの視点はVMとほとんど同じになります。ただし、実行できるのは、1つの実際のカーネル(この場合はLinux)と互換性のあるOSユーザーランドのみです。これは、独立したカーネルを実行できるため、あらゆる種類のオペレーティングシステムを実行できる実際のVMとは異なります。

そのため、真のVMは、コンテナよりもリソースの点で高価です。VMごとに異なるカーネルが必要ない場合は、コンテナーを使用することもできます。

VPSベンダーによって広く使用されているopenVZなどのLXEと同様のことを行う他の仮想化システムがあります。openVZ VPSは、ホストOSのカーネルを使用する独立したユーザーランドです。これが、そのようなVPSがLinuxフレーバーの束で提供される理由です。それらはホストカーネルと互換性がなければなりません。

OpenVZおよびLXCスタイルの仮想化は、オペレーティングシステムレベルの仮想化と呼ばれます

ハイパーバイザはのような仮想マシン、管理するシステムであるVirtualBoxの、QEMU、またはXenのを。Xenなどの一部のハイパーバイザーはベアメタルで実行され、ホストOSを必要としません(ただし、ホストOSが制御インターフェイスとして機能する必要がある場合があります)。VirtualBoxやQEMUなど、その他はホストOS内で実行されます。QEMUなどの一部では、さまざまなマシンアーキテクチャのシミュレーションが可能です。VirtualBoxなどの他のものはそうしません(つまり、VMアーキテクチャは常に実際のホストと同じです)。実際のVMがコンテナーより多くのリソースを必要とするのと同じように、アーキテクチャのシミュレーションにはより多くのリソースが必要です。

ハイパーバイザースタイルの仮想化は、プラットフォームレベルの仮想化と呼ばれます

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.