zoukankan      html  css  js  c++  java
  • 基于KVM的虚拟化研究及应用

    引言

        虚拟化技术是IBM在20世纪70年代首先应用在IBM/370大型机上,这项技术极大地提高了大型机资源利用率。随着软硬件技术的迅速发展,这项属于大型机及专利的技术开始在普通X86计算机上应用并成为当前计算机发展和研究的一个热点方向。目前,虚拟化技术在高校数据中心虚拟化、计算机教学、数字图书馆等各方面都有所应用并取得了较好的效果。文中提出基于KVM的教学平台虚拟化方案设计,较好地解决了使用加密狗作为加密手段的应用虚拟化问题。

    1 KVM虚拟化技术概述

        虚拟化技术能够在一台计算机上运行多个操作系统,每个系统上运行自己独立的应用软件。虚拟化技术可以对这些系统进行有效隔离,对资源进行按需分配,从而保证每个系统的安全性和性能。目前虚拟化技术已经形成从硬件到软件一整套的解决方案。基于X86架构的硬件技术主要是由Intel和AMD提供的VirtualizationTechnology(VT)和Pacifica(AMD—V)虚拟化技术,该技术对处理器进行了扩展,从而实现了处理器的虚拟化。软件方面主要有Vmware公司的VSpare和VmwareWorkstation、Microsofl公司的Hy—per—V和VirtualPC以及Linux系统下的Xen和KVM等。前两个软件是已经商业化的系统,Xen也开始了商业化运作,KVM是免费的开源系统并在迅速发展当中,是目前唯一进入Linux核心的虚拟化解决方案。

        KVM是由以色列的一个名为Qumrant的开源组织于2006年10月提出的基于硬件虚拟化的虚拟机(VirtualMachine,VM)实现方案,2007年2月发布的Linux2.6.20内核第一次包含了KVM。实际上KVM只是虚拟化解决方案的一部分,其底层需要处理器支持,为多个操作系统提供虚拟化处理器,I/O通过QE—MU进行,其架构如图1所示。

      KVM系统架构

    图1 KVM系统架构

        KVM包含内核模块和处理器模块两部分,内核模块kvm.ko提供核心的虚拟化支持,处理器模块kvm—inte1.ko和kvm—amd.ko分别提供了对Intel和AMD处理器虚拟化技术的支持。KVM通过加载kvm.ko内核模块将Linux内核转换为一个VirtualMachineMonitor(VMM,Hypervisor),因此KVM可以随着Linux标准内核的升级而获得性能提升(如调度程序、内存支持等)。虚拟机对应成为标准的Linux进程,因而可以用标准的Linux进程管理机制进行管理。

        在普通的Linux进程有内核模式和用户模式两种运行模式,内核模式表示代码执行的特权模式,用户模式表示代码执行的非特权模式。在KVM系统中为Linux引入了一种新的进程模式,新的模式称为客户模式,客户模式用来执行虚拟机操作系统非I/O代码。在客户模式中包含内核模式和用户模式两种标准模式,VM操作系统可在内核模式下运行标准的内核,在用户模式下支持自己的内核和用户空间应用程序。

        虚拟机操作系统的I/O操作是由修改过的QEMU支持的。QEMU是一种用动态翻译技术实现的快速指令集层虚拟机,它支持整个计算机系统的模拟,包括多种处理器(X86、ARM、PowerPC等)、磁盘、图形适配器和网络设备等。KVM是用硬件虚拟化技术代替了QEMU的动态翻译技术,实现虚拟机操作系统代码直接由硬件处理从而提高系统性能。VM操作系统生成的I/O请求会被截获并转发到用户空间,由QEMU的设备模型来模拟I/O操作,在需要的情况下触发真实的I/O操作。

    2 KVM教学平台虚拟化应用系统设计

        随着经济模式的转变和信息技术的发展,社会对复合型人才的数量和质量要求越来越高。为了适应这种变化,高等教育不断重视和加强实践教学,利用现代计算技术贴近现实成为其中最重要的手段之一。国内大部分院校均已建立起一定规模的实践教学环境,初步建立了教学、科研等各种网络应用系统。这些系统在实践教学秩序的稳定性和教学质量的提升等方面发挥了重要作用。

        一般实践教学数据中服务器拓扑结构如图2所示,其中包括目录服务器、数据库服务器、文件服务器、WEB服务器及专业教学软件应用服务器,部分院校还部署了防火墙、负载均衡等扩展设备,以保证服务器的安全性、高性能和高可靠性。

     实践教学数据中心服务器拓扑结构

    图2 实践教学数据中心服务器拓扑结构

    在实践教学快速发展过程中,各院校的数据中心在建设和管理上也面临着许多困难和问题。

        ①服务器数量越来越庞大,经常是一个建设项目建立一套服务器系统,在此情况下服务器利用率相当低;

        ②服务器资源争夺,有时为了提高服务器利用率,将不同系统部署在同一台服务器上,造成不同应用系统之间的冲突,比如加密狗之间的冲突、端口之间的争夺、环境资源冲突等。虚拟化技术的应用为解决这些问题提供了一条很好的思路。

        2.1KVM技术在虚拟化中的优势

        KVM虚拟化技术具有较强的灵活性,能较好地将不同操作系统和特殊硬件设备加以利用,降低不同系统间维护的复杂度。

        KVM支持VM操作系统种类多,常见的基于X86架构的Windows、Linux、Unix操作系统绝大部分可以稳定运行。

        KVM本身运行在Linux系统内核当中,属于瘦虚拟化方案,KVM本身体积很小,其支持硬件取决于Linux系统本身对硬件的支持。目前主流硬件设备均有对应的Linux驱动,这也就决定了KVM可以在最广泛的硬件系统之上运行。

        KVM可以直接使用指定的硬件设备,如USB端口等。利用此项功能,可以直接将特定应用USB加密狗与运行该应用的VM绑定,从而解决加密狗冲突的问题。

        同时KVM具有优良的系统性能和稳定性,系统更新便捷。

        2.2虚拟化设计的原则

        现有系统的分类整合,对目前应用系统按照技术架构进行分类,分析其应用特性,将类似的系统进行合并服务器处理,以利于将应用迁移到虚拟主机上。对将来要增加的应用系统进行预测,以保证系统的扩展性满足未来的需求。

        数据集中存储,将虚拟机文件及数据库集中存放到存储设备中,实现数据的集中统一管理。

        2.3服务器虚拟化方案设计

        根据现有应用系统的性质将其分为两大类,一类为教学服务器,专门运行教学相关的专业软件。另一类为环境支持系统,包括域服务器、网站服务器、文件服务器。教学服务器平时压力并不大,但是当展开教学活动时,服务器负载会迅速提高鉴于教学系统的特点,将教学系统服务器作为首先进行虚拟化的部分,系统结构如图3所示。

     应用服务器虚拟化架构

    图3 应用服务器虚拟化架构

        将教学系统服务器按资源利用率分为两部分,利用率超过20%的系统将单独设置虚拟机,利用率在20%以下的按照提供服务种类组合在不同虚拟机中。按服务性质将服务分为纯加密保护验证类、B/S应用服务类、C/S应用服务类、自有专用服务类等四类。在教学系统中大量应用使用USB加密狗进行版权保护,为避免加密狗之间相互冲突,将加密狗对应USB端口直接指向对应的虚拟机,使之成为私有端口,不被主机系统和其它虚拟机系统所识别和使用,从而达到消除冲突的目的。

        依据数据集中存储的原则,采用SAN(存储区域网络)集中存储方式,将虚拟机镜像文件部署在SAN共享存储阵列中。当物理主机发生故障时,可通过集群转移或者指定其他物理主机重新运行虚拟机,缩短应用中断时间。

        通过分析应用系统的运行原理,建立分布式数据库,使其与应用分离,数据库集中存储在数据库服务器上。应用采用虚拟机多机备份机制,保证在应用的安全性。对于部分数据库和应用不能分离的业务,采用多级备份的方式,以降低风险发生时造成的损失。

    3 KVM虚拟化应用系统部署

        采用Ubuntu910系统,基于KVM84对服务器进行虚拟化,设置CPU、内存、硬盘、网络等硬件环境,安装操作系统及应用,加载相应USB加密狗,实现从虚拟化平台到软件应用的完整虚拟化解决方案。

        3.1 环境检查及软件配置

        KVM是基于CPU硬件虚拟化基础之上的,在安装KVM之前必须确认CPU支持虚拟化技术。使用cat/proc/cpuinfolgrep-E(vmxIsvn1)命令进行检测,有输出结果说明CPU支持虚拟化。部分服务器默认是关闭虚拟化技术的,需要进入BIOS打开CPU的虚拟化支持。

        Linux内核是从2.6.20版本开始集成KVM,因此Linux内核版本必须在此之上。使用uname—a命令查看Linux内核版本。

        在Ubuntu下安装KVM模块和安装其他软件类似,使用apt—getinstallkvm安装KVM模块并添加到Linux核心。lsmod命令可查看KVM模块是否加载成功,如果未加载成功可以使用命令modprobekvm载入。

  • 相关阅读:
    linux shell 总结
    python小结
    python与execl的读写
    利用burpsuits暴力破解登陆界面
    python之函数的使用
    Sublime text怎么识别input函数
    ping的禁止
    Hbase的配置与使用
    JAVA 利用反射自定义数据层框架
    JAVA实现网页上传头像
  • 原文地址:https://www.cnblogs.com/heidsoft/p/3525655.html
Copyright © 2011-2022 走看看