私は Xen の初心者です。Xen の仕組みを知りたいです。コードに直面すると本当にパズルで、どこから始めればよいかわかりません。私にとって簡単な記事はありますか?
4 に答える
コードを見るとおっしゃっていたので、VMの起動方法だけでなく、Xenの技術的な詳細を理解したいと思います。
すべての問題と同様に、単純なものから始めて、上に向かって進んでいきます。いくつかのポインタ:
あなたのベルトの下で前提条件の経験を持っていることを確認してください。特に、CとLinuxの強力な親和性だけでなく、x86ページングと仮想化メモリの動作もあります。
一般的なXenアーキテクチャをしっかりと把握していることを確認してください。たとえば、準仮想化とハードウェアでサポートされる仮想化、非特権ドメイン(DomU)と比較した管理ドメイン(Dom0)の特別な役割などです。
Dom0で実行されているXenコンポーネントを調査します。
Xenコントロールライブラリ(libxc )は、ハイパーコールに関連するロジックの多くを実装し、これらの周りに砂糖を追加します(を見てください
tools/libxc
)。Xenを管理するためのスイスアーミーナイフ、つまりXenライトライブラリ(libxl)。このライブラリは、非推奨
xm
のツールをツールに置き換え、xl
VMの起動/停止、実行中のすべてのVMの一覧表示など、すべてのメンテナンスタスクを処理します。これらすべての操作で、前述のlibxcと連携して動作します。(Libxlはに住んでいtools/libxl
ます。)Xenstoreはツリーのようなデータ構造であり、実行中のすべてのドメインからデータを取得して保存できます。これが必要なのは、すべてのI / Oが(ハイパーバイザーではなく)Dom0を通過し、ドメインがI/Oをどのように渡すかをDom0と通信する必要があるためです。(調べてください
tools/xenstore
。)などのツールを使用してXenstoreを検査できますxenstore-ls
。共有チャネルを介してVMにデータを渡す
blkback
/カーネルドライバー。(これらのドライバーは、いわゆるPVOPSをサポートする最近のLinuxカーネル(例:> = v3.0)にあります)。netback
コンソールデーモン(
tools/console
)を見てください。Qemuコンソールが実際に使用される場合があることに注意してください。Qemuは、VMにファイルでバックアップされた仮想ストレージを選択した場合のデフォルトのバックエンドとしても写真に含まれています。
VM間通信の「Xen-way」を試してください:Grantテーブル、イベントチャネル、およびXenstore。これらの基本機能を使用して、VM間に独自の共有チャネルを作成できます。これを行うには、たとえば、2つのドメインで使用するカーネルモジュールを作成して、それらが相互に通信できるようにします。
私はまたあなたがチェックアウトすることができるソースでいくつかのポインタを与えることができます:
xen/xen/include/public/xen.h
すべてのハイパーコールのリストと、それらが何をするかについてのコメントが表示されます。xen/xen/include/xen/mm.h
Xenで使用されるさまざまなメモリ用語(つまり、実際のアドレスと仮想化されたアドレスおよびページ番号)を紹介します。これらの違いを理解していない場合、ハイパーバイザーコードを読むことは確かにイライラするでしょう。xen/xen/include/asm-x86/config.h
Xenのメモリレイアウトの概要を示します。xen/tools/libxc/xenctrl.h
興味深いドメイン制御操作の大規模なリストをエクスポートします。これにより、Dom0とハイパーバイザー間のタスク分割の抽象的なビューが提供されます。
最後になりましたが、 DavidChisnallによる「 XenHypervisorの決定的なガイド」という本を強くお勧めします。たくさんのコード例を使って、これらすべてのトピックとそれ以上を徹底的かつ技術的な方法でカバーしています。
Xen wikiと開発者メーリングリストも、Xenを理解するための優れたリソースです。
より具体的な質問がある場合は、より具体的な回答を提供できます。
私にとって、それは例とステップバイステップで開始するための最良かつより具体的なチュートリアルです。始めたときに使ってみました。
その後、Xenのドキュメント自体やいくつかの本についてさらに詳しく読むことができますが、Xenを簡単にインストールしてテストできるようにするための出発点として、DebianWikiからそのチュートリアルを選択します。
概要だけが必要な場合は、http://wiki.xenproject.org/wiki/Xen_Project_Beginners_Guide を参照してください。
これにより、Xen ハイパーバイザーを紹介し、仮想マシンをセットアップするための構成を提案し、ネットワークに関する情報を提供し、最後に仮想マシンを管理するためのツールについて詳しく説明します。
このドキュメントは、特に ubuntu で Xen を取得するためのものです (最も重要なのは、動作することです!) https://help.ubuntu.com/community/Xen
===
ただし、次のレベルに進み、Xen の動作を理解したい場合は、Xen アーキテクチャ、メモリ管理、デバイス管理、CPU スケジューリングなどについては、「The Definitive Guide to the Xen Hypervisor」という本を読むことをお勧めします。
ZEN Start up のガイドとなるリンクをいくつか紹介します。お役に立てば幸いです。