GNU/Linux >> Linux の 問題 >  >> Linux

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

仮想マシン (VM) は、多くの仮想化テクノロジの一般的な用語です。

仮想化技術にはさまざまなバリエーションがありますが、主なものは次のとおりです。

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

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

これらのテクノロジによって作成された仮想マシンは、ゲストからは分離された個々のコンピューターのように動作します。これらには仮想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 ホスト上)。また、カーネルを共有しているため、侵害されたコンテナが別のコンテナに影響を与える可能性があります。
  • 各 VM に完全な OS がインストールされ、ゲストが他の VM を認識しないため、ハイパーバイザーはより安全で、さまざまな OS を実行できます。ただし、これはホストでより多くのリソースを使用するため、比較的強力でなければなりません。

コンテナは、ユーザー空間のより完全な分離を実現することを除いて、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 がコンテナーよりも多くのリソースを必要とするのと同様に、アーキテクチャのシミュレーションにはより多くのリソースが必要です。

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


Linux
  1. Linux ファイル システムのソフト リンクとハード リンクとは

  2. Linux オペレーティング システムの /etc/shadow およびシャドウ キャッシュ ファイルの目的は何ですか?

  3. Linux システムの内部を学ぶ方法

  1. Linuxサーバーとは何ですか?なぜあなたのビジネスにはLinuxサーバーが必要なのですか?

  2. Linux でのライブラリ呼び出しとシステム呼び出しの違いは何ですか?

  3. Android - Android はどの Linux ディストリビューションに基づいていますか?

  1. LinuxでのChownコマンドとは何ですか?その使用方法

  2. Docker(およびLinuxコンテナー)とは何ですか?

  3. Linuxシステムの現在のランレベルはどれくらいですか?