我是Xen的新手。我想知道Xen是如何工作的。 面对代码时,这真的是一个难题,我不知道从哪里开始。 我有一些简单的文章吗?
答案 0 :(得分:14)
由于您提到查看代码,我假设您想要了解Xen的技术细节,而不仅仅是如何启动VM。
与所有问题一样,从简单的事情开始,然后继续努力。一些指示:
务必掌握先决条件。特别是强大的C和Linux亲和力,还有x86分页和虚拟化内存工作。
确保您掌握一般的Xen架构。例如,半虚拟化与硬件支持的虚拟化,管理域(Dom0)与非特权域(DomU)等相比的特殊角色
调查在Dom0中运行的Xen组件:
Xen控件库( libxc ),它实现了与超级调用相关的大部分逻辑,并在这些逻辑上添加了糖(查看tools/libxc
)
管理Xen的瑞士军刀,即 Xen light 库( libxl )。该库使用xm
工具替换已弃用的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控制台。如果您为VM选择文件支持的虚拟存储,Qemu也会将图片作为默认后端。
尝试VM间通信的“Xen-way”:授予表,事件通道和Xenstore。有了这些基础知识,您就可以在VM之间创建自己的共享通道。例如,您可以编写一个在两个域中使用的内核模块,让它们相互通信。
我还可以在源代码中提供一些指出:
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撰写的“ Xen Hypervisor权威指南”一书。它通过大量代码示例以全面,技术的方式涵盖所有这些主题和更多主题。
Xen wiki和开发人员邮件列表也是理解Xen的绝佳资源。
如果您有更具体的问题,那么我可以给您一个更具体的答案。
答案 1 :(得分:0)
以下是一些指导ZEN启动的链接。希望它们有用。
答案 2 :(得分:0)
对我来说,这是最好的,更具体的教程,有示例和一步一步的开始。我开始时就用它了。
然后,您可以阅读有关Xen文档本身或某些书籍的更多内容,但作为一个允许您轻松安装和测试Xen的起点,我从Debian Wiki中选择该教程。
答案 3 :(得分:0)
如果您只是想要概述,可以阅读:http://wiki.xenproject.org/wiki/Xen_Project_Beginners_Guide 这将向您介绍Xen虚拟机管理程序,建议配置以设置虚拟机,提供有关网络的信息,最后提供有关虚拟机管理工具的详细信息。
本文档是专门针对ubuntu的Xen(最重要的是,它可以工作!) https://help.ubuntu.com/community/Xen
===
但是,如果你想进入下一个级别并了解Xen的工作; Xen体系结构,内存管理,设备管理,CPU调度等,我建议您阅读“Xen Hypervisor权威指南”一书。