龙念
(武昌工学院 湖北省武汉市 430000)
云计算要实现为客户灵活提供信息技术资源及各类型特色服务,需要在虚拟化技术的技术支持下才能够实现,这也使得虚拟化技术成为当今IT 业界研究的重点内容。当前社会的飞速发展进一步提升了网络终端设备的应用量及应用深度,这在教育、金融、政务等各个领域内都有所体现。然而当前传统PC 操作所面临的数据安全、管理成本及设备损耗等问题急需得到有效解决,这就使得以KVM、IDV 为代表的桌面云服务端设计得到了应用空间[1],以上两种技术能以“集中管理、分布显示”的原则耦合用户显示终端与桌面应用环境,进而为用户创造了随时随地接入相应工作状态的条件,使得软件系统的安全性与硬件系统的利用率得到可靠保障,为IT 业界的发展乃至整个社会运行效率的提升创造了独有价值。
信息技术应用至今发展出了为数众多的虚拟化技术,较为典型的包括虚拟桌面技术、虚拟服务器及虚拟应用技术等。其中虚拟桌面技术是对平台进行的虚拟化处理,其原理是在软件环境、硬件及用户之间增加虚拟层,也就省略了考虑计算机实际物理特性的需求,本质上是借助虚拟计算环境完成各类型工作。相比传统PC 操作而言,虚拟桌面呈现出可控性强、成本较低、安全系数高的桌面环境,同时也具有面向PC 并能够集中其他终端应用的优势,因而成为当前信息技术的开发研究重点内容[2]。当前应用虚拟桌面技术的策略为数众多,包括KVM、IDV 等诸多类型。
KVM 技术属于众多虚拟化技术之一,该技术能够实现x86 硬件平台完全重现Linux 操作系统的彻底虚拟化。作为当前最流行的虚拟化产品之一,KVM 虚拟化技术本身具有开源的特征,因而能够适用于包括Linux、Windows 在内的多种操作系统。KVM 在技术原理上应用了宿主型虚拟化模型,是首个以Linux 内核为基础的hypervisor,这意味着KVM 平台运行的虚拟机得以应用Linux 的系统、进程管理机制,这种功能使得虚拟机能够表现出类比宿主机甚至超越宿主机的性能。但需要注意的是,KVM 本身并不具有绝对的完整性,其模拟器工作需要在虚拟化模拟器(QEMU)的帮助下完成,但虚拟化模拟器本身工作效率尚处于不甚理想的状态,因此需要加入额外的应用编程接口API(即Libvirt)来实现相关功能。
IDV 是一种以服务器为基础的计算模型,在借用传统瘦客户端模型的基础上,能使管理员与用户在获得完整PC 机操作体验的同时实现数据的托管便于统一管理。IDV 诞生自VDI 这一技术,由于大部分桌面虚拟化方式需要投资建设主要基础设施,对终端用户性能与移动办公性能有很高要求,这导致需求服务器托管的VDI技术面临着很多部署方面的难题,且其成本也十分高昂。英特尔公司在发现这一问题后提出了IDV 这一完全革新的框架。相比VDI所有数据高度集中的特点,IDV 主要以分布式方法满足运营技术需求,并对管理及部署功能进行了有效简化。
通过构建数据中心,能够将有关计算资源实行集中管理,以此降低客户端硬件配置,利用各种移动终端改变以往桌面接入的方式,无论是从部署方式还是接入方式都为用户带来更多便捷。
通过虚拟化技术能够生成各种虚拟机模板,有关管理员可以结合实况采取克隆的方式,开展批量部署工作,以此提高系统管理效率,降低系统运营成本。在相关硬件建设方面,需要将建设重点放在服务器端,通过部署云桌面的方式节省客户端成本,降低系统运行时的能耗需求。
通过桌面云服务端能够实现集中化管理,实现批量化操作,这样一来能够有效简化软件安装、更新及优化升级等操作。此外,还能够合理分配系统资源,通过动态调整的方式,对网络资源、系统计算资源等实时调整,提高资源利用率。
通过应用桌面云可以根据系统运行实况,制定科学合理的系统安全策略,以此加强桌面的安全性。有效控制用户下载行为、拷贝行为等。在数据存储方面,能够通过大数据技术有效保障数据安全,为用户提供良好的使用体验。
以Libvirt 与QEMU-KVM 为基础架构的虚拟桌面能够解决智能移动终端面临的服务端问题,解决的方法是由虚拟资源池在Libvirt 工具库的技术支持下,构建起以QEMU-KVM 为基础的机器集群,随后spice 协议能够作用于虚拟桌面的形成并向终端用户交付,并以自身为方式与终端用户进行通信,进而达成虚拟桌面相关资源的传输,而用户对虚拟桌面的控制也需由cilent 借助spice 协议完成。另一方面,QEMU-KVM 还能够作用于资源池管理系统的完成与完善,在TCP/IP 协议建立起有效连接之后,Libvirt 库能够帮助用户进行对各类型物理资源与虚拟资源的监控与管理[3]。这样一来,混合型虚拟桌面服务端就能够在资源池管理系统与虚拟化资源池的共同作用下完全形成,并具备为上层应用提供底层服务的功能(在统一标准化API 的协助下得以实现)。其系统架构示意图如图1所示。
图1:虚拟桌面系统架构示意图
KVM 虚拟化技术本身在性能上已经能够达到很高水准,然而其应用的操作系统本身是针对物理操作终端的需求开发的,因此放在虚拟机上加以运行必然会表现出一定的冲突及不适应性,针对这种情况就需要对系统进行进一步的优化,因而对优化策略的探讨同样很有必要。
虚拟地址到物理地址的转化是内存虚拟化的关键。对于KVM和IDV 来说,要实现这一点可借助影子页表或是拓展页表两种技术。最初分别由Guest 与Host 分别维护的虚拟内存页表地址与物理内存页表地址并未建立起映射关系,而影子页表则能够利用页故障生成一个异常情况,并使这一异常情况游离于KVM 的执行流程之外,这样一来KVM 与IDV 的异常执行程序就能够有效捕获此异常并加以处理,随后以处理结果对影子页表进行填充,进而实现客户机操作系统虚拟地址到宿主机操作系统物理地址的映射与转换[4]。但需要注意到的是,影子页表虽然能够简化地址转换过程,但如果出现读写错误或是Guest 页表完整度不足的情况,均会产生VM exit 的情况,这种情况会导致内存虚拟化的效率出现显著下降。处理这一情况的方法是在KVM 与IDV 中应用高效的虚拟机-主机内存管理方法,如EPT,确保内存虚拟化得以实现。
IDV 与KVM 中的内存在一定程度上允许过载使用情况的出现,其目的在于节省内存消耗,在具体的方法上是由KVM 向Guest分配的内存总数超过物理实际可用内存数量。通常情况下无论是Guest 或是Host 都不会完全使用所有的内存,因此理论上应用内存过载使用的方法是行得通的。常见的执行方法包括内存交换、页共享、内存气球等,而在上述方法中内存交换具有最高的完成度与成熟度,因此这一方法的应用更加常见。
以内存交换的方式执行内存过载使用,需要建立在交换空间能够满足Guest 与Host 所有进程所需内存的基础上,也就是说交换空间与物理内存空间要超过(最起码要等同)所有配置给Guest 的内存总和,如果达不到这一要求,Guest 各进程内存在同时到达高使用比率时很可能因为内存不足导致Guest 被强制关闭。
KSM 技术是指内核相同页面合并技术,该技术本身是一个Linux 的内核模块,在功能上能够满足多个不同进程与KVM 及IDV 虚拟机共享匿名内存的需求。通常情况下虚拟化环境中应用相同操作系统的虚拟机为复数,这就导致大量相同页的出现,而KSM 则能够找出其中的相同页,并应用稳定树(包含已共享的匿名页)与不稳定树(包含被检测到但未共享的匿名页)结合的方式进行优化,优化的作用在于增加页面共享的概率并有效降低不稳定树的不稳定性[5]。以x86 架构的体系结构为例,此架构下的体系结构多以4096 字节为一个单位,这意味着找到相同页面的成本是memcmp 的成本与树级数的乘积,即使是在最不理想的情况下(两个页面前4092 个字节都相等,但最后4 个字节不同),KSM 树算法的性能也不会出现大幅下降。
要实施基于KVM 与IDV 的虚拟桌面架构,需在硬件方案及系统配置上同时满足其需求。硬件方面由于KVM 对计算机配置有较高需求,因此进行选择时需考虑到实际使用的规模,共享服务器能够满足一般小规模的使用要求,而硬件选择则需要硬件能够支持虚拟化服务器与云终端两种,其中云终端硬件必须支持spice 协议。系统配置上需要服务器能够运行QEMU-KVM 的软件,进而为服务器虚拟化功能提供支持,另外还要安装Libvirt 响应远程管理需求。由于虚拟化平台以虚拟机的管理为核心内容,因此项目设计过程中需确保虚拟机平台在设计过程中能考虑到包括系统类型在内的多方面内容,以使系统运行的各种具体要求得到满足。
完成以上准备工作后进行测试,测试内容为对比基于KVM与IDV架构的桌面云服务端和当前具有很高应用率的VMware 虚拟机系统,将内存使用率作为两种虚拟化环境下的微观性能指标。从测试结果上来看,VMware 虚拟机的性能表现出10%-20%的平均优势,但考虑到KVM 与IDV 架构桌面云服务端的特征,会发现后者的优势体现在以下三方面:首先后者开源而前者不开源,因此后者具有更强的灵活性与可扩展性;其次后者表现出更高的内存使用效率与稳定的CPU 利用量;最后后者作为内核的一部分,能应用内核本身的优化与改进将标准内核转换为系统管理程序。
云计算技术在近年来得到了长足的发展,也使得虚拟桌面技术逐渐得到广泛的应用。基于KVM与IDV架构的桌面云服务端代表了虚拟桌面技术发展的前沿水平,不仅实现了成本的节约,也遵循了绿色可持续发展的需求,因此其科研工作理当得到大力的研究与推进。