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

Linux KVM (カーネルベースの仮想化) とその利点の紹介

仮想化とは

簡単に言えば、仮想化はホスト ノード上のシミュレートされたプラットフォームまたは環境であり、ユーザーにとっては非常に抽象的です。

これらのシミュレートされた仮想環境は、オペレーティング システムや開発環境などです。

これにより、ホスト ノードのハードウェア リソースを効率的に使用できます。

KVM とは?

KVM はカーネル ベースの仮想化の略です。

カーネル ベースの仮想化は、新世代の Intel および AMD CPU によって提供されるハードウェア支援の仮想化サポートの利点を得るために実装されました。

仮想化テクノロジの開発の初期段階では、CPU はソフトウェアによって完全にエミュレートされていましたが、ハードウェアに直接アクセスできないため、最終的にはパフォーマンスが低下しました。

現在、市場に出回っている CPU は仮想化をサポートしていますが、これは初期段階からのアーキテクチャの変更の結果です。

これは、ハードウェア支援による仮想化とも呼ばれます。

仮想化にまったく慣れていない場合は、ここから始めるとよいでしょう。ここでは、仮想化の 3 つの領域と、2 種類のハイパーバイザーについて説明しました:サーバー仮想化テクノロジとハイパーバイザーの種類の紹介

以下は、仮想化テクノロジの初期開発段階で採用されたさまざまなアプローチです。

<オール>
  • バイナリ変換技術を使用してプロセッサをエミュレートする代わりに、ホスト システムのプロセッサ上で仮想マシンを実行する。ゲスト オペレーティング システムを変更しなくても動作します。
  • ゲスト システムのオペレーティング システムを変更して、ハードウェアに直接アクセスできるハイパーバイザーと通信する。パラ仮想化を実装する Xen ハイパーバイザー プラットフォームはその一例です。
  • ホスト システムのプロセッサを変更して、ハイパーバイザーと簡単に通信できるようにし、仮想化をサポートする。これにより、バイナリ変換とエミュレーションが不要になります。準仮想化ではなく、完全な仮想化につながります。
  • ホスト システムのオペレーティング システムを変更して、仮想化をサポートできるようにする。ホスト型ハイパーバイザーではなく、ネイティブ ハイパーバイザーになります。
  • カーネル ベースの仮想化は、上記の 3 番目と 4 番目のアプローチの利点を活用します。

    ハイパーバイザーとは?

    ハイパーバイザーは、ゲスト オペレーティング システムとホスト システム ハードウェアの間のプログラムの中間層にすぎません。

    接続しているすべてのゲスト オペレーティング システムの実際のハードウェアを管理します。

    ハイパーバイザーには、ネイティブまたはホスト型の 2 つのタイプがあります。ハイパーバイザーは VMM (仮想マシン マネージャー) とも呼ばれます。下の図を参照してください。ベアメタル ネイティブ ハイパーバイザーを表します。

    ホストされたハイパーバイザーの良い例は、VMware や仮想ボックス ソフトウェアです。

    VMWare を初めて使用する場合は、VMware 仮想化の基礎 – VMware サーバーと VMware ESXi が役に立ちます。

    Virtualbox を初めて使用する場合は、ここから始めるのが良いでしょう:Oracle VM VirtualBox をインストールして仮想マシンを作成する方法

    KVM の進化

    そのため、効果的な仮想化のための最新のソリューションとして、カーネル ベースの仮想マシン (KVM) が進化しました。

    基本的に、ホスト オペレーティング システムのカーネルを備えたモジュールによって、CPU をサポートする最新のハードウェア仮想化によって提供される CPU 拡張機能を使用します。

    このカーネル ベースの仮想化モジュールを使用することで、ホスト オペレーティング システムのカーネルは、Linux カーネルの機能と仮想化をサポートするハードウェアを活用するハイパーバイザーとして機能します。

    KVM を XEN および QEMU と比較すると、KVM は仮想化にプロセッサ拡張機能を使用するのに対し、QEMU は CPU の完全なエミュレーションで動作し、XEN はカーネルを使用する代わりにホスト オペレーティング システムの外部ハイパーバイザーとして動作します。 .

    KVM を使用すると、1 台のマシンまたはホスト システムで、任意のオペレーティング システムで複数の仮想マシンを実行できます。 KVM は、2.6.20 安定版リリース以降、Linux カーネルに導入されました。 KVM の良い例は、RPM ベースの Red Hat および Fedora ディストリビューションに付属する仮想化ソリューションです。

    Linux KVM のメリット

    Linux KVM を初めて使用する場合は、次の手順を開始するのに役立ちます:Linux KVM をインストールしてゲスト VM を作成する方法と例

    以下は、カーネル ベースの仮想化の機能と利点の一部です。

    <オール>
  • KVM モジュールの助けを借りて、カーネル ベースの I/O エミュレーションによって割り込みとタイマーのパフォーマンスの重要な部分を管理します。仮想マシンとホスト間の I/O リクエストに制限を設定する機能を提供します。
  • KVM モジュールにより、物理プロセッサと命令でサポートされていない CPU モードのエミュレーションが可能になります。
  • 使用される KVM モジュールは、仮想化を強化するために追加されたアップストリーム Linux カーネルの一部です。
  • ここで使用される KVM モジュールは、ハードウェア仮想化をサポートする Intel および AMD x86 プロセッサの両方に共通のインターフェイスを提供します。 Intel では仮想化用の Intel VMX ハードウェア アシストとして知られ、AMD では仮想化用の AMD SVM ハードウェア アシストとして知られています。
  • カーネルからベアメタル ハイパーバイザーを作成します。ネイティブ ハイパーバイザーを作成すると言えます。
  • ハードウェアの MMU (メモリ管理ユニット) の機能を活用してメモリを仮想化し、パフォーマンスを向上させる
  • それによって作成された仮想マシンは、標準の Linux プロセスであり、ネイティブの標準 Linux スケジューラによってスケジュールされます。
  • CPU ベンダーによるメモリ仮想化のために、Intel の EPT (Extended Page Table) および AMD の RVI (Rapid Virtualization Indexing) 機能をサポートしています。
  • 主流の Linux カーネルでサポートされているすべてのファイル システムをサポートしています。
  • 柔軟なストレージを提供することで、リソースの使用率とリソースへのアクセスを改善しました。メモリ、vCPU、ハードディスクを Linux KVM に追加するのは非常に簡単です。
  • Windows、UNIX、Solaris、DOS など、幅広いゲスト オペレーティング システムをサポートする
  • SELinux を使用したセキュリティの実装、幅広いハードウェア サポート、デバイス ドライバのサポートなど、Linux のすべての機能がカーネル ベースの仮想マシンに継承されます。
  • 仮想化モジュールが提供する API による安全なリモート管理
  • モジュールを追加してより多くの機能を活用することで、Linux カーネルのメイン ストリームを拡張できるため、スケーラビリティが強化されます。

  • Linux
    1. Linuxカーネルとは何ですか?最新のカーネルにアップグレードする必要がありますか?

    2. Linux 用の Git ベースのパッケージ マネージャー/インストーラー

    3. Linux のカーネルがモノリシックであるのに、なぜ Linux は Unix に似ているのですか?

    1. Linux –カスタムLinuxカーネルの構成、コンパイル、およびインストール?

    2. Linux –ユーザースペースとカーネルスペースの違いは?

    3. メモリをディスクに保存して後で復元することにより、Linuxでプロセスを休止状態にする方法は?

    1. Ubuntu16.04LinuxおよびKVMを使用したシンプルな仮想化

    2. bash および Linux カーネルでの Shebang 行の制限

    3. Linux のハイ メモリとロー メモリとは何ですか?