Xen API简介

来源:互联网 发布:按键精灵免费网络验证 编辑:程序博客网 时间:2024/05/01 07:19

Xen提供两种接口:一种是由客户机使用的,一种是由工具使用的,前者就是熟知的Hypercall,后者被称之为Xen的API,有时候也被称之为Xen的管理API,Xen的API构建在XML-RPC之上,完整的API规范超过100页。Xen的API被用户空间组件使用,比如用来控制系统的xm命令行工具,Xend后台进程监听XML-RPC连接并执行一些管理功能。

  1. XML-RPC
    和绝大多数程序设计语言一样,XML-RPC定义了少量的元数据类型,然后允许他们结合起来形成符合数据类型。和Xen相关的有 int double,boolean,dateTime。这些走在抽象API中被用来标识int,float,bool,Datatime.这里就不在详细赘诉,感兴趣大家自行谷歌。

  2. Xen 的接口层次
    这里写图片描述

  3. xend的功能
    Xen后台程序负责在其他用户空间工具和内核接口直接提供接口。应为Xen的Hypercall只能运行在特权级别。内核导出一个具有标准接口的设备,由后台程序作为普通文件打开。Xend 的一个主要任务是访问控制。在本机上,这是通过和后台连接的套接字或者其他任何文件设置权限来确保访问特定的用户或者ubei的访问权限。不是所有的管理功能都需要直接和Hypervisor打交道,其中一些比如启动克重寻你驱动的后端,完全发生在用户空间,或者一些通过授权表建立的共享内存区域的少量的Hypervisor交互。如果xend完全建立在内核中,完成其中很多功能可能会非常空难。把xend设计为一个用户空间工具的另外一个主要原因是它使得将其他操作系统一直未Domain0变的更加加单。

  4. Xm命令行
    Xm(xen master)命令管理Xen的最简单方式,程序本身使用Python编写,每一个命令在一个单独的源文件中实现。Xen 3.1之前,xm是控制xen的唯一方法。

  5. Xen CIM提供者
    在为Xen开发稳定的API背后的一个驱动力就是最求适应不同管理接口的能力。通用信息模块(CIM)正是符合这一要求的接口。CIM指的是一组管理工具定义接口的标准。它们不局限于虚拟化,被广泛的用于一些管理任务,比如管理复杂的存储环境,简单讲,CIM提供者只是一种语言绑定,不同于libxen和pyxen等其他绑定,CIM提供者在Xen API 和另一种域先关非常高层语言之间转换。尽管用户可以使用C写一个使用libxen的工具,也可以使用自己悬着的一种通用编程语言编写和CIM提供者交互的东西。

  6. CIM VS libvirt
    咋看起来,CIM和libvirt似乎有相似的目的。二者都为编写工具提供了hypervisor无关的抽象层。但他们有一些大的区别:CIM是一个抽象模型,基于XML的重新表述,并且以语言无关的方式使用。相比之下libvirt非常精密的和C绑定。另外一个大区别在开发模型上。CIM标准的相关部分正在由一个代表多个接口。它任然更加贴近于Xen的处理方式。它也只是被设计来管理本机的虚拟化环境,而CIM管理工具通常被用来组织大量的计算机和其他设备。最后CIM是一个大的规范,虚拟化相关的部分相对来说较少。为一个支持CIM的管理工具添加旬计划的支持相对简单。

  7. Xen API类

这里写图片描述

0 0