たくさん XCP-NGプロジェクトの開発者が発表 最近、彼らは次の名前の新しいプロジェクトに取り組んでいます。 「PV-IOMMU」 これにより、ゲスト システムは、Xen 環境の準仮想化を通じて実装された IOMMU の限定された機能にアクセスできるようになります。
基本的に、PV-IOMMU Dom0 が準仮想化 IOMMU を使用できるようにすることを約束しますこれには、Dom0 の DMA 保護や Linux VFIO のサポートなど、いくつかの利点があります。
IOMMUとは何ですか?
IOMMU はメーカーによって異なる名前で知られています (Intel の VT-d、AMD の AMD-Vi、ARM の SMMU など)。 特別に実装された装置です その主な機能は DMA リクエストを変換またはフィルタリングする (ダイレクト メモリ アクセス) デバイスからマシンの物理メモリへ。仮想化では、ゲスト システムがイーサネット アダプタ、グラフィックス カード、ストレージ コントローラなどの周辺デバイスに直接アクセスできるようにするために使用されます。
IOMMU 準仮想化によりどのようなメリットが得られますか?
以前は、 Xen ハイパーバイザーは IOMMU を使用してアクセスをリダイレクトしました PCI デバイスのメモリへのアクセスを制御します。しかし、 安定性とセキュリティ上の理由から、ゲストは IOMMU ブロックに直接アクセスできませんでした。 ハードウェアによって提供されます。
ここでは、単に PV-IOMMU と呼ばれる新しい準仮想化 IOMMU を紹介します。基本的に、ゲストが IOMMU に期待する機能を実装し、ハードウェアの内部詳細をすべて抽象化します。 Xen では、ゲストが (許可されている場合) 使用できるさまざまな IOMMU 操作を提供する、このような操作用の新しいハイパーコール (HYPERVISOR_iommu_op) を追加しました。
それにもかかわらず、 ゲストにインターフェースを提供できるようになりました IOMMU へのアクセスを許可するには、 簡素化された Xen 準仮想化インフラストラクチャを使用する、低レベルのハードウェアの詳細は非表示にします。 PV-IOMMU と呼ばれるこのインターフェイスは、ハードウェアの内部詳細をすべて抽象化し、ゲストがアクセスできる一連の IOMMU 操作を提供します(許可されている場合)。 PV-IOMMU の操作は、HYPERVISOR_iommu_op ハイパーコールのサブ操作として公開され、ゲストにとって便利な方法で設計されています。
ホストが IOMMU に期待する主な機能の 1 つは、メモリ コンテキストを作成し、デバイス (または複数のデバイス) に適用できる一連の変換である「IOMMU ドメイン」を作成および変更できる機能です。これらのドメインは、仮想マシンである Xen ドメインとの混同を避けるために、Xen では「IOMMU コンテキスト」と呼ばれます。
IOMMU 準仮想化から際立ったさまざまな利点の中で、次のものが挙げられます。
- Dom0 の DMA 保護: IOMMU 準仮想化により、仮想化環境で管理ドメイン (Dom0) のダイレクト メモリ アクセス (DMA) 保護が有効になります。これにより、Dom0 の整合性が損なわれる可能性があるデバイスがシステム メモリに直接アクセスすることが防止され、システムのセキュリティと安定性が向上します。
- Linux VFIO のサポート: IOMMU 準仮想化により、仮想化環境におけるユーザー デバイス用の仮想化フレキシブル I/O インフラストラクチャ (VFIO) のサポートが容易になり、ユーザー アプリケーションと仮想マシンがハードウェア デバイスに直接アクセスできるようになります。
- Xen を使用した SPDK の実装が簡単になります。 IOMMU 準仮想化は、Xen で SPDK をサポートする継続的な取り組みの一部でもあります。これにより、仮想マシン ストレージ用の新しい高速データ パスへの扉が開かれ、仮想化環境でのストレージ パフォーマンスが向上する可能性があります。
それに加えて、また Xen の問題の 1 つは IOMMU で解決される予定です、現在からまたは、単一の Xen ドメイン内に複数の IOMMU コンテキストが存在することを許可します。 ただし、複数の IOMMU コンテキストを考慮し、それらを利用できるように既存の機能を変更するために、Xen IOMMU サブシステムの再設計が検討されています。最初のアプローチを実装する機能 PoC が実装されましたが、特定の制限と不完全なサポートはありますが、将来に向けてサブシステムの完全な再設計に取り組んでいることが述べられています。
最後に、それは言及されるべきです 現在の開発段階では、PV-IOMMU は Intel VT-d のみをサポートします。、ただし、AMD-Vi と SMMUv3 のサポートはすぐに追加される予定です。さらに詳しく知りたい場合は、以下の詳細を参照してください。 次のリンク。