2012-07-20 71 views
2

我是Xen的新手。我想知道Xen如何工作。 面對代碼時這真的是一個難題,我不知道從哪裏開始。 對我來說有一些簡單的文章嗎?從哪裏入手Xen?

回答

13

既然你提到看代碼,我假設你想了解的Xen的技術細節,而不是隻知道一味如何啓動虛擬機。

與所有問題一樣,從簡單的事情開始,然後按照自己的方式工作。一些指針:

  1. 一定要在你的腰帶上有先決條件的經驗。特別是強大的C和Linux親和力,還有x86分頁和虛擬內存工作。

  2. 確保您對一般Xen架構有完善的掌握。舉例來說,準虛擬化與硬件支持的虛擬化,管理域(Dom0中)的特殊作用相比,無特權域(DomU中)等

  3. 調查Dom0中運行Xen的組件:

    • Xen控件庫(libxc)它實現了與hypercalls有關的許多邏輯,並在這些附近添加了糖(請參閱tools/libxc)。

    • 瑞士軍刀用於管理Xen的,即Xen的光庫(libxl)。該庫用xl工具替代已棄用的​​工具,並負責維護所有維護任務,如啓動/停止VM,列出所有正在運行的VM等。對於所有這些操作,它都與上述libxc協同工作。 (Libxl生活在tools/libxl中。)

    • Xenstore是一個樹形數據結構,所有運行的域可以從中檢索和存儲數據。這是必要的,因爲所有I/O都通過Dom0(不是管理程序!),並且域需要與Dom0進行通信,他們將如何傳遞I/O。 (查看tools/xenstore。)您可以使用xenstore-ls等工具檢查Xenstore。

    • 其越過共享信道給VM的數據blkback/netback內核驅動程序。 (您可以在最近的Linux內核(例如> = v3.0)中找到這些驅動程序,它具有所謂的PVOPS支持)。

    • 看看控制檯守護進程(tools/console)。請注意,Qemu控制檯有時實際使用。如果您爲虛擬機選擇文件支持的虛擬存儲,Qemu也會作爲默認後端出現在圖片中。

  4. 嘗試使用虛擬機間通信的「Xen的方式」:授權表,事件通道和Xenstore的。藉助這些基礎知識,您可以在虛擬機之間創建自己的共享通道。例如,您可以編寫一個在兩個域中使用的內核模塊,讓他們相互交流。

  5. 我也可以給源一些指針,你可以看看:

    • 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和管理程序之間的任務劃分的抽象視圖。

最後但並非最不重要的,這本書「權威指南Xen管理程序」由大衛Chisnall的高度推薦。它以全面的技術方式涵蓋了所有這些主題,並提供了大量代碼示例。

Xen wiki和開發者郵件列表也是理解Xen的一個很好的資源。

如果您有更具體的問題,那麼我可以給你一個更具體的答案。

+0

嗨雨果。我正在尋找Xen控制庫(libxc)的文檔,然後來到這裏。我無法獲得任何體面的文檔,甚至沒有任何網上libxc的參考。你可以請我指點一下關於libxc的資源。謝謝 – abhi 2014-06-08 09:44:06

0

http://wiki.debian.org/Xen

對於我來說,這是例子,一步步開始的最佳和更具體的教程。我開始使用它。

然後,您可以在Xen文檔本身或某些書上閱讀更多內容,但作爲一個起點,您可以輕鬆安裝和測試Xen,我從Debian Wiki中選擇該教程。

0

如果你只是想要一個概述,你可以閱讀:http://wiki.xenproject.org/wiki/Xen_Project_Beginners_Guide
這將向您介紹Xen hypervisor,建議配置以設置虛擬機,提供有關網絡的信息,並最終獲得有關管理虛擬機的工具的詳細信息。

本文檔是專門讓Xen的Ubuntu上(最重要的是,它的作品!) https://help.ubuntu.com/community/Xen

===

但是,如果你想要去到一個新的水平,並瞭解工作的Xen; Xen架構,內存管理,設備管理,CPU調度等,我建議您閱讀本書「Xen Hypervisor權威指南」

+0

除了鏈接之外,您能否提供摘要? – rapvelopment 2014-12-14 21:42:51