NetBSD プロジェクトは新しい NVMM ハイパーバイザーを開発中です

NetBSD プロジェクト開発者 発表した 新しいハイパーバイザーと関連する仮想化スタックの作成について説明します。これらは実験的な NetBSD-current ブランチに既に含まれており、NetBSD 9 の安定版リリースで提供される予定です。NVMM は現在、x86_64 アーキテクチャーのサポートに限定されており、x86_86 アーキテクチャーのサポートに 128 つのバックエンドを提供します。ハードウェア仮想化メカニズムの有効化: AMD をサポートする x256-SVM および Intel CPU 用の x128-VMX CPU 仮想化拡張機能。 現在の形式では、XNUMX つのホスト上で最大 XNUMX 台の仮想マシンを実行でき、それぞれの仮想マシンに最大 XNUMX 個の仮想プロセッサ コア (VCPU) と XNUMX GB の RAM を割り当てることができます。

NVMM には、システム カーネル レベルで実行され、ハードウェア仮想化メカニズムへのアクセスを調整するドライバーと、ユーザー空間で実行される Libnvmm スタックが含まれています。 カーネル コンポーネントとユーザー空間の間の対話は、IOCTL を通じて実行されます。 NVMM が KVM などのハイパーバイザーと異なる機能は、次のとおりです。 ハクスム そして、Bhyve は、カーネル レベルでは、ハードウェア仮想化メカニズムに関する必要最小限のバインディング セットのみが実行され、すべてのハードウェア エミュレーション コードがカーネルからユーザー空間に移動されるということです。 このアプローチにより、昇格された特権で実行されるコードの量が削減され、ハイパーバイザーの脆弱性に対する攻撃が発生した場合にシステム全体が侵害されるリスクが軽減されます。 さらに、プロジェクトのデバッグとファジング テストが大幅に簡素化されます。

ただし、Libnvmm 自体にはエミュレーター機能は含まれておらず、NVMM サポートを既存のエミュレーター (QEMU など) に統合できるようにする API のみを提供します。 この API は、仮想マシンの作成と起動、ゲスト システムへのメモリの割り当て、VCPU の割り当てなどの機能をカバーします。 セキュリティを向上させ、可能性のある攻撃ベクトルを減らすために、libnvmm は明示的に要求された関数のみを提供します。デフォルトでは、複雑なハンドラーは自動的に呼び出されず、回避できる場合はまったく使用されない可能性があります。 NVMM は、複雑になりすぎずに物事をシンプルに保ち、作業の多くの側面を制御できるようにします。

NetBSD プロジェクトは新しい NVMM ハイパーバイザーを開発中です

NVMM のカーネルレベルの部分は NetBSD カーネルと非常に緊密に統合されており、ゲスト OS とホスト環境の間のコンテキストスイッチの数を減らすことでパフォーマンスを向上させることができます。 ユーザー空間側では、libnvmm は一般的な I/O 操作を集約し、不必要なシステムコールの実行を回避しようとします。 メモリ割り当てシステムは pmap サブシステムに基づいており、システムでメモリが不足した場合にゲスト メモリ ページをスワップ パーティションに削除できます。 NVMM にはグローバル ロックがなく、拡張性に優れているため、異なる CPU コアを同時に使用して異なるゲスト仮想マシンを実行できます。

NVMM を使用してハードウェア仮想化メカニズムを有効にする、QEMU ベースのソリューションが準備されています。 準備されたパッチを QEMU の主要な構造に組み込む作業が進行中です。 QEMU + NVMM の組み合わせはすでに 許可する FreeBSD、OpenBSD、Linux、Windows XP/7/8.1/10、および AMD および Intel プロセッサを搭載した x86_64 システム上のその他の OS を搭載したゲスト システムを正常に実行します (たとえば、適切なバックエンドが作成されている場合、NVMM 自体は特定のアーキテクチャに関連付けられていません) 、ARM64 システムで動作できるようになります)。 NVMM のさらなる応用分野の中で、個々のアプリケーションのサンドボックス分離も注目されています。

NetBSD プロジェクトは新しい NVMM ハイパーバイザーを開発中です

出所: オープンネット.ru

コメントを追加します