クラウドコンピューティングの基盤技術であるKVMに関する予備的研究

クラウドコンピューティングの基盤技術であるKVMに関する予備的研究

[[281929]]

KVM は業界で最も人気のあるハイパーバイザーであり、正式名称はカーネルベースの仮想マシンです。これは Linux カーネル内のカーネル モジュールとして存在します。モジュール名はkvm.koです。カーネルによってスケジュールされ管理されるプロセスと見なすこともできます。 Linux バージョン 2.6.20 以降では、カーネルのトランク開発に完全に正式に追加され、コードが正式にリリースされました。 KVM は主に CPU とメモリの仮想化を管理するために使用され、IO デバイスの仮想化は Qemu によって完了します。なぜこのような分業が行われているのかを知るには、読み続けてください。

KVM と Qemu の過去と現在

Qemu は、純粋にソフトウェアによって実装されたオープンソースの「シミュレーション」ソフトウェアです。 CPU、メモリ、各種 IO デバイス、マウス、キーボード、USB、ネットワーク カード、サウンド カードなどを含む完全な仮想マシンの実装をシミュレートできます。基本的にシミュレートできないものは何もありません。 KVM との関係が何なのか疑問に思う人もいるかもしれません。彼らを協力関係、つまりお互いがいなければ生きていけない良き友人と考えることができます。

KVM は Qemu なしでは動作しません。 KVM 実装の初期段階では、開発とコードの再利用を簡素化するために、Qemu をベースに変更が行われました。主な点は、IO 仮想化モジュールをユーザー空間に実装したまま、パフォーマンスを重視する CPU 仮想化とメモリ仮想化の部分をカーネルに移動することです。このアプローチは主にパフォーマンス上の理由によるものです。 CPU とメモリの仮想化は非常に複雑な仮想化モジュールであり、非常に頻繁に使用されます。ユーザー空間に実装された場合、ユーザー状態とカーネル状態が頻繁に切り替わるため、パフォーマンスに大きな影響が及ぶことは避けられません。 IO 仮想化をユーザー空間で別途保持する必要があるのはなぜですか?これはトレードオフの結果です。まず、IO デバイスが多すぎます。 2 番目に、IO 仮想化は他の 2 つのモジュールと比較してあまり頻繁に使用されないため、オーバーヘッドは小さくなります。したがって、カーネルを可能な限り純粋に保つために、このような割り当てが行われます。

Qemu は KVM なしでは動作しません。前述のように、Qemu はユーザー空間で実行される純粋なソフトウェア実装であり、パフォーマンスが非常に低くなります。したがって、Qemu の観点から見ると、Qemu は KVM の仮想化機能を使用して、独自の仮想マシンに高速化を提供していると言えます。

初期の頃は両者の区別はなく(共存せず)、KVM によって変更されたモジュールは qemu-kvm と呼ばれていました。 Qemu1.3 バージョン以降では、2 つが 1 つに統合されました (共存)。 Qemu を使用して仮想マシンを作成するときに KVM モジュールをロードする場合は、パラメータ --enable-kvm を指定する必要があります。

KVMとQemuの関係

KVM アーキテクチャ

KVM は、ハードウェア仮想化 (Intel VT または AMD-V) に基づく仮想化ソリューションです。上記の Qemu との関係の分析を通じて、仮想化分野におけるその位置が基本的にわかります。実際には、CPU とメモリの仮想化のみを担当し、デバイスのシミュレーションは担当しませんが、シミュレーション用のユーザー空間 Qemu へのインターフェースを提供します。このインターフェースは/dev/kvmです。

Qemu は、/dev/kvm インターフェイスを通じて仮想マシンのアドレス空間を設定し、シミュレートされた I/O デバイスを提供し、関連するデバイス エコー操作をホスト マシンにマップして、I/O デバイス全体の仮想化操作を完了します。

KVM アーキテクチャ

/dev/kvm インターフェースは、Qemu と KVM 間の相互作用のための「ブリッジ」です。基本的な原理は次のとおりです: /dev/kvm 自体はデバイス ファイルであるため、ioctl 関数を通じてファイルを制御および管理することができ、それによってユーザー空間とカーネル空間間のデータ相互作用が完了します。 KVM と Qemu 間の通信プロセスは、主にデバイス ファイルに対する一連の ioctl 呼び出しです。

仮想マシンの作成を例に挙げてみます。仮想マシンは本質的には、ユーザー状態データ構造とカーネル状態データ構造を含むホスト マシンのプロセスです。ユーザー状態部分は Qemu によって作成および初期化され、カーネル状態部分は KVM によって完了されます。完了すると、作成された仮想マシンを表すファイル ハンドルが返されます。ファイル ハンドルの ioctl 呼び出しを使用すると、仮想マシンのアドレス空間とホストのアドレス空間の間のマッピング関係を確立したり、仮想マシンが使用する複数のスレッド (仮想プロセッサ、vCPU) を作成したりなど、仮想マシンを適切に管理できます。作成された vCPU に対して、対応するファイル ハンドルも生成されます。同様に、vCPU のファイル ハンドルへの ioctl 呼び出しを使用して vCPU を管理することもできます。

これについては後ほど、具体的な内容を解説する特別記事を掲載する予定です。

VMM 管理ツール - libvirt

現在、仮想化の分野は盛んであると言えます。 KVM、Xen、VMware、VirtualBox、Hyper-V など、さまざまなシナリオ向けに多くの仮想化ソリューションが提案されています。これらのソリューションの具体的な機能については、前の記事「仮想化テクノロジの概要」を参照してください。ソリューションが多数ある場合、共通モジュールも多数あるはずです。違いは、異なるハードウェア メーカーへの適応にある可能性があります。より多くのメーカーをサポートし、より多くの分野に適用するために、多くの IaaS ソリューションでは複数の仮想化テクノロジーを統合する必要があります。このとき、プラットフォームベースの管理ツールがあれば非常に便利ですが、libvirt はそのようなツールです。


libvirt アーキテクチャ

libvirt は複数の仮想化ソリューションをサポートするだけでなく、OpenVZ や LXC などのコンテナ仮想化システムもサポートします。 virsh、virt-install、virt-manager など、GUI およびコマンド ライン形式をサポートする仮想マシン管理ツールの完全なセットを提供します。汎用性と管理の容易さから、OpenStack、OpenNebula、Eucalyptus など、多くのクラウド コンピューティング フレームワーク プラットフォームでは、仮想マシンの管理に最下位レベルで libvirt の API を使用しています。ここではこのツールについてのみ説明しましたが、ご興味があればインストールして試してみてください。

KVM と Qemu の git パスは以下の通りです。興味があれば、ソースコードをダウンロードして勉強してみてください。

  1. git をビルドします。
  2. git クローン git://git.kernel.org/pub/scm/virt/kvm/kvm.git
  3. qemu.git (kvm を含む):
  4. git クローン git://git.qemu-project.org/qemu.git

<<:  効率的なマルチクラウドデータ管理のための3つの重要な要素

>>:  ERP はパブリック クラウド上に存在できないと誰が言ったのでしょうか? Kingdee Cloud Serverless ERP が AWS でリリース

推薦する

ブロックチェーン + Intel SGX テクノロジー UCloud は信頼できるデータ循環環境を構築します

ブロックチェーン技術は、独自の暗号化およびコンセンサスメカニズムを備えているため、データの宣言や承認...

Dogyun(狗云)日本VPS - 「Japan-DC1」データセンター「ソフトバンク」回線VPS簡易評価

日本のVPSは中国では近くて速いのでとても人気があります。ここではDogyunの日本のVPSを見てみ...

コンティーノ:クラウドに完全移行している企業の普及率はわずか13%

最近、企業のデジタル変革に焦点を当てたコンサルティング会社が、既存のビジネスでクラウド サービスを広...

オラクルはTikTokを活用してクラウドインフラ事業の拡大を目指す

[51CTO.com 速訳] Oracleは、TikTokやZoomなどの大規模なクラウド顧客を引き...

Box プロモーション: Box.net クラウド ディスクで 50G のストレージを無料で提供

現在、ネットワーク ディスクが多すぎませんか?国内で有名なものには、Baidu Netdisk、Te...

hostdare: KVM 仮想 cn2 gia vps 再入荷、hostdare 25% 割引コードが利用可能

Hostdare の KVM 仮想 VPS は現在在庫がありますので、購入する必要がある場合はお急ぎ...

タオバオアフィリエイトウェブサイトSEOでは適切な製品を選択し、ユーザーエクスペリエンスに注意を払う必要があります

先週金曜日、淘宝連盟「武林会議」が杭州で開催されました。会議で、タオバオ・アライアンスは、アリママが...

三国志を例に挙げて分散アルゴリズムについて語るのって、気楽なことでしょうか?

[[357046]]序文「三国殺し」は、中国の三国時代を背景に、身分を手がかりにトランプを形にした...

SEO トレーニングに参加するよう求められた場合、それでも参加する勇気がありますか?

昨日、Yigedian Blog で今日の SEO の変化についての記事を見ました。この記事では、S...

Baiduに登録された日からウェブサイトのSEOを見てみましょう

Baidu の登録日に問題があると聞いていましたが、実際に見たことはありませんでした。このようなこと...

いくつかの主要なIaaSプロバイダーのネイティブクラウド監視ツールを評価する

[51CTO.com クイック翻訳] 企業は、クラウド プロバイダーを選択する前に、ネイティブの管理...

初のインターネット独占禁止法訴訟:360対テンセント独占訴訟が明日審理される

新浪科技新聞11月25日朝のニュースによると、最高人民法院は11月26日午前9時に最高裁判所第一法院...

Jieku.comは2年間で数千万元の資金を使い果たした:参入ポイントの不足と都市間拡大の時期尚早さ

Jieku.comは2年前に広州で立ち上げられたO2Oプロジェクトだ。同社は2011年7月の設立から...

第10回中国クラウドコンピューティングカンファレンスが成功裏に開催され、ZDNet編集長がサミット対話を主催した。

7月23日から25日まで、第10回中国クラウドコンピューティングカンファレンスが北京国家会議センター...

Kubecost と Kyverno を使用したクラウド ネイティブ ワークロードのコスト管理

翻訳者 |王志軍校正 |孫淑娟 梁策1. 背景現在、ほとんどのアプリケーションはクラウド インフラス...