stackexchangeのウェブサイトを確認しましたが、何も見つかりませんでした。 LinuxコンテナのWikipediaエントリを見ました。https://en.wikipedia.org/wiki/LXCとハイパーバイザーhttps://en.wikipedia.org/wiki/Hypervisorしかし、両方の説明は、どちらも働いたことがない人の理解を超えています。私も見たhttp://www.linux.com/news/enterprise/cloud-computing/785769-containers-vs-hypervisors-the-battle-has-just-begunしかし、それも説明しません。
私はvirtualboxのような仮想マシンで遊んだ。私の限られた理解によると、最初のアイデアの1つは、仮想マシンがサンドボックス環境でソフトウェアをテストするのに役立つ可能性があるということです(マシンを購入または購入できず、開発中のソフトウェアをまだ理解できない場合使用すること)。ターゲットハードウェアが動作しているためです。 )使用が制限されています。これは、クラウドコンピューティングの分野で飛躍する方法の1つでもあります。質問が広いので、これを整理する方法は次のとおりです。
ハイパーバイザーと*nixコンテナが何であるかを説明できる人はいますか(可能であれば例え)。
* nixハイパーバイザーは仮想マシンと同じですか、それとも違うのですか?
答え1
ㅏ仮想デバイス(VM)は、多くの仮想化技術を指す一般的な用語です。
仮想化技術にはさまざまなバリエーションがありますが、主な技術は次のとおりです。
- ハードウェアレベルの仮想化
- オペレーティングシステムレベルの仮想化
qemu-kvm
VMWare
最初の例です。これらはハイパーバイザーを使用して、オペレーティング・システム全体を実行する仮想環境を管理します。たとえば、あるqemu-kvm
システムにはFreeBSDを実行している仮想マシン1つ、Windowsを実行する別の仮想マシン、Linuxを実行する別の仮想マシンがあります。
ゲストには、これらのテクノロジによって作成された仮想マシンが別々の別々のコンピュータとして表示されます。顧客が本物だと思う仮想CPU、RAM、NIC、グラフィックカードなどがあります。したがって、さまざまなオペレーティングシステムを仮想マシンにインストールでき、変更なしで「即時」動作します。
多くのオペレーティングシステムを大きな努力なしにインストールできるため、これは非常に便利ですが、ハイパーバイザーがすべてのハードウェアをエミュレートする必要があるため、速度が遅くなる可能性があるという欠点があります。別のオプションは半仮想化ハードウェアであり、顧客向けに新しい仮想デバイスとドライバが開発され、仮想環境でパフォーマンスを向上させるように設計されています。この目的のために、qemu-kvm
さまざまなデバイスとドライバが用意されています。virtio
1つの欠点は、ゲストオペレーティングシステムをサポートする必要がありますが、サポートされている場合はパフォーマンス上の利点が大きいことです。
lxc
オペレーティングシステムレベルの仮想化またはコンテナの例。このシステムでは、1つのカーネル(ホストカーネル)のみがインストールされます。各コンテナはユーザーモードプロセスを分離しただけです。たとえば、Webサーバー(たとえばapache
)はコンテナにインストールされています。このWebサーバーに関する限り、インストールされている唯一のサーバーはサーバー自体です。他のコンテナがFTPサーバーを実行している可能性があります。 FTPサーバーはWebサーバーのインストールについて知らず、自分のインストールについてのみ知っています。他のコンテナには、Linuxディストリビューションのフルユーザースペースインストールを含めることができます(ディストリビューションがホストシステムのカーネルで実行できる場合)。
ただし、コンテナーを使用する場合は、別のオペレーティングシステムのインストールはなく、ユーザーレベルのサービスの隔離されたインスタンスのみがあります。したがって、コンテナにさまざまなプラットフォームをインストールすることはできません。 LinuxにはWindowsをインストールできません。
コンテナは通常、プロセスで使用されるchroot
個別のプライベートルート()を作成するために使用されます。/
個別のプライベートルートを多数作成すると、プロセス(WebサーバーやLinuxディストリビューションなど)が自己分離ファイルシステムで実行されます。たとえば、高度な技術を使用すると、cgroups
ネットワークやRAMなどの他のリソースを分離できます。
どちらにも長所と短所があり、どちらが最善かについての長い議論があります。
- ハイパーバイザーの場合、各コンテナにオペレーティングシステム全体をインストールする必要がないため、コンテナはより軽量です。したがって、より低い仕様のハードウェアでも実行することができる。ただし、Linuxゲスト(Linuxホスト)のみを実行できます。また、カーネルを共有するため、破損したコンテナが他のコンテナに影響を与える可能性があります。
- ハイパーバイザーは、各仮想マシンに完全なオペレーティングシステムがインストールされており、ゲストが他の仮想マシンを認識しないため、より安全でさまざまなオペレーティングシステムを実行できます。ただし、これはホスト上でより多くのリソースを占めるため、ホストは比較的強力でなければなりません。
答え2
コンテナは少し似ています。chroot環境ただし、より完全なユーザースペース分離を実現します。実際のVMではなく仮想オペレーティングシステムを提供します。仮想マシンは、ベアメタルと同様に、実行中の実用的で完全なオペレーティングシステムを備えた複数のマシンのファンタジーを作成します。ここで、「完全なオペレーティングシステム」はカーネルを含む。一部の仮想マシン(例:QEMU)は、さまざまな種類の「ベアメタル」アーキテクチャを刺激することもできます。
代わりに、コンテナはそれぞれ、完全なユーザー空間を実行する複数のコアのファンタジーを作成します。たとえば、あるコンテナではDebianを実行し、別のコンテナではArchを実行することができるため、コンテナ内の視点は仮想マシンと非常によく似ています。ただし、1つの物理カーネル(この場合はLinux)と互換性のあるオペレーティングシステムのユーザー領域のみを実行できます。これは、独立したカーネルとあらゆる種類のオペレーティングシステムを実行できる物理仮想マシンとは異なります。
したがって、実際の VM はリソースの観点からコンテナよりもコストが高くなります。各 VM に異なるコアが必要ない場合は、コンテナを使用することもできます。
次のように、LXEと同様のタスクを実行する他の仮想化システムがあります。オープンVZ、VPSベンダーによって広く使用されています。 openVZ VPSは、ホストオペレーティングシステムのカーネルを使用する独立したユーザースペースです。これが、これらのVPSがLinuxのさまざまな形式で提供される理由です。しかし、これはまさにホストカーネルと互換性がなければならないということです。
OpenVZとLXCスタイルの仮想化を呼び出します。オペレーティングシステムレベルの仮想化。
ㅏ管理プログラムなどの仮想マシンを管理するシステムです。仮想ボックス、QEMUまたは禅。 Xenなどの一部のハイパーバイザーはベアメタルで実行され、ホストオペレーティングシステムは必要ありません(ただし、制御インターフェイスで管理されているオペレーティングシステムが必要な場合があります)。 VirtualBoxやQEMUなどの他のものは、ホストオペレーティングシステム内で実行されます。 QEMUなどの一部はさまざまなシステムアーキテクチャをエミュレートすることができますが、VirtualBoxなどの他のものはそうではありません(つまり、VMアーキテクチャは常に実際のホストと同じです)。実際の仮想マシンがコンテナよりも多くのリソースを必要とするように、シミュレートされたアーキテクチャにはより多くのリソースが必要です。
ハイパーバイザースタイルの仮想化を呼び出します。プラットフォームレベルの仮想化。