2012-07-20 62 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