热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

落在实处虚拟化技术应用

文章标题:落在实处虚拟化技术应用。Linux是中国IT实验室的一个技术频道。包含桌面应用,Linux系统管理,内核研究,嵌入式系统和开源等一些基本分类

    早在大型机时代,IBM的VM/370就采用虚拟化技术来划分其硬件资源,提供给多用户使用。现在,x86服务器已成为企业应用的主流,探索x86服务器的虚拟化技术成为各个企业和研究机构的重要课题。

    技术篇不同层次的虚拟化技术近年来,服务器虚拟化技术逐渐成为人们关注的热点技术。伴随着多年来人们对虚拟化技术的研究,形成了不同层次的虚拟化技术,其中有ISA层次、硬件抽象层、操作系统层、Library API层,以及编程语言层的虚拟化技术。

    1.ISA层的虚拟化技术ISA层的虚拟化技术,通常采用软件模拟指令集的方式实现。一个典型的计算机系统由处理器、内存、总线、硬盘控制器、时钟、各种I/O设备组成。ISA层的虚拟化软件的实现方式是截获客户操作系统发出的指令,并把它们“翻译”成Host平台上的可用指令进行执行(包括处理器内部指令和IO指令)。由于这种指令的模拟方式,ISA层的虚拟化技术可以完全模拟一台真实机器所能做的一切。这种实现方式的好处在于,分离了操作系统和硬件平台的紧绑定关系。

    这方面具有代表性的系统有很多。Bochs是用C++语言编写的开源的x86平台的PC模拟器,可以方便地在多种平台上模拟IA32 PC系统。它能够模拟多种版本的x86系统,如386、486、Pentium、Pentium Pro、SSE、SSE2等指令。Bochs解释客户系统从开机到关机的全部指令,模拟了Intel x86 CPU、BIOS以及PC设备。因此,在客户操作系统看来,就好像是运行在一台真实的机器上一样。虽然Bochs系统的性能问题,使其很难有广泛的应用,但它也在某些方面有着重要的应用,如在非x86平台上运行Windows系统,进行新开发的操作系统的debug工作,进行老式x86系统的兼容性测试等。

    QEMU是一个采用动态翻译技术的快速的模拟器,它支持两种工作模式:用户空间模拟和全系统模拟。在用户空间模式下,QEMU可以在物理CPU上执行为其他CPU编译的程序。在全系统模拟的模式下,它支持模拟x86、arm、PowerPC、Sparc等结构。它可以快速地把客户操作系统的指令动态地翻译成本地指令进行执行。其动态翻译过程的基本思想是把每条指令分解成少量的简单指令。每条简单指令由一段C代码实现,通过动态代码生成器把这些简单指令的目标文件连接起来,构建指定的功能。它把基本块作为翻译的基本单位,并采用16M的指令翻译Cache. 2.硬件抽象层的虚拟化技术硬件抽象层的虚拟化技术,利用客户系统环境和Host平台的相似性来减少理解客户系统指令的延迟。目前,大多数的商业服务器虚拟化产品,都是通过使用这种技术来实现高效、实用的虚拟化系统。虚拟化软件进行从虚拟资源到物理资源的映射,并利用本地物理平台进行实际的计算。当虚拟系统访问关键的系统资源时,虚拟化软件接管其请求,并进行相应的处理。为了使这种机制能够有效地工作,虚拟机必须能够trap每条特权指令,并使得VMM接管进行相关的处理。这是因为,在同一个物理平台上有多个客户系统存在,这些客户系统发出特权指令希望CPU进行处理。这时把这些指令trap到VMM进行处理,以免系统发生异常或冲突。此时,VMM模拟特权指令的执行,并返回处理结果给指定的客户虚拟系统,保证了各个客户虚拟系统的有效隔离。然而,x86平台并不是完全支持虚拟化的,因为某些x86特权指令在特权级不够的情况下执行,并不能方便地产生trap.对这一问题的解决方案有:一种是指令扫描结合动态指令修改的软件技术,有许多商业的虚拟化产品采用了这种方案;另一种方案是修改x86 CPU,使它支持虚拟化,也就是Intel的Vanderpool技术和AMD的Pacifica技术的目标。此种虚拟化技术的代表 产品是EMC公司的VMware. Microsoft的Virtual Server系列产品。Microsoft的Virtual Server 2005来源于2003年收购Connectix的虚拟化技术。这是一种类似于VMware Workstation结构的虚拟化产品。除了虚拟化的功能外,还有两种特色的功能:undo磁盘功能可以使用户方便地undo客户虚拟系统之前对磁盘的操作,有利于某些情况下的数据恢复;另一种特色技术是二进制翻译,它可以在基于Macintosh的机器上提供x86的虚拟机。但Virtual Server产品其对操作系统种类的支持不是很广泛,主要支持Windows和Linux客户虚拟系统。Linux系统还不能做为Virtual Server的Host平台。

    Xen是最初由剑桥大学计算机实验室发起的开源虚拟机项目。它的开发得到了Intel、HP、IBM等公司的支持。Xen是在x86平台上支持同时运行多个虚拟系统的高性能VMM.它支持x86_32、x86_64、IA64等多种平台,并支持Intel Vanderpool和AMD Pacifica技术。它采用para-virtualization的技术,也就是需要对客户虚拟系统的内核进行适当的修改,使其能够在VMM的管理下尽可能地直接访问本地硬件平台。Xen利用Para-virtualization技术降低了由于虚拟化而引入的系统性能损失。

    Xen的Para-virtualization技术的主要内容是:对于内存分段管理的虚拟化,要求客户操作系统对硬件分段描述符的更新由Xen进行验证,这也就要求客户操作系统不能有高于Xen的特权级别和不允许访问Xen的保留地址空间;对于内存分页管理的虚拟化,要求客户操作系统可以直接读硬件页表,但对页表的更新需要Xen进行验证和处理,Xen支持客户虚拟系统可以分布在不连续的物理内存上;对于客户虚拟系统,其只能运行在低于Xen的特权级别上;客户虚拟系统需要注册一个异常(Exception)处理函数的描述符表,直接支持Xen的虚拟化;客户虚拟系统的硬件中断机制被Xen中的Event处理机制代替;每个客户虚拟系统都有自己的时钟接口,并且可以了解真实的时间和虚拟的时间;客户虚拟系统通过异步I/O rings的内存区域和外部设备(网络、硬盘)来传递数据,采用事件处理机制代替硬件中断通知机制。

    目前,Xen作为高性能的虚拟机软件,越来越受到业界的关注。它可以为企业的生产系统所使用。

    UML(User Mode Linux)是让一个Linux作为一个独立进程,运行在另一个Linux上的开源项目。它是一种在同一时间运行多 Linux 的安全方式。每个进程都独立于其他进程,这非常安全。例如,在同一机器上进行多种测试和开发而不互相干扰,如果一些测试进程被损坏,并不会影响宿主系统或者开发进程。

    与VMware等实现方式不同,UML不需要额外的虚拟化软件。它只需要在Linux Kernel源码上打上相关的补丁。UML的补丁把Linux标准内核转化成一个可以作为独立进程执行的操作系统。当运行UML kernel时,需要指定一个文件系统给其使用。此时,我们就有了一个独立的Linux系统。新的系统内核作为一个用户空间的应用运行。UML内核接收来自应用的系统请求,然后发送Host内核进行处理。由于客户虚拟系统的内核和进程在同一地址空间内,因此,需要把内核的代码和数据段放在虚拟系统进程通常不会使用的地方。由于每个虚拟系统的进程通过Host内核获得,为了让虚拟系统进程共享虚拟系统内核的数据,虚拟系统内核数据被映射到一个文件,然后这个文件被映射到虚拟系统的进程。目前,UML的一个主要应用是进行系统软件的调试和测试。

    硬件抽象层的虚拟化技术有着高度的客户虚拟系统的隔离性(包括客户虚拟系统之间,客户虚拟系统和Host系统之间)。这种隔离性使得在同一个物理平台上,可以同时运行不同类型的操作系统,而且它们的重启等操作不会互相影响。在用户看来,隔离性使得物理平台被划分成不同虚拟机器。由于用户面对的是虚拟机器,用户需要更多的系统安装和配置工作。如果用户希望客户虚拟系统有和Host相同的操作系统,并只是想把多个应用系统进行分离,那么可以考虑采用操作系统层的虚拟化技术。

    3.操作系统层虚拟化技术典型的应用程序环境包括:操作系统、用户函数库、文件系统、环境设置等。如果应用系统的这些周边环境保持不变,应用程序自身是无法区分是运行在物理系统内,还是运行在虚拟系统外。操作系统层的虚拟化技术的主要思想在于,在Host操作系统上动态复制操作系统环境,以此来创建虚拟系统环境。

    Jail是FreeBSD系统上的操作系统层虚拟化技术。它可以把操作系统划分成多个独立操作系统环境,称之为Jail.每个Jail内都包含典型的操作系统资源,如进程、文件系统、网络资源。在Jail中的用户会发现,其资源访问范围被限制在Jail内。Jail是通过Jail系统调用创建的,Jail内的第一个进程的所有子进程都属于该Jail.任何一个进程不能同时属于多个Jail.Jail虚拟化技术在隔离应用程序方面有一定的应用价值。

    Virtual Private Server(VPS)技术把服务器的操作系统环境,分割成多个彼此隔离的系统环境,称之为VPS.管理员可以给每个VPS分配指定数量的内存、CPU、网络带宽等资源,还可以支持从物理服务器到虚拟环境或物理服务器之间,进行客户虚拟系统的迁移。VPS技术在网站的服务器整合,提高资源利用率等方面有很好的应用。

    对编程语言级别的虚拟化技术,我们最熟悉的就是Java虚拟机——JVM.Java程序被编译成由JVM可以识别的指令形式,称为Java Bytes Code.当代码被执行时,由JVM进行解释或利用Just-In-Time(JIT)编译器在本地机器上执行。类似的编程语言级别的虚拟化技术还有Microsoft .NET CLI和Perl 6的Parrot.虽然有着多种层次的虚拟化技术,但目前各企业和厂商最为关注的是硬件抽象层的虚拟化技术,它也是目前最有应用潜力的虚拟化技术。

    图1 服务器虚拟化的典型结构

    图2 Standalone服务器虚拟化结构

    图3 Hosted服务器虚拟化结构产品链接VMware服务器虚拟化产品VMware是业界著名的虚拟机产品,它有VMware workstation、VMware GSX Server、VMware ESX server等系列产品。VMware的VMM可以有两种结构形式,即Standalone和Hosted.Standalone的结构形式是指,VMM作为一层直接运行在硬件平台上的软件层,在它上面可以创建和管理多个客户虚拟系统。这种结构的VMM有点像一个操作系统,它包含硬件平台的驱动,会受到硬件平台种类的限制。它适合于服务器的应用环境,其典型的产品是VMware ESX Server.其大致结构如图2所示。

    Hosted结构的VMM作为操作系统的一个应用程序运行,它可以利用操作系统自身的内存管理、CPU调动、硬件驱动和资源管理。VMware Workstation使用的就是Hosted的结构,其大致结构如图3所示。

    由于VMware的目标平台是x86平台,因此,它也同样面临着x86平台不完全支持虚拟化的问题。VMware的解决方法是其专利技术,在需要VMM参与的地方,动态重写部分虚拟系统的指令,使其可以trap到VMM.对于硬件支持虚拟化的方案,今年VMware新推出的VMware Server是一款面向Windows和Linux服务器的,并支持英特尔虚拟化技术的免费产品。

[1] [2] 下一页


推荐阅读
  • 如何在服务器主机上实现文件共享的方法和工具
    本文介绍了在服务器主机上实现文件共享的方法和工具,包括Linux主机和Windows主机的文件传输方式,Web运维和FTP/SFTP客户端运维两种方式,以及使用WinSCP工具将文件上传至Linux云服务器的操作方法。此外,还介绍了在迁移过程中需要安装迁移Agent并输入目的端服务器所在华为云的AK/SK,以及主机迁移服务会收集的源端服务器信息。 ... [详细]
  • CentOS 7部署KVM虚拟化环境之一架构介绍
    本文介绍了CentOS 7部署KVM虚拟化环境的架构,详细解释了虚拟化技术的概念和原理,包括全虚拟化和半虚拟化。同时介绍了虚拟机的概念和虚拟化软件的作用。 ... [详细]
  • PHP组合工具以及开发所需的工具
    本文介绍了PHP开发中常用的组合工具和开发所需的工具。对于数据分析软件,包括Excel、hihidata、SPSS、SAS、MARLAB、Eview以及各种BI与报表工具等。同时还介绍了PHP开发所需的PHP MySQL Apache集成环境,包括推荐的AppServ等版本。 ... [详细]
  • Nginx使用AWStats日志分析的步骤及注意事项
    本文介绍了在Centos7操作系统上使用Nginx和AWStats进行日志分析的步骤和注意事项。通过AWStats可以统计网站的访问量、IP地址、操作系统、浏览器等信息,并提供精确到每月、每日、每小时的数据。在部署AWStats之前需要确认服务器上已经安装了Perl环境,并进行DNS解析。 ... [详细]
  • 本文介绍了Python高级网络编程及TCP/IP协议簇的OSI七层模型。首先简单介绍了七层模型的各层及其封装解封装过程。然后讨论了程序开发中涉及到的网络通信内容,主要包括TCP协议、UDP协议和IPV4协议。最后还介绍了socket编程、聊天socket实现、远程执行命令、上传文件、socketserver及其源码分析等相关内容。 ... [详细]
  • Centos7.6安装Gitlab教程及注意事项
    本文介绍了在Centos7.6系统下安装Gitlab的详细教程,并提供了一些注意事项。教程包括查看系统版本、安装必要的软件包、配置防火墙等步骤。同时,还强调了使用阿里云服务器时的特殊配置需求,以及建议至少4GB的可用RAM来运行GitLab。 ... [详细]
  • 本文介绍了在Hibernate配置lazy=false时无法加载数据的问题,通过采用OpenSessionInView模式和修改数据库服务器版本解决了该问题。详细描述了问题的出现和解决过程,包括运行环境和数据库的配置信息。 ... [详细]
  • 图解redis的持久化存储机制RDB和AOF的原理和优缺点
    本文通过图解的方式介绍了redis的持久化存储机制RDB和AOF的原理和优缺点。RDB是将redis内存中的数据保存为快照文件,恢复速度较快但不支持拉链式快照。AOF是将操作日志保存到磁盘,实时存储数据但恢复速度较慢。文章详细分析了两种机制的优缺点,帮助读者更好地理解redis的持久化存储策略。 ... [详细]
  • 本文介绍了RPC框架Thrift的安装环境变量配置与第一个实例,讲解了RPC的概念以及如何解决跨语言、c++客户端、web服务端、远程调用等需求。Thrift开发方便上手快,性能和稳定性也不错,适合初学者学习和使用。 ... [详细]
  • 腾讯安全平台部招聘安全工程师和数据分析工程师
    腾讯安全平台部正在招聘安全工程师和数据分析工程师。安全工程师负责安全问题和安全事件的跟踪和分析,提供安全测试技术支持;数据分析工程师负责安全产品相关系统数据统计和分析挖掘,通过用户行为数据建模为业务决策提供参考。招聘要求包括熟悉渗透测试和常见安全工具原理,精通Web漏洞,熟练使用多门编程语言等。有相关工作经验和在安全站点发表作品的候选人优先考虑。 ... [详细]
  • 项目需要将音视频文件上传服务器,考虑并发要求高,通过七牛来实现。直接上代码usingQiniu.IO;usingQiniu.IO.Resumable;usingQiniu.RPC; ... [详细]
  • PHP编程能开发哪些应用?
    导读:很多朋友问到关于PHP编程能开发哪些应用的相关问题,本文编程笔记就来为大家做个详细解答,供大家参考,希望对大家有所帮助!一起来看看吧!本文目录一览: ... [详细]
  • mysql5.6 多实例 主从安装_MySQL5.6一主多从的半同步复制实例
    半同步简介:在默认情况下,MySQL的复制是异步的,这意味着主服务器及其从服务器是独立的。异步复制可以提供最佳的性能,因为主服务器在将更新 ... [详细]
  • 让你明白kvm是什么
    参考:https:blog.csdn.netbbwangjarticledetails80465320KVM工具集合:libvirt:操作和管理KVM虚机的虚拟化API ... [详细]
  • 提示信息_局域网内互发提示信息
    本文由编程笔记#小编为大家整理,主要介绍了局域网内互发提示信息相关的知识,希望对你有一定的参考价值。【局域网内互发提示信息】准备工作:1.rege ... [详细]
author-avatar
mobiledu2502936427
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有