RSS
Blog
Mohsen MostafaJokarによるXenブログ投稿シリーズのパート5について説明している画像

Xen仮想化とクラウドコンピューティング#05:Xenプロジェクト、ユニカーネル、そして未来

29年2020月XNUMX日-MohsenMostafaJokar著

このシリーズの以前の記事では、仮想化について紹介し、Xenがそのアーキテクチャと主要な機能を通じて仮想化を実現する方法について説明し、Xenが相互作用する他のプラットフォームについて説明しました。 この記事では、仮想化におけるいくつかのエキサイティングな進歩と、Xenがそれらをどのようにサポートするかについて説明することでシリーズを締めくくります。

これまで見てきたように、ハイパーバイザーは、GNU / Linux、Windows、BSDなどの完全なオペレーティングシステムを保持するVMをロードします。 VMは本質的にコンピュータシステム全体であるため、複雑で大規模である必要があります。 デフォルトでは、VMのオペレーティングシステムは、さまざまな設計とドライバーを持つ多くのベンダーの幅広いハードウェアをサポートしています。 これらの通常のオペレーティングシステムは、マルチユーザー、マルチプロセス、および多目的であり、サイズが大きくなります。

余分なソフトウェアを大量に必要とせずにアプリケーションを実行するために、ユニカーネルの概念が開発されました。 ユニカーネルは(通常は)単一目的であり、ハードウェア上で直接実行するのではなく、VMまたはコンテナーで実行するように作成されているため、デバイスドライバーの複雑さはありません。 ユニカーネルはマルチユーザーまたはマルチプロセスではなく、XNUMXつのアプリケーションを実行するコードの単一スレッドを作成するだけです。 必要なライブラリだけでコンパイルできます。 したがって、ユニカーネルは小型、軽量で、ロードと実行が高速です。 ただし、VMまたはコンテナでのみ実行されます。

Xenパンダマスコット

非常に広い意味で、ユニカーネルは、マルチユーザーオペレーティングシステムが登場する前の時代のメインフレームの単純な実行環境を再現します。 また、1990年代後半のMITのXNUMXつのプロジェクトを彷彿とさせます。 エクソカーネル , ネメシス、これはCitrixといくつかの大学によって開発されました。

ユニカーネルの基本アーキテクチャ

ユニカーネルは、シェルがなく、サブプロセスを生成できず、複数のスレッドを作成できない単一のランタイム環境を生成します。 開発者は、アプリケーションの実行に必要な最小限のライブラリセットを選択します。 次に、これらのライブラリはアプリケーションでコンパイルされ、GNU / LinuxやWindowsOSなどの完全なオペレーティングシステムなしでハイパーバイザー上で直接実行できる実行可能イメージ(ユニカーネル)を作成します。 ユニカーネルは、ハイパーバイザーの観点からVMと見なされます。 ユニカーネルは、プログラミング言語の純粋なランタイムと考えることもできます。 ユニカーネルは オカムル, アーラン, Java, ハスケル, さび, Ruby , Go、他の言語。

Xenプロジェクト Unikernelsの誕生のリーダーです。 このテクノロジーは、ハイパーバイザーが多くのVMをサポートできる新しい形式のクラウドコンピューティングの中核になっている可能性があります。

図7は、ユニカーネルを実行するために必要なコンポーネントを示しています。

図7.ユニカーネルを実行するためのアーキテクチャ
図7.ユニカーネルを実行するためのアーキテクチャ

コンテナの利点はスピードとサイズが小さいことだと先に説明しました。 これらの機能は、ユニカーネルが登場する前にコンテナを使用した顕著な理由でした。 実際、ユニカーネルは速度とサイズでコンテナを打ち負かす傾向があります。 また、脆弱性が潜んでいる可能性のある追加のコンポーネントが含まれていないため、優れたセキュリティを備えています。 起動時間はほぼ瞬時です。

上記の機能の中で、セキュリティが最も重要です。 ユニカーネルは、標準のオペレーティングシステムが提供する機能がないため、攻撃対象領域が小さくなります。 侵入者がシステムにアクセスするために悪用できるシェル、ユーティリティ、およびその他のプログラムはありません。

ほとんどのユニカーネルはアプリケーションにコンパイルされます。アプリケーションは、コードとライブラリ関数の独自の組み合わせにより、それぞれ独自のフットプリントを備えています。 したがって、侵入者が攻撃ベクトルをユニカーネルに見つけたとしても、他のユニカーネルでは機能しません。

図8は、標準のコンポーネントを示しています Linuxカーネル。 ユニカーネルは、従来のオペレーティングシステムレイヤーを削除し、必要最小限のシステムライブラリ、プログラミング言語ランタイム、およびアプリケーションコード自体のみを残します。

図8.一般的なオペレーティングシステムコンポーネント
図8.一般的なオペレーティングシステムコンポーネント

リーダーとしてのXenプロジェクトは、Unikernel愛好家に多くの機能を提供します。 ここでそれらのいくつかを調べます。

前に述べたように、ユニカーネルは小さくて速いパッケージに焦点を合わせています。 準仮想化(PV)では、XenProjectは基盤となるハードウェア層へのアクセスをUnikernelsに与えることができます。 ただし、ハイパーバイザーにはハードウェアの実際のドライバーが含まれているため、ユニカーネルに再実装する必要はありません。 ただし、ユニカーネルはHVMモードを自由に使用して、実際のハードウェアドライバーを実装できます。

セキュリティはXenProjectハイパーバイザーDNAにあり、攻撃対象領域が小さいことを意味します。 この機能はUnikernelsと一致しています。

Xenプロジェクトとユニカーネルの両方にとって、パフォーマンスとセキュリティは非常に重要です。 Xenハイパーバイザーのベアメタル構造は、単一ホスト上の多くのユニカーネルVMに適したプラットフォームを提供します。

いくつかのユニカーネルプロジェクトには次のものが含まれます。

Unikraft:ユニカーネルの新しい開発プロセス

ユニカーネルが提供するすべての優れた機能には、いくつかの欠点があります。 ユニカーネルは、開発者にアプリケーションを基盤となる最小限のOSに手動で移植し、使用されるライブラリのリストをカスタムビルドするように強制します。 次のような大きなプロジェクトについて考えてください アパッチ, MariaDBまたは Suricata-IDS。 ご想像のとおり、これには専門家による多大な努力とかなりの時間が必要です。 解決策は何ですか? これらの開発者は、ユニカーネルの高性能を犠牲にして、標準のOSに固執する必要がありますか?

その目標は ユニクラフト プロジェクトは、この問題を解決し、高度に構成可能なユニカーネルコードベースを提供することです。 もうXNUMXつの目標は、開発者が独立したプロジェクトに取り組むのではなく、ライブラリでコードを提供することを奨励することです。 Unikraftは、最小限のOSを中心にコミュニティを作成し、この種のオペレーティングシステムを自動的に構築できるツールを提供することを望んでいます。

すでに、と呼ばれる小さなオペレーティングシステムカーネル ミニOS Xenハイパーバイザーに含まれています。 Xenハイパーバイザー用のカーネルドライバーがあるため、多くのユニカーネルプロジェクトのルートです。 ただし、Unikraftプロジェクトの目標はMini-OSの目標とは異なります。

Unikraftは初期段階にあります。 による NECラボ、その予想される機能は次のとおりです。

  • 起動と移行の時間の短縮
  • 低メモリフットプリント
  • 強力なセキュリティ
  • 高密度
  • 高性能
  • 開発者に優しいツールとプロセス
  • すべての主要なプラットフォームで実行する機能

この記事を書いている時点で、Unikraftプロジェクトは次のとおりです。

LightVM

LightVMは、Xenに基づく仮想化ソリューションであり、VMを多数ホストしている場合でも、VMの起動時間を短縮します。 LightVMは、Xenstore構成データベースをNoXS(Xenstoreなし)と呼ばれる新しい分散ソリューションに置き換えることでこれを実現します。 NoXSは、デバイスの初期化に必要なすべての情報を含む共有ページを各デバイスに提供することにより、データベースへのアクセス速度を低下させます。 LightVMは、インスタンス化、移行、保存、復元などの操作を行う新しいChaosツールスタックも使用します。 現在、LightVMはDom0のLinuxカーネルに依存していますが、DomUの場合、LinuxとMini-OSベースのゲストの両方を使用できます。 LightVMは2.3msでVMを起動できます。これはDockerのXNUMX倍の速度です。 LightVMを使用すると、次のように言うことができます。私のVMは、コンテナよりも軽量で安全ですに設立された地域オフィスに加えて、さらにローカルカスタマーサポートを提供できるようになります。」

MirageOS

MirageOSは、オペレーティングシステムの機能を提供するライブラリです。 クラウドコンピューティングおよびモバイルプラットフォーム向けの安全で高性能なネットワークアプリケーションを提供するユニカーネルを作成するために使用されます。 MirageOSの主なプログラミング言語はOcamlです。これは、オプションの機能およびオブジェクト指向機能を備えた高水準プログラミング言語であり、安全で高性能なプログラムを作成できます。 あなたはOcamlによってあなたのPC上であなたのプログラムを開発しそしてそれをUnikernelのための完全に独立したプログラムにコンパイルすることができます。 現在、100を超えるMirageOSライブラリがあり、MirageOSは、TCP / IP、UDP、IPV6、UDPV6、ICMP、DNS、SSH、VNC、HTTP、XMPP、 Xenデバイスドライバー。 MirageOSは、Xenベースのクラウドでサーバーをより安価、安全、高速に実行するのに役立ちます。

Xenプロジェクトのその他の側面とその将来

Xenプロジェクトは、常に新しいハードウェアとテクノロジーのサポートに取り組んでいます。 現在の取り組みの一部はターゲットになっています AMD EPYC CPU、Hygon Dhyana 18hプロセッサフ​​ァミリ、 ラズベリーPi4および IntelのAVX512.

オープンソースがソフトウェアの世界を変えたと信じているなら、あなたは何を楽しみにすべきです RISC-V「Risk-Five」と発音される、はマイクロプロセッサの世界に役立つ可能性があります。 RISC-Vは、RISC(縮小命令セットコンピューター)の原則に基づいています。 RISC-Vの将来を判断するのは時期尚早です。 この記事の執筆時点で、RISC-Vには、認証プロセスの欠如、パーツファミリまたはパッケージの標準化の欠如、ハードウェアまたはソフトウェアスタックのどの時点でもプラグアンドプレイの欠如など、いくつかのロジスティック上の問題がありました。 GNU / LinuxやFreeBSDを含むいくつかのオペレーティングシステムは、RISC-Vアーキテクチャに移植されています。 Xenプロジェクトはポートにも取り組んでいます。

組み込みおよび自動車分野は、Xenプロジェクトについても朗報です。 を含むいくつかの会社 EPAM, ザイリンクスおよび GlobalLogic 車両の世界を変えるために、組み込みデバイス向けのXenに取り組んでいます。

今日のすべての車両はコンピューターに依存しており、通常は車のほとんどの部分を制御します。 これらの部分のいくつかは敏感であり、セキュリティはこの分野で大きな関心事です。 エンジン制御、自動運転、ネットワーク、警告灯、速度表示、燃料タンクなどのコンポーネントは不可欠であり、保護する必要があります。 

今日、ほとんどの車はの変種を使用しています Android、しかし、このOSは、そのような目的のために十分に高速で安全ではありません。 さらに重要なのは、一部の車のオプションにはインターネット接続が必要であり、これにより攻撃の扉が開かれます。 攻撃者が車のコンピューターに侵入した場合、攻撃者はドライバーや他の人の生活と遊ぶことができます。

Xenプロジェクトは、優れたセキュリティとパフォーマンスを提供します。 Xenハイパーバイザーを実行しているカーコンピューターを使用すると、車のオペレーティングシステムをミリ秒単位で起動でき、Xenは分離によって優れたセキュリティを提供できます。 これらの車では、オペレーティングシステムはXenハイパーバイザーの制御下でDomUとして実行されます。 このフィールドの詳細については、「Xenによる自動車の仮想化」はEPAM社のWebサイトにあり、「仮想オープンシステム:自動車の混合クリティカル仮想化が正しく行われる」は、Arm社のWebサイトにあります。

Xenプロジェクトはユニカーネル分野で活発に活動しており、新しいテクノロジーとハードウェアのサポートに取り組んでいます。

Xenへの貢献

Xenプロジェクトで作業したい場合は、そのXNUMXつ以上に参加してください メーリングリスト、非常にアクティブです。 Xenハイパーバイザーに関する基本的な質問をに送信できます xen-users@lists.xenproject.org、およびその開発に関する質問 xen-devel@lists.xenproject.org.

Xenプロジェクトのテストとデバッグを支援するには、 Xen Project TestDaysページ.

Xenプロジェクトについての本を「こんにちはXenプロジェクト」。 オープンソースなので、誰でも編集してチャプターを追加できます。 将来的には、さらに章を追加できることを願っています。
 

前の投稿を読む

Mohsen Mostafa Jokarについて:

モーセンモスタファジョカール


Mohsen Mostafa Jokarは、Linux管理者および仮想化エンジニアです。 His interest in virtualization goes back to school days, when he saw Microsoft Virtual PC for the first time.彼の仮想化への関心は、Microsoft VirtualPCを初めて見た学生時代にまでさかのぼります。 He installed it on a PC with 256 MB of RAM and used it for Virtualize Windows 98 and DOS.彼はそれをXNUMXMBのRAMを搭載したPCにインストールし、Virtualize WindowsXNUMXとDOSに使用しました。 After that, Mohsen became interested in virtualization and got acquainted with more products.その後、モーセンは仮想化に興味を持ち、より多くの製品に精通しました。

仮想化とともに、モーセンはGNU / Linuxに精通しました。 彼は最初のLinuxディストリビューションとしてLindowsOSをインストールし、後にFedora Core、Knoppix、RedHat、およびその他のディストリビューションに精通しました。 Linux OSを使用して、彼はbochsに精通しましたが、遅すぎることに気付き、いくつかの調査の結果、Qemuが発見されました。 Qemuはbochsよりも高速であり、KQEMUモジュールをインストールすることで、仮想化をさらに高速に行うことができました。 Qemuの後、MohsenはInnotek VirtualBoxに精通し、それをメインの仮想化アプリケーションとして選択しました。 Innotek VirtualBoxは優れたGUIを備えており、使いやすかったです。

「」

本当に有益な投稿! ありがとう