一 项目背景
为公司其他部门提供的虚拟机运行在Vmware,Citrix的产品上,它们各自都是由相应的客户端管理虚拟机。为了能够通过WEB方式对虚拟机进行统一化管理,我们开始寻找已有产品的官方解决方案,但是Vmware,Citrix官方的虚拟化WEB管理工具都是需要付费购买。本身Vmware,Citrix的产品也不是开源的,从公司的利益以及其他技术方面的角度考虑,我们将采用开源的虚拟化平台软件来完全更换现有的商用虚拟化平台软件。
二 开源虚拟化管理程序的选用
熟知的开源虚拟化管理程序有XEN和KVM两种。 1.XEN介绍 XEN是一个开放源代码的虚拟机管理程序。由剑桥大学开发,它打算在单个计算上运行多达128个具有完全功能的操作系统。在旧的处理器上运行XEN,操作系统必需进行显式地修改以在XEN上运行。这使得XEN无需特殊硬件平台支持,就能达到高性能的虚拟化。 XEN通过一种叫做半虚拟化的技术获得高性能的表现。在比较旧的硬件平台上,没有CPU的虚拟化支持,XEN可以通过半虚拟化获得比较高的性能。半虚拟化使用虚拟机管理程序分享存取底层的硬件,但是它的客户操作系统集成了虚拟化方面的代码,该方法无需重新编译或引起陷阱,因为操作系统自身能够与虚拟化管理程序进行很好地协作,半虚拟化技术的优点是性能高,特别是I/0方面,但是操作系统需要进行更改,用户体验方面不强。 XEN也支持全虚拟化技术。全虚拟化技术也称为原始虚拟化技术。它使用虚拟机协调客户操作系统和原始硬件。全虚拟化最大的优点是操作系统不需经过任何修改,但是性能方面不如半虚拟化。 2.KVM介绍 KVM全称是Kernel-based Virtual Machine,即基于内核的虚拟机。KVM项目代表下一代开源虚拟化。该项目的目标是通过建立在先前的技术和充分利用当今的硬件条件下创造出一个现代的虚拟化管理程序。KVM以一种可加载模块的方式移植到linux内核中,它将linux转换成一种可以裸机安装的虚拟化管理程序。KVM项目已证实有两种关键的设计原则帮助它迅速地成为一个可靠的,高性能的虚拟化管理程序,并且凭借这两点它打败了其他开源虚拟化管理程序。 首先,因为KVM是在硬件支持虚拟化出现后被设计的,所以它没必要植入特有的硬件所提供的特性。KVM虚拟化管理程序需要CPU支持Intel VT-X 或者 AMD-V,然后通过CPU的这种特性来虚拟出CPU. 通过需要硬件支持而不是尽可能的优化硬件,KVM可以设计出一种以优化好的虚拟化管理程序解决方案,而不需要安装以支持旧的硬件的软件包,或者需要修改客户机操作系统。 其次,KVM项目组尊崇一条格言,”不做重复发明”。为了能够虚拟出CPU和内存,虚拟化管理程序需要许多组件,例如,内存管理器,进程调度器,I/O堆栈,设备驱动程序,安全管理器,网络堆栈。实际上,虚拟化管理程序是一个特别的操作系统,区别于实际的操作系统在于,它是为了运行虚拟机,而不是应用程序。因为Linux内核已经包含了一个虚拟化管理程序所需的核心组件,所以没必要从头开始写所有的组件。KVM项目组在2006年11月向Linux 内核社区提交了KVM的代码,并且在2007年1月,KVM将被包含在Linux 2.6.20 内核中。 除了得到社区的支持外,KVM还得到一些软件行业先锋的支持,包括Red Hat, AMD , HP ,IBM, Intel, Novell, Siemens, SGI等。 3.XEN和 KVM的对比 是较早出现的虚拟化技术,XEN是”第一类”运行在裸机上的虚拟化管理程序,也是当前许多商业化公司的基础技术。 XEN XEN的优点 作为开源的虚拟化技术,对比XEN和KVM可以看到,XEN的优势在于:更好的可用资源,平台支持,可管理性,实施,动态迁移,和性能基准。 可用资源:XEN比KVM早出现4年之久,随着Citrix,Noverll,Oracle等在市场领域的实施,比较容易找到精通XEN的IT技术人员。 平台支持:XEN在新版中支持更多的主机和客户机操作系统。 可管理性:有调查显示,对比XEN和KVM,XEN有更广泛的第三方配给,备份,存储管理,P2V,容量规划,性能监控,进程自动化,安全等。 实施:XEN的运行和管理都是在较低级别的(Ring 0)。对于新建的虚拟机,客户机不像KVM那样共享内存块,CPU指令或者任何底层的Linux操作系统。 KVM的优点 即使没有实施广泛的XEN和KVM性能基准研究测试,仍然有足够的理由说明Linux的领导者(Red Hat 和 Ubuntu)对待KVM的态度的原因。其中最重要的原因就是KVM是Linux内核中的一部分,而XEN只是运行在Linux内核下的一个产品而已。之所以这一个原因很重要,是因为在过去XEN工作环境的补丁包不能够和Linux内核兼容,但是实施KVM的话,这个问题就可以得到解决。另外一个选择KVM的原因是KVM在Linux内核内部部署,这样可以很容易控制虚拟化进程。 XEN 的拥护者声称KVM不如XEN技术成熟,并且缺少某些关键特性,如动态迁移和半虚拟化支持。XEN工作环境中的泛虚拟化技术可以使虚拟机的操作更加高效,因为半虚拟化技术直接硬件硬件进行交互。然而使用半虚拟化技术需要修改操作系统,默认Windows的安装不支持半虚拟化技术。至于动态迁移,KVM也可以做到,只要安装正确的版本就行。 从另一角度来说,KVM更加灵活。由于操作系统直接整合到Linux内核的虚拟化管理程序中,在任何场景下都可以直接和硬件进行交互,而不需要修改虚拟化的操作系统。这一点对虚拟化运行来讲KVM是一个更快的解决方案。KVM需要CPU具有物理地址扩展功能,这将不是问题,因为现在大多数服务器的CPU都具有此功能。 作出选择 基于以上分析,结合现有硬件条件以及其他各方面因素综合考虑,我们将采用KVM作为虚拟化管理程序来大量部署。三 开源虚拟化管理程序WEB管理工具的选用
基于项目的需求,我们渴望选用一款优秀的软件,能够通过WEB方式对虚拟机进行方便的管理。我们期望它具有以下几个要点: ●最好是免费开源的,如若要收费希望费用是比较合算的 ●界面比较友好,能够通过 WEB对虚拟机进行部署,开机,关机,重启,备份,迁移,远程桌面查看等 ●最好是能够具有多用户权限,能够进行多用户管理。 ●能够清晰明了的查看虚拟机宿主机的状态,包括 CPU使用率,内存使用率,能够查看虚拟机的CPU使用率,内存使用率。 ●可以基于模板的方式部署虚拟机。 ●提供二次开发接口,方便以后作二次开发 ●较好的安全机制,能够安全的通过 WEB连接。 ●扩展性要强。 从 KVM的官方网站上可以看到基于WEB方式的管理工具还是有很多,例如,RHEV,Proxmox VE,ConVirt,oVirt,OpenNode,openQRM,CloudStack等。经过了解和测试,最终我们选出两种相对比较优秀又是开源产品的管理工具,ConVirt和CloudStack。 1.CloudStack介绍 CloudStack是一个用Java编写的开源软件,它被设计成一个能够部署和管理由虚拟机构成的大型网络,高可用,可扩展的云平台。CloudStack目前支持大部分流行虚拟化管理程序,Vmware,Oracle,KVM,XenCenter和XEN云平台。CloudStack提供三种管理方式,易用的WEB接口,命令行和功能强大的RESTful API。 在测试过程中,发现CloudStack不能支持本地存储和通过本地ISO镜像来部署。CloudStack是采用第一存储设备来存储虚拟硬盘,第二存储设备来存储ISO镜像和虚拟硬盘备份。CloudStack支持以模板方式安装虚拟机和ISO镜像安装虚拟机,使用ISO镜像来安装需要通过HTTP方式从服务器上下载到第二存储设备,但是速度相当慢,基于这些原因我们将不采用CloudStack。
历史数据分析
异步任务执行引擎