主管单位:国务院国有资产监督管理委员会
主办单位:中国电力规划设计协会
国际统一刊号:1671-9913
国内统一刊号:11-4908/TK
版权信息主管单位:国务院国有资产监督管理委员会 主办单位:中国电力规划设计协会 国际统一刊号:1671-9913 国内统一刊号:11-4908/TK 联系我们
|
融合服务器虚拟化和容器技术的设计研究
摘要: 现如今随着计算机技术的迅速发展,云计算、大数据技术的应用,信息化的程度越来越高,而服务器等网络硬件的投入需要大量的资本,而服务器的使用效率却远远小于预期的效果,于是通过服务器虚拟化技术减少企业的信息化设备投入成为企业发展的重点。本文对容器虚拟化进行了介绍,并对容器虚拟化技术进行了设计分析,对服务器容器和虚拟化技术的应用具有一定的借鉴意义。
关键词:虚拟化;容器技术;隔离
一 概述。
虚拟化是通过逻辑的非物理的手段对计算机资源进行表示,从而使这些资源的利用抛开了物理环境的制约,资源的查询和访问可以采用通用方法。该技术通过对计算机资源的抽象模拟,把计算机的硬件资源模拟成虚拟的硬件资源。隔离性、可迁移性以及可整合性是系统虚拟化技术的优势,通过虚拟化技术可以将不同的平台的应用安全可靠的整合到相同的服务器,并且还可将应用在服务器之间快速迁移,从而使服务器的利用率大大提高,使运行和维护的成本降低。[1]
二 服务器的容器虚拟化技术。
全虚拟化和半虚拟化是两种服务器虚拟化方式,大部分的应用都可以满足,但是系统的执行效率由于其强隔离性保障策略而降低。因此对于部分对系统性能和隔离性要求都比较高的场合,虚拟化自身的资源消耗所占系统比重过大。因此基于容器的轻量化的虚拟化技术得到开发利用,容器虚拟化技术在确保服务器性能的同时,可以保证资源共享的高效进行。[2]容器虚拟化结构图如下图所示。
图2.1 容器虚拟化框架结构图
如上图所示,利用容器虚拟化技术,数个虚拟服务器在操作系统中隔离出,每个虚拟服务器就像一个容器为一个操作系统提供运行环境。宿主操作系统的资源由所有虚拟服务器的客户操作系统运行环境共享,虚拟服务器操作系统共用系统内核,只是各自的发行版本不相同。因此,容器虚拟化技术的实现需要对操作系统的内核进行修改,其有点在于可以达到与原始主机相当的运行性能。虚拟服务器不需对硬件资源进行模拟,只需将应用程序和主机进行交互,通过主机的操作系统进行硬件系统的访问。容器虚拟化技术的实施,创建了共享的虚拟化操作系统,该系统由共享的系统库文件、唯一的根文件系统以及程序集合构成。虚拟服务器在使用中,可以和普通系统一样关闭和启动,甚至还可以在几秒的时间内重新启动。将应用和操作系统分离,实现系统资源访问的虚拟化是容器虚拟化技术的关键。让上层应用认为自身在独立的系统中运行,对操作系统实现上层应用的操作可以在同一宿主操作系统的硬件和内核资源中共处。[3]总而言之,容器的虚拟化技术的优点有:
(1)较低的管理成本。由于共用操作系统内核,虚拟化系统的安装、迁移、升级以及运行效率等管理上的成本随着操作系统的减少也降低了;
(2) 响应速度快。由于不需要将整个操作系统重启,虚拟操作系统中的应用可以进行快速的起停;
(3) 使用效率高。由于虚拟操作系统的资源占用较低,从而可以支持更多的应用在每个服务器上运行;
(4)精细的资源控制。容器虚拟化技术的应用程序的隔离采用额外的手段,实质上仍属于资源管理,具有与传统的资源管理软件相同精细的控制粒度。
三 服务器的容器虚拟化技术设计研究。
3.1服务器虚拟化技术。
某处理器的服务器平台原有的虚拟化架构如下图所示。
图3.1 服务器平台虚拟化结构
下面对服务器平台的虚拟化原理从系统CPU、处理器内存以及设备虚拟化进行讨论。
1 CPU的虚拟化技术。
本文研究的处理器具有8个core,每个core最多可同时对8个线程进行处理,因此最多可分为64个物理线程,每个线程可以通过Hypervisor建立一个虚拟CPU,每个VCPU可以对一个线程的实时状态和软件配置信息进行存储,每个VCPU具有三个特权等级:非特权级、特权级以及超特权级。其中,非特权级中运行的是应用程序,特权级中运行的是操作系统内核和固件中的分区软件,超特权级中运行的是Hypervisor。如果操作系统中的软件要对硬件资源进行访问,就要通过Hypervisor的服务进行。硬件分区可以对每个客户操作系统分配VCPU。其他操作系统不能对系统分配专属的VCPU访问,这样的分区叫做逻辑域,相同逻辑域中的VCPU可以通过Hypervisor进行通信,Hypervisor和处理器中对逻辑域进行安全监控和权限控制。
2 处理器内存的虚拟化技术。
本文系统采用分离的内核和用户进程地址空间,并且地址空间是断设备驱动创建的段映射。该处理器的地址机制分为虚拟地址、实地址和物理地址三层。在平台中,应用程序采用虚拟地址寻址,客户操作系统采用实地址和虚拟地址寻址,只有Hypervisor采用物理地址寻址。如果实地址空间被多个虚拟地址共享,则系统会通过ID进行区别。客户操作系统负责逻辑域内的虚拟地址空间的创建和管理,Hypervisor负责实现地址空间的创建和管理。服务器平台的内存管理架构如下图所示,转换旁路缓存和相关寄存器构成了该管理单元。相关寄存器用作TLB、上下文、分区以及页表缓冲块的控制管理。数据段中包含了计算页面和实地址以及物理地址空间的实地址和物理地址以及页长度,标签中的页面需地址和上下文ID 可以对地址的匹配性进行判断。
图3.2 处理器的内存管理框架
3 I/O虚拟化技术
I/O设备的虚拟化采用I/O域完成,非I/O域的应用程序的I/O操作,必须通过Hypervisor的逻辑域信道建立虚拟I/O服务请求完成。其过程为,服务器启动后,Hypervisor参考逻辑域的信息,将总线控制权向I/O域分配。为使I/O虚拟化性能得到提高,I/O域采用内存共享的方式将设备框架映射到请求的逻辑域,逻辑域系统软件可以执行设备的部分读写功能。
3.2 容器虚拟化技术架构的研究设计。
为了弥补服务器平台性能上的不足,我们采用了容器虚拟化技术,并设计了与服务器向适应的容器虚拟化框架,其结构如下所示。
图3.3 服务器平台的容器虚拟化框架
容器虚拟机作为虚拟机的一种具有同质、有效和资源控制的特点。控制和管理容器虚拟机的操作系统具有虚拟环境和物理资源的管理两部分功能。构建虚拟环境和容器间的通讯机制构成了虚拟环境的管理。处理器管理、内存管理以及设备管理构成了物理资源的管理、与此同时,为提高容器虚拟机的可用性,虚拟机还需具有动态迁移功能、从而使物理机的维护和节能变的更加方便。动态迁移机制奠定了大规模虚拟机集群的容器虚拟机资源动态调度的基础,动态迁移机制的引入,使得在虚拟机数量较少或者负载率较低的情况下,集群系统能够将正在运行中的虚拟机迁移到特定的几台物理机上,然后停止空闲的物理机,这样有利于节能降耗,提高设备的利用率,同时又使集群负载实现平衡。[4]
本文将容器虚拟机的框架核心设计为隔离模块、资源管理模块以及动态迁移模块三部分。其中容器虚拟化框架的核心在于隔离模块和资源管理模块,其担当了资源调度、资源分配和资源管理的任务,确保了容器之间的隔离运行。容器虚拟化框架使得服务器在具有常规虚拟机的应用隔离特点外,其资源管理能力也比较强,可以适应不同应用程序的动态变化需求,使得负载的平衡得到实现,确保了系统的高可用性。在容器虚拟化框架中,平台操作系统实现容器虚拟机的管理、调度参数的控制以及分配物理内存,并对网络设备和磁盘的访问权限进行控制。
1 容器虚拟机的隔离模块。
容器虚拟机框架在服务器平台上建立多个相互隔离的容器,隔离模块用于系统容器的建立,可以建立和宿主操作系统相同的执行环境。包括主机名称、文件系统、网络、设备、安全措施以及系统资源等。在本文的容器虚拟化框架中,容器目录的隔离采用chroot系统,该系统机制创建全新的文件系统根目录。通过建立独立的上下文环境,实现每个单独用户空间的隔离。本文进程的隔离采用 Linux namespace机制实现,从而促使所有容器的上下文完整,在隔离实现的进程中,我们为所有容器伪造了init进程,用做容器下其他系统进程的创建和启动。其域系统的init的区别在于,该进程不存在调度工作,宿主操作系统内核的调度程序承担了容器中的所有的进程调度工作。资源隔离模块负责容器内部进程命名空间和服务虚拟化隔离的任务。所有容器的进程是完全隔离的,隔离杜绝了容器中进程的非法监控,同时也避免了容器中进程的相互影响,在这种情况下,即使超级用户权限的进程也没有查看或影响其他进程的权限。[5]资源隔离模块使客户操作系统对物理硬件的依赖减少了。在资源隔离的过程中,相同容器的进程的通信可以通过IPC进行,但不同容器的进程通讯只能利用物理或虚拟网络实现,访问直接跨越虚拟环境是被禁止的,这样即使有错误发生,也不会对其他容器造成影响。
2 容器虚拟机的资源管理模块。
资源管理模块的功能主要有资源的分配、限制以及控制。通常容器下的资源管理中,操作系统的进程管理分为容器资源的管理和容器进程的资源管理。对容器的管理是对一组进程的管理,通常需要内核的支持完成进程的管理,我们引入Beancounter机制执行容器资源的分配管理。在容器虚拟化框架下,本文把CPU资源调度、磁盘分配以及I/O设备按两级分配,并采用公平的分配、调度机制。
3 容器虚拟机的动态迁移模块。
随着大数据和云计算的迅速发展,虚拟机的数量不断增多,大规模的虚拟机集群出现。在这种情况下,虚拟机的数量和负载是变化的,会随用户的需求而不断变化,所以,如果资源的分配采用静态的方式进行,则会造成资源的梁飞或者资源不足的现象发生;而人工调整往往有存在较大的滞后。为提高系统的可用性,确保虚拟机的负载平衡,我们在容器虚拟化框架中加入了动态迁移机制。动态迁移使得资源的分配出现不平衡时,使虚拟机在运行状态下在物理机之间快速迁移。动态迁移模块的主要功能在于容器状态的恢复和进程检查点的支持。通过对在约定时间内进程检查点保存虚拟环境进程状态的设置,使得一旦有服务器宕机或者负载不平衡的情况出现时,可以将虚拟环境的另一服务器恢复运行,从而使得系统的可靠性得到提高。[6]动态迁移模块主要负责原有运行环境的恢复和运行现场的保存。原有运行环境的恢复主要有容器映像的读取、进程的创建、进程地址空间的恢复等等;现场保存首先把需要保存的容器进程挂起,将进程的执行状态保存。
四结论
服务器的虚拟化有助于企业IT基础设施的资金投入,使企业的运行成本得到降低,而容器虚拟化技术使服务器的使用率得到提高,具应用前景更为广阔。本文对平台虚拟化虚拟化技术进行了介绍,平对常规的虚拟化技术从CPU虚拟化、内存虚拟化以及I/O虚拟化三方面进行了介绍,然后本文对容器虚拟化技术进行了分析,设计了由资源隔离模块、管理模块以及动态迁移模块组成的容器虚拟化框架结构,并对机构框架的三个组成模块进行了分析,对容器的虚拟化技术设计研究具有一定的参考价值。
参考文献:
[1] Ebcioglu K,Altman E,Gschwind M,etal.Dynamic Binary Translation and Optimization[J].IEEE Transactions on Computers,Jun 2001,50(6):529-548.
[2] Barham P,Dragovic B,Fraser K, Hand S,Harris T,Ho A,Neugebauer R,Pratt I.and AWarfield. Xen and the art of virtualization[C]. In 19th ACM Symposium on Operating Systems Principles,Oct 2003:164-177.
[3] 王庆波,金津,何乐,赵阳,邹志东,吴玉会,杨林.虚拟化与云计算[M].电子工业出版社.2010.
[4] Smith,J.E.,and R.Nair.虚拟机:系统与进程的通用平台[M].机械工业出版社,北京.2009. |