2024年10月虚拟化的好处都有什么?虚拟化有哪些应用

 更新时间:2024-10-12

  ⑴虚拟化的好处都有什么?虚拟化有哪些应用

  ⑵一个硬件能够同时运行多个操作系统认为就是虚拟化技术,Google通过虚拟化技术为用户提供开发环境、服务器平台、硬件资源等服务,每一个操作系统都运行在一个虚拟的CPU或虚拟主机(虚拟机上,我们就可以重新认识如今几大广为人知的虚拟化技术:虚拟机:存在于硬件层和操作系统层间的虚拟化技术,虚拟化技术有哪些各种虚拟化技术服务器虚拟化物理资源抽象成逻辑资源一台服务器变成多台,其实这只是虚拟化技术中很小的一个部分,每一个操作系统都运行在一个虚拟的CPU或者是虚拟主机上,容器:存在于操作系统层和函数库层之间的虚拟化技术。

  ⑶虚拟化的好处都有什么

  ⑷虚拟化的作用有:.减少服务器的数量,提供一种服务器整合的方法,减少初期硬件采购成本.简化服务器的部署、管理和维护工作,降低管理费用.提高服务器资源的利用率,提高服务器计算能力.通过降低空间、散热以及电力消耗等途径压缩数据中心成本.通过动态资源配置提高IT对业务的灵活适应力.提高可用性,带来具有透明负载均衡、动态迁移、故障自动隔离、系统自动重构的高可靠服务器应用环境.支持异构操作系统的整合,支持老应用的持续运行.在不中断用户工作的情况下进行系统更新.支持快速转移和复制虚拟服务器,提供一种简单便捷的灾难恢复解决方案扩展资料:虚拟化这种技术简单来说就是让可以让一个CPU工作起来就像多个CPU并行运行,从而使得在一台电脑内可以同时运行多个操作系统。只有部份Intel的CPU才支持这种技术。IntelVT虚拟化技术和多任务(Multitasking、Hyper-Threading超线程技术是完全不同的。多任务是指在一个操作系统中多个程序同时并行运行,而在虚拟化技术中,你可以拥有多个独立的操作系统同时运行,每一个操作系统中都有多个程序运行,每一个操作系统都运行在一个虚拟的CPU或虚拟主机(虚拟机上。而Hyper-Threading超线程只是在SMP系统(SymmetricMultiProcessing中单CPU模拟双CPU来平衡程序运行性能,这两个模拟出来的CPU是不能分离的,只能协同工作。当然了,如果一个CPU同时支持Hyper-Threading和虚拟化技术的话,每一个虚拟CPU在各自的操作系统中都被看成是两个对称多任务处理的CPU。

  ⑸近年来,云原生(CloudNative可谓是IT界最火的概念之一,众多互联网巨头都已经开始积极拥抱云原生。而说到云原生,我们就不得不了解本文的主角——容器(container。容器技术可谓是撑起了云原生生态的半壁江山。容器作为一种先进的虚拟化技术,已然成为了云原生时代软件开发和运维的标准基础设施,在了解它之前,我们不妨从虚拟化技术说起。

  ⑹年——IBM机实现了分时系统

  ⑺计算机历史上首个虚拟化技术实现于年,IBM计算机首次将CPU占用切分为多个极短(/sec)时间片,每一个时间片都用来执行着不同的任务。通过对这些时间片的轮询,这样就可以将一个CPU虚拟化或者伪装成为多个CPU,并且让每一颗虚拟CPU看起来都是在同时运行的。这就是虚拟机的雏形。

  ⑻容器的功能其实和虚拟机类似,无论容器还是虚拟机,其实都是在计算机不同的层面进行虚拟化,即使用逻辑来表示资源,从而摆脱物理限制的约束,提高物理资源的利用率。虚拟化技术是一个抽象又内涵丰富的概念,在不同的领域或层面有着不同的含义。

  ⑼这里我们首先来粗略地讲讲计算机的层级结构。计算机系统对于大部分软件开发者来说可以分为以下层级结构:

  ⑽应用程序层函数库层操作系统层硬件层

  ⑾各层级自底向上,每一层都向上提供了接口,同时每一层也只需要知道下一层的接口即可调用底层功能来实现上层操作(不需要知道底层的具体运作机制。

  ⑿但由于早期计算机厂商生产出来的硬件遵循各自的标准和规范,使得操作系统在不同计算机硬件之间的兼容性很差;同理,不同的软件在不同的操作系统下的兼容性也很差。于是,就有开发者人为地在层与层之间创造了抽象层:

  ⒀应用层函数库层API抽象层操作系统层硬件抽象层硬件层

  ⒁就我们探讨的层面来说,所谓虚拟化就是在上下两层之间,人为地创造出一个新的抽象层,使得上层软件可以直接运行在新的虚拟环境上。简单来说,虚拟化就是通过模访下层原有的功能模块创造接口,来“欺骗”上层,从而达到跨平台开发的目的。

  ⒂综合上述理念,我们就可以重新认识如今几大广为人知的虚拟化技术:

  ⒃虚拟机通过“伪造”一个硬件抽象接口,将一个操作系统以及操作系统层以上的层嫁接到硬件上,实现和真实物理机几乎一样的功能。比如我们在一台Windows系统的电脑上使用Android虚拟机,就能够用这台电脑打开Android系统上的应用。

  ⒄容器通过“伪造”操作系统的接口,将函数库层以上的功能置于操作系统上。以Docker为例,其就是一个基于Linux操作系统的Namespace和Cgroup功能实现的隔离容器,可以模拟操作系统的功能。简单来说,如果虚拟机是把整个操作系统封装隔离,从而实现跨平台应用的话,那么容器则是把一个个应用单独封装隔离,从而实现跨平台应用。所以容器体积比虚拟机小很多,理论上占用资源更少。

  ⒅Java虚拟机同样具有跨平台特性,所谓跨平台特性实际上也就是虚拟化的功劳。我们知道Java语言是调用操作系统函数库的,JVM就是在应用层与函数库层之间建立一个抽象层,对下通过不同的版本适应不同的操作系统函数库,对上提供统一的运行环境交给程序和开发者,使开发者能够调用不同操作系统的函数库。

  ⒆在大致理解了虚拟化技术之后,接下来我们就可以来了解容器的诞生历史。虽然容器概念是在Docker出现以后才开始在全球范围内火起来的,但在Docker之前,就已经有无数先驱在探索这一极具前瞻性的虚拟化技术。

  ⒇容器的前身“Jail”

  ⒈年——贝尔实验室发明chroot

  ⒉容器主要的特性之一就是进程隔离。早在年,贝尔实验室在UnixV的开发过程中,发现当一个系统软件编译和安装完成后,整个测试环境的变量就会发生改变,如果要进行下一次构建、安装和测试,就必须重新搭建和配置测试环境。要知道在那个年代,一块K的内存条就要卖美元,“快速销毁和重建基础设施”的成本实在是太高了。

  ⒊开发者们开始思考,能否在现有的操作系统环境下,隔离出一个用来重构和测试软件的独立环境?于是,一个叫做chroot(ChangeRoot的系统调用功能就此诞生。

  ⒋chroot可以重定向进程及其子进程的root目录到文件系统上的新位置,也就是说使用它可以分离每个进程的文件访问权限,使得该进程无法接触到外面的文件,因此这个被隔离出来的新环境也得到了一个非常形象的命名,叫做ChrootJail(监狱。之后只要把需要的系统文件一并拷贝到ChrootJail中,就能够实现软件重构和测试。这项进步开启了进程隔离的大门,为Unix提供了一种简单的系统隔离功能,尤其是jail的思路为容器技术的发展奠定了基础。但是此时chroot的隔离功能仅限于文件系统,进程和网络空间并没有得到相应的处理。

  ⒌进入世纪,此时的虚拟机(VM技术已经相对成熟,人们可以通过虚拟机技术实现跨操作系统的开发。但由于VM需要对整个操作系统进行封装隔离,占用资源很大,在生产环境中显得太过于笨重。于是人们开始追求一种更加轻便的虚拟化技术,众多基于chroot扩展实现的进程隔离技术陆续诞生。

  ⒍年——FreeBSD推出FreeBSDJail

  ⒎在chroot诞生年后,FreeBSD.版本推出了一套微型主机环境共享系统FreeBSDJail,将chroot已有的机制进行了扩展。在FreeBSDJail中,程序除了有自己的文件系统以外,还有独立的进程和网络空间,Jail中的进程既不能访问也不能看到Jail之外的文件、进程和网络资源。

  ⒏年——LinuxVServer诞生

  ⒐年,Linux内核新增LinuxVServer(虚拟服务器,为Linux系统提供虚拟化功能。LinuxVServer采取的也是一种jail机制,它能够划分计算机系统上的文件系统、网络地址和内存,并允许一次运行多个虚拟单元。

  ⒑年——SUN发布SolarisContainers

  ⒒该技术同样由chroot进一步发展而来。年月,SUN发布类Unix系统Solaris的beta版,新增操作系统虚拟化功能Container,并在之后的Solaris正式版中完善。SolarisContainers支持x和SPARC系统,SUN创造了一个zone功能与Container配合使用,前者是一个单一操作系统中完全隔离的虚拟服务器,由系统资源控制和zones提供的边界分离实现进程隔离。

  ⒓年——OpenVZ诞生

  ⒔类似于SolarisContainers,它通过对Linux内核进行补丁来提供虚拟化、隔离、资源管理和状态检查checkpointing。每个OpenVZ容器都有一套隔离的文件系统、用户及用户组、进程树、网络、设备和IPC对象。

  ⒕这个时期的进程隔离技术大多以Jail模式为核心,基本实现了进程相关资源的隔离操作,但由于此时的生产开发仍未有相应的使用场景,这一技术始终被局限在了小众而有限的世界里。

  ⒖就在此时,一种名为“云”的新技术正悄然萌发……

  ⒗年至年间,Google公司陆续发布了篇产品设计论文,从计算方式到存储方式,开创性地提出了分布式计算架构,奠定了大数据计算技术的基础。在此基础上,Google颠覆性地提出“Google”计划,并正式创造“云”的概念。一时间,“云计算”、“云存储”等全新词汇轰动全球。随后,亚马逊、IBM等行业巨头也陆续宣布各自的“云”计划,宣告“云”技术时代的来临。

  ⒘也是从这时期开始,进程隔离技术进入了一个更高级的阶段。在Google提出的云计算框架下,被隔离的进程不仅仅是一个与外界隔绝但本身却巍然不动的Jail,它们更需要像一个个轻便的容器,除了能够与外界隔离之外,还要能够被控制与调配,从而实现分布式应用场景下的跨平台、高可用、可扩展等特性。

  ⒙年——Google推出ProcessContainers,后更名为Cgroups

  ⒚ProcessContainer是Google工程师眼中“容器”技术的雏形,用来对一组进程进行限制、记账、隔离资源(CPU、内存、磁盘I/O、网络等。这与前面提到的进程隔离技术的目标其实是一致的。由于技术更加成熟,ProcessContainer在年正式推出后,第二年就进入了Linux内核主干,并正式更名为Cgroups,标志着Linux阵营中“容器”的概念开始被重新审视和实现。

  ⒛年——Linux容器工具LXC诞生

  在年,通过将Cgroups的资源管理能力和LinuxNamespace(命名空间的视图隔离能力组合在一起,一项完整的容器技术LXC(LinuxContainer出现在了Linux内核中,这就是如今被广泛应用的容器技术的实现基础。我们知道,一个进程可以调用它所在物理机上的所有资源,这样一来就会挤占其它进程的可用资源,为了限制这样的情况,Linux内核开发者提供了一种特性,进程在一个Cgroup中运行的情况与在一个命名空间中类似,但是Cgroup可以限制该进程可用的资源。尽管LXC提供给用户的能力跟前面提到的各种Jails以及OpenVZ等早期Linux沙箱技术是非常相似的,但伴随着各种Linux发行版开始迅速占领商用服务器市场,包括Google在内的众多云计算先锋厂商得以充分活用这一早期容器技术,让LXC在云计算领域获得了远超前辈的发展空间。

  同年,Google基于LXC推出首款应用托管平台GAE(GoogleAppEngine,首次把开发平台当做一种服务来提供。GAE是一种分布式平台服务,Google通过虚拟化技术为用户提供开发环境、服务器平台、硬件资源等服务,用户可以在平台基础上定制开发自己的应用程序并通过Google的服务器和互联网资源进行分发,大大降低了用户自身的硬件要求。

  值得一提的是,Google在GAE中使用了一个能够对LXC进行编排和调度的工具——B(Kuberes的前身。B是Google内部使用的大规模集群管理系统,可以承载十万级的任务、数千个不同的应用、同时管理数万台机器。B通过权限管理、资源共享、性能隔离等来达到高资源利用率。它能够支持高可用应用,并通过调度策略减少出现故障的概率,提供了任务描述语言、实时任务监控、分析工具等。如果说一个个隔离的容器是集装箱,那么B可以说是最早的港口系统,而LXC+B就是最早的容器编排框架。此时,容器已经不再是一种单纯的进程隔离功能,而是一种灵活、轻便的程序封装模式。

  年——CloudFoundry推出Warden

  CloudFoundry是知名云服务供应商VMware在年推出的一个云平台,也是业内首个正式定义PaaS(平台即服务模式的项目,“PaaS项目通过对应用的直接管理、编排和调度让开发者专注于业务逻辑而非基础设施”,以及“PaaS项目通过容器技术来封装和启动应用”等理念都出自CloudFoundry。Warden是CloudFoundry核心部分的资源管理容器,它最开始是一个LXC的封装,后来重构成了直接对Cgroups以及LinuxNamespace操作的架构。

  随着“云”服务市场的不断开拓,各种PaaS项目陆续出现,容器技术也迎来了一个爆发式增长的时代,一大批围绕容器技术进行的创业项目陆续涌现。当然,后来的故事很多人都知道了,一家叫Docker的创业公司横空出世,让Docker几乎成为了“容器”的代名词。

  Docker横空出世

  年——Docker诞生

  Docker最初是一个叫做dotCloud的PaaS服务公司的内部项目,后来该公司改名为Docker。Docker在初期与Warden类似,使用的也是LXC,之后才开始采用自己开发的libcontainer来替代LXC。与其他只做容器的项目不同的是,Docker引入了一整套管理容器的生态系统,这包括高效、分层的容器镜像模型、全局和本地的容器注册库、清晰的RESTAPI、命令行等等。

  Docker本身其实也是属于LXC的一种封装,提供简单易用的容器使用接口。它最大的特性就是引入了容器镜像。Docker通过容器镜像,将应用程序与运行该程序需要的环境,打包放在一个文件里面。运行这个文件,就会生成一个虚拟容器。

  更为重要的是,Docker项目还采用了Git的思路——在容器镜像的制作上引入了“层”的概念。基于不同的“层”,容器可以加入不同的信息,使其可以进行版本管理、复制、分享、修改,就像管理普通的代码一样。通过制作Docker镜像,开发者可以通过DockerHub这样的镜像托管仓库,把软件直接进行分发。

  也就是说,Docker的诞生不仅解决了软件开发层面的容器化问题,还一并解决了软件分发环节的问题,为“云”时代的软件生命周期流程提供了一套完整的解决方案。

  很快,Docker在业内名声大噪,被很多公司选为云计算基础设施建设的标准,容器化技术也成为业内最炙手可热的前沿技术,围绕容器的生态建设风风火火地开始了。

  一项新技术的兴起同时也带来了一片新的市场,一场关于容器的蓝海之争也在所难免。

  年——CoreOS发布

  在Docker爆火后,同年年末,CoreOS应运而生。CoreOS是一个基于Linux内核的轻量级操作系统,专为云计算时代计算机集群的基础设施建设而设计,拥有自动化、易部署、安全可靠、规模化等特性。其在当时有一个非常显眼的标签:专为容器设计的操作系统。

  借着Docker的东风,CoreOS迅速在云计算领域蹿红,一时间,Docker+CoreOS成为业内容器部署的黄金搭档。同时,CoreOS也为Docker的推广与社区建设做出了巨大的贡献。

  然而,日渐壮大的Docker似乎有着更大的“野心”。不甘于只做“一种简单的基础单元”的Docker,自行开发了一系列相关的容器组件,同时收购了一些容器化技术的公司,开始打造属于自己的容器生态平台。显然,这对于CoreOS来说形成了直接的竞争关系。

  年——CoreOS发布开源容器引擎Rocket

  年末,CoreOS推出了自己的容器引擎Rocket(简称rkt,试图与Docker分庭抗礼。rkt和Docker类似,都能帮助开发者打包应用和依赖包到可移植容器中,简化搭环境等部署工作。rkt和Docker不同的地方在于,rkt没有Docker那些为企业用户提供的“友好功能”,比如云服务加速工具、集群系统等。反过来说,rkt想做的,是一个更纯粹的业界标准。

  年——Google推出开源的容器编排引擎Kuberes

  为了适应混合云场景下大规模集群的容器部署、管理等问题,Google在年月推出了容器集群管理系统Kuberes(简称KS。KS来源于我们前面提到的B,拥有在混合云场景的生产环境下对容器进行管理、编排的功能。Kuberes在容器的基础上引入了Pod功能,这个功能可以让不同容器之间互相通信,实现容器的分组调配。

  得益于Google在大规模集群基础设施建设的强大积累,脱胎于B的KS很快成为了行业的标准应用,堪称容器编排的必备工具。而作为容器生态圈举足轻重的一员,Google在Docker与rkt的容器之争中站在了CoreOS一边,并将KS支持rkt作为一个重要里程碑。

  年——Docker推出容器集群管理工具DockerSwarm

  作为回应,Docker公司在年发布的Docker.版本中也开始加入了一个容器集群管理工具Dockerswarm。

  随后,Google于年月领投CoreOS万美元,并与CoreOS合作发布了首个企业发行版的Kuberes——Tectonic。从此,容器江湖分为两大阵营,Google派系和Docker派系。

  两大派系的竞争愈演愈烈,逐渐延伸到行业标准的建立之争。

  年月——Docker带头成立OCI

  Docker联合Linux基金会成立OCI(OpenContainerInitiative组织,旨在“制定并维护容器镜像格式和容器运行时的正式规范(“OCISpecifications”,围绕容器格式和运行时制定一个开放的工业化标准。

  年月——Google带头成立CF

  而战略目标聚焦于“云”的Google在同年月也联合Linux基金会成立CF(CloudNativeputingFoundation云原生计算基金会,并将Kuberes作为首个编入CF管理体系的开源项目,旨在“构建云原生计算——一种围绕着微服务、容器和应用动态调度的、以基础设施为中心的架构,并促进其广泛使用”。

  这两大围绕容器相关开源项目建立的开源基金会为推动日后的云原生发展发挥了重要的作用,二者相辅相成,制定了一系列行业事实标准,成为当下最为活跃的开源组织。

  Kuberes生态一统江湖

  虽然这些年来Docker一直力压rkt,成为当之无愧的容器一哥,但作为一个庞大的容器技术生态来说,Docker生态还是在后来的容器编排之争中败给了Google的Kuberes。

  随着越来越多的开发者使用Docker来部署容器,编排平台的重要性日益突出。在Docker流行之后,一大批开源项目和专有平台陆续出现,以解决容器编排的问题。Mesos、DockerSwarm和Kuberes等均提供了不同的抽象来管理容器。这一时期,对于软件开发者来说,选择容器编排平台就像是一场豪赌,因为一旦选择的平台在以后的竞争中败下阵来,就意味着接下来开发的东西在未来将失去市场。就像当初Android、iOS和WP的手机系统之争一样,只有胜利者才能获得更大的市场前景,失败者甚至会销声匿迹。容器编排平台之争就此拉开帷幕。

  年——CRI-O诞生

  年,Kuberes项目推出了CRI(容器运行时接口,这个插件接口让kubelet(一种用来创建pod、启动容器的集群节点代理能够使用不同的、符合OCI的容器运行时环境,而不需要重新编译Kuberes。基于CRI,一个名为CRI-O的开源项目诞生,旨在为Kuberes提供一种轻量级运行时环境。

  CRI-O可以让开发者直接从Kuberes来运行容器,这意味着Kuberes可以不依赖于传统的容器引擎(比如Docker,也能够管理容器化工作负载。这样一来,在Kuberes平台上,只要容器符合OCI标准(不一定得是Docker,CRI-O就可以运行它,让容器回归其最基本的功能——能够封装并运行云原生程序即可。

  同时,CRI-O的出现让使用容器技术进行软件管理和运维的人们发现,相对于Docker本身的标准容器引擎,Kuberes技术栈(比如编排系统、CRI和CRI-O更适合用来管理复杂的生产环境。可以说,CRI-O将容器编排工具放在了容器技术栈的重要位置,从而降低了容器引擎的重要性。

  在KS顺利抢占先机的情况下,Docker在推广自己的容器编排平台DockerSwarm时反而犯下了错误。年底,业内曝出Docker为了更好地适配Swarm,将有可能改变Docker标准的传言。这让许多开发者在平台的选择上更倾向于与市场兼容性更强的Kuberes。

  因此,在进入年之后,更多的厂商愿意把宝压在KS上,投入到KS相关生态的建设中来。容器编排之争以Google阵营的胜利告一段落。与此同时,以KS为核心的CF也开始迅猛发展,成为当下最火的开源项目基金会。这两年包括阿里云、腾讯、百度等中国科技企业也陆续加入CF,全面拥抱容器技术与云原生。

  从数十年前在实验室里对进程隔离功能的探索,再到如今遍布生产环境的云原生基础设施建设,可以说容器技术凝聚了几代开发者的心血,才从一个小小的集装箱发展到一个大型的现代化港口。可以预见的是,从现在到未来很长一段时间里,容器技术都将是软件开发和运维的重要基础设施。

  什么是虚拟化技术,为什么要虚拟化技术

  什么是虚拟化?简单来讲,虚拟化就是为一些组件创建虚拟(而不是物理版本的过程。虚拟化可以应用到计算机、操作系统、存储设备、应用或网络。但是,服务器虚拟化才是虚拟化的核心。现如今的x服务器的设计存在局限性,每次只能运行一个操作系统和应用,这为IT部门带来了挑战。因此,即使是小型数据中心也必须部署大量服务器,而每台服务器的容量利用率只有%到%,无论以哪种标准来衡量,都十分的低效。虚拟化使用软件来模拟硬件并创建虚拟计算机系统。这样一来,企业便可以在单台服务器上运行多个虚拟系统,也就是运行多个操作系统和应用,而这可以实现规模经济以及提高效益。二.为什么要虚拟化?虚拟化技术能为我们解决很多以前解决不了的技术:、服务器整合技术:这个技术在没有虚拟化技术之前是很难完成的。因为什么东西都是实际存在的,想把两个工作相对较少的服务器整合到一起是很困难的。然而当有了虚拟化技术以后使这种服务器整合技术变得非常容易。而这个技术需要借助我下面介绍的、条技术。、负载均衡技术:负载均衡技术是只在每台服务器上安装一个负载均衡器,然后设置很多的调度算法及临界值。来判断此时此刻服务器的压力是轻还是重。然后根据轻重来完成服务器的合并,而合并又依据了第三条技术。、动态迁移技术:这个技术是前两个技术的根基,但是却不只仅仅限于前两个技术。它的目的是可以在服务器开启的状态下,把其上面的虚拟机迁移到其他的服务器上面。工作原理大体是先将目标服务器上模拟出此服务器的硬件状态,然后迁移数据,最后释放此服务器的信息。、克隆技术:这个技术说起来和上面那个技术很像,但是却不一样。克隆技术是把一台服务器的环境配置好了后可以通过克隆技术使其他的机子都达到和这台机子一样的效果,假如要配置台甚至台服务器的话这种克隆技术是非常可观的。它和动态迁移的区别是在服务器不停机的状态下,动态迁移要求迁移的彼此必须是共享内存的,但是克隆并没有这个限制。、灾难恢复技术:灾难恢复是所有大型公司必须考虑的问题,因为当一些意外发生时,比如:突然断电,硬件损坏,洪水,地震,等一系列情况是,如何把灾难所造成的数据损失降到最低甚至是不损失。这要依靠第六条技术。、虚拟快照技术:虚拟快照技术是将虚拟机此时的状态像照片一样保存下来,当然我说的很容易,其实现原理需要非常复杂,包括cpu运行状态,内存中的数据等等。这样保存下这些虚拟技术当发生灾难或者某些失误导致虚拟机出问题时,可以很快恢复。、改善系统可用性。这里的可用性只得是零down机,在这种情况下我们才可以使得效率最大化。而零down机的前提是每台服务器必须要有一个镜像,在主虚拟机和次虚拟机之间有一条心跳线来维持两者之间的关系,当心跳线停止时,次虚拟机立马启动,代替主虚拟机。、安全性:我们直到虚拟化在硬件层上都有一层VMM来时时刻刻侦测每台虚拟机的动向,包括捕获异常,解决门事件,完成调度等等。所以当一些危险因素来临时由于VMM的存在使得我们可以非常快的侦测到这个问题并解决它。这能比以前的硬件层上面直接是操作系统快速很多。

  看了一些虚拟化的博客,还有文章,发现很多人对于虚拟化技术到底是什么,为什么要使用虚拟化技术还不是很明白。绝大多数人目前理解的虚拟化技术就是把操作系统和硬件分离,一个硬件能够同时运行多个操作系统认为就是虚拟化技术,其实这只是虚拟化技术中很小的一个部分,和很初级的阶段。

  百度百科中给出的解释其实也是相对片面的:

  “虚拟化是一个广义的术语,在计算机方面通常是指计算元件在虚拟的基础上而不是真实的基础上运行。虚拟化技术可以扩大硬件的容量,简化软件的重新配置过程。CPU的虚拟化技术可以单CPU模拟多CPU并行,允许一个平台同时运行多个操作系统,并且应用程序都可以在相互独立的空间内运行而互不影响,从而显著提高计算机的工作效率。

  虚拟化技术与多任务以及超线程技术是完全不同的。多任务是指在一个操作系统中多个程序同时并行运行,而在虚拟化技术中,则可以同时运行多个操作系统,而且每一个操作系统中都有多个程序运行,每一个操作系统都运行在一个虚拟的CPU或者是虚拟主机上;而超线程技术只是单CPU模拟双CPU来平衡程序运行性能,这两个模拟出来的CPU是不能分离的,只能协同工作。”

  虽然其强调广义概念,但是在后面的描述上也都是在强调操作系统与硬件的隔离。

  gartner给过一个相对简单但是很准确的定义(记不住原文,大概含义:将不同的资源和逻辑单元剥离,形成松耦合的关系的技术。

  其实根据计算过程中的逻辑组成部分,将他们的紧耦合,变为松耦合(耦合大家学过软件工程的都应该懂什么意思了吧。其实“耦合”的概念是计算机领域一直研究的内容:

  我们可以看到,“松耦合化”是很多很热的技术的主线,之所以它是计算机研究中的重要元素之一,就是因为它会给我们提供更多的灵活性!

  举个简单的比喻:计划经济时代,我们都是每个工厂有自己的食堂,自己的澡堂,托儿所,幼儿园,学校等等,这就好比我们的计算环境,或者是一个软件,所有的组成部分都紧紧的配合在一起,是比较全,对于自己工厂的员工来说很方便;但是对于工厂来说,这个很不经济,成本很高,因为什么都要做,什么都做不好,而且没有规模经济,自然就不好,对于社会来说,浪费非常多。后来市场经济,所有的都专业化了,于是我们一个写字楼的所有人都可以去楼下的食堂吃饭,也可以去别的地方吃饭;洗澡也有专业澡堂了,托儿所与学校也分出去了。这样我们的选择性多了,可以选好的地方或者合适的地方,另外专业化也提高了效率,社会浪费也少了,这就跟我们的webservice或者虚拟化一样,每个公司或者个体都是提供一个专业服务,效率高,成本低;而你要做一种事情,可以有多种选择,选择最合适你的,也让你整体成本地,而且更好地完成任务。对于社会来说,浪费少了,而且更灵活了。

  世间诸多事情都一脉相通,而诸多厂商所谓的“敏捷IT”,本质上就是利用“松耦合”带来的灵活性来实现的,实现“IT系统的计划经济向市场经济的过渡!”。而这就是为什么,在计算环境层面,我们需要“虚拟化”技术的原因。

  但是,计算环境的虚拟化可不仅仅指的是硬件与操作系统的松耦合,它是更大的一个概念,包含更广泛的内容。

您可能感兴趣的文章:

相关文章