从哪里开始使用Xen?

Jim*_*mmy 3 xen

我是Xen的新手.我想知道Xen是如何工作的.面对代码时,这真的是一个难题,我不知道从哪里开始.我有一些简单的文章吗?

Hug*_*ler 15

由于您提到查看代码,我假设您想要了解Xen的技术细节,而不仅仅是如何启动VM.

与所有问题一样,从简单的事情开始,然后继续努力.一些指示:

  1. 一定要有先决条件经验.特别是强大的C和Linux亲和力,还有x86分页和虚拟化内存工作.

  2. 确保您掌握了一般的Xen架构.例如,半虚拟化与硬件支持的虚拟化,管理域(Dom0)与非特权域(DomU)等的特殊角色等.

  3. 调查在Dom0中运行的Xen组件:

    • Xen的控制库(libxc)它实现多关于超级调用逻辑的,并增加了围绕这些糖(看看tools/libxc).

    • 管理Xen的瑞士军刀,即Xen光库(libxl).该库用该xm工具替换了已弃用的工具,xl并负责所有维护任务,例如启动/停止VM,列出所有正在运行的VM等.对于所有这些操作,它与上述libxc协同工作.(Libxl住在tools/libxl.)

    • Xenstore的是一个树状的数据结构从所有正在运行的域可以检索和存储数据.这是必要的,因为所有I/O都通过Dom0(而不是虚拟机管理程序!),并且域需要与Dom0通信它们将如何传递I/O. (查看tools/xenstore.)您可以使用诸如此类的工具检查Xenstore xenstore-ls.

    • blkback/ netback内核驱动程序,其在通过数据共享信道给VM.(您将在最近的Linux内核(例如> = v3.0)中找到这些驱动程序,这些内核具有所谓的PVOPS支持).

    • 看一下控制台守护进程(tools/console).请注意,有时实际使用Qemu控制台.如果您为VM选择文件支持的虚拟存储,Qemu还会将图片作为默认后端.

  4. 尝试VM间通信的"Xen-way":授予表,事件通道和Xenstore.有了这些基础知识,您就可以在VM之间创建自己的共享通道.例如,您可以编写一个在两个域中使用的内核模块,让它们相互通信.

  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和管理程序之间任务划分的抽象视图.

最后但并非最不重要的是,强烈推荐David Chisnall 撰写的" The Xen Hypervisor权威指南 "一书.它以完整的技术方式涵盖所有这些主题和更多主题,并提供大量代码示例.

Xen wiki和开发人员邮件列表也是理解Xen的重要资源.

如果您有更具体的问题,那么我可以给您一个更具体的答案.