云计算虚拟化技术 虚拟化与云计算的关系
|虚拟化[1] 实现了IT资源的逻辑抽象和统一表示,在大规模数据中心管理和解决方案交付方面发挥着巨大的作用,是支撑云计算伟大构想的最重要的技术基石。本书以在数据中心采用服务器虚拟化技术构建云计算平台为主题,全面地勾画出虚拟化与云计算的产生背景、发展现状和关键技术等。本书体系完整,内容丰富,有助于广大读者理解信息产业今后发展的大脉络。
云计算(cloud computing)是基于互联网的相关服务的增加、使用和交付模式,通常涉及通过互联网来提供动态易扩展且经常是虚拟化的资源。云是网络、互联网的一种比喻说法。过去在图中往往用云来表示电信网,后来也用来表示互联网和底层基础设施的抽象。因此,云计算甚至可以让你体验每秒10万亿次的运算能力,拥有这么强大的计算能力可以模拟核爆炸、预测气候变化和市场发展趋势。用户通过电脑、笔记本、手机等方式接入数据中心,按自己的需求进行运算。对云计算的定义有多种说法。对于到底什么是云计算,至少可以找到100种解释。现阶段广为接受的是美国国家标准与技术研究院(NIST)定义:云计算是一种按使用量付费的模式,这种模式提供可用的、便捷的、按需的网络访问,进入可配置的计算资源共享池(资源包括网络,服务器,存储,应用软件,服务),这些资源能够被快速提供,只需投入很少的管理工作,或与服务供应商进行很少的交互。
虚拟化虚拟化是一个广义的术语,是指计算元件在虚拟的基础上而不是真实的基础上运行,是一个为了简化管理,优化资源的解决方案。如同现在空旷、通透的写字楼,整个楼层几乎看不到墙壁,用户可以用同样的成本构建出更加自主适用的办公空间,进而节省成本,发挥空间最大利用率。
虚拟化是一个广义的术语,是指计算元件在虚拟的基础上而不是真实的基础上运行,是一个为了简化管理,优化资源的解决方案。如同现在空旷、通透的写字楼,整个楼层几乎看不到墙壁,用户可以用同样的成本构建出更加自主适用的办公空间,进而节省成本,发挥空间最大利用率。这种把有限的固定的资源根据不同需求进行重新规划以达到最大利用率的思路,在IT领域就叫做虚拟化技术。
虚拟化技术可以扩大硬件的容量,简化软件的重新配置过程。CPU的虚拟化技术可以单CPU模拟多CPU并行,允许一个平台同时运行多个操作系统,并且应用程序都可以在相互独立的空间内运行而互不影响,从而显著提高计算机的工作效率。
虚拟化技术与多任务以及超线程技术是完全不同的。多任务是指在一个操作系统中多个程序同时并行运行,而在虚拟化技术中,则可以同时运行多个操作系统,而且每一个操作系统中都有多个程序运行,每一个操作系统都运行在一个虚拟的CPU或者是虚拟主机上;而超线程技术只是单CPU模拟双CPU来平衡程序运行性能,这两个模拟出来的CPU是不能分离的,只能协同工作。
虚拟化技术也与目前VMware Work station等同样能达到虚拟效果的软件不同,是一个巨大的技术进步,具体表现在减少软件虚拟机相关开销和支持更广泛的操作系统方面。
虚拟化是一种综合技术,然而云计算它是一种商业模型,云计算可能会利用虚拟换技术,但本质上,它并不是一种技术。
虚拟化
虚拟化是一个广义的术语,是指计算元件在虚拟而不是真实的基础上运行,是一个为了简化管理,优化资源的解决方案。在电脑运算中,虚拟化通常扮演硬件平台、操作系统(OS)、存储设备或者网络资源等角色。
云计算
云计算是现有技术和模式的演进和采用。云计算是为了让用户能够受益于这些技术而无需去深入的了解和掌握它们。云旨在降低成本和帮助用户专注于他们的核心业务,而不是让IT成为他们的阻碍。
然而,由于来自非IT人员(董事会)的压力和“虚拟化就是云”这种错误的认知,许多的IT机构自吹自擂它们已经“迁移到云”。
我们必须承认虚拟化是云计算中主要支撑技术之一。虚拟化将应用程序和数据在不同层次以不同的面貌展现,这样有助于使用者、开发及维护人员方便的使用、开发及维护这些应用程序及数据。虚拟化允许IT部门添加、减少移动硬件和软件到它们想要的地方。虚拟化为组织带来灵活性,从而改善IT运维和减少成本支出。
一旦接受云计算作为总方针来运行业务,通过简化管理流程和提高效率来降低总成本可以为虚拟化平台带来巨大的价值。
云计算和虚拟化是密切相关的,但是虚拟化对于云计算来说并不是必不可少的。云计算为基础设施带来的服务如:管理一个私有云(在你的数据中心)、公共云(比如是SalesForce)和管理托管云(托管在别处的虚拟服务器)以及许多其它的增值服务,这些都是虚拟化和云计算的不同。
可以这么说,云计算把计算当做公用资源,而不是一个具体的产品或者是技术。作为一个最为基本的想法,我们可以说云计算是由公用计算的概念演进而来,也可以把云计算想象为把许多不同的计算机当做一个计算环境。
云计算将各种IT资源以服务的方式通过互联网交付给用户。然而虚拟化本身并不能给用户提供自服务层。没有自服务层,就不能提供计算服务。云计算模型允许终端用户自行提供自己的服务器、应用程序和包括虚拟化等其它的资源,这反过来又能使企业最大程度的处理自身的计算资源,但这仍需要系统管理员为终端用户提供虚拟机。
虚拟化就是云计算
这个说法很早就有,尤其商业厂商, vmware,微软,都是把以前叫虚拟化的产品,改名为云计算。
其实某种意义上,也对,虚拟化是云计算的初级阶段。对于企业来说,虚拟化,其实就已经能完全满足需求,那其实这就是云计算。相信云计算也是有不同的阶段,不同的层次。
API接口
没有api接口的,就是虚拟化。有api接口的,就是云计算。其实也挺有道理的。因为有api接口,你才可能和第三方调用。没有api接口,你就只能通过管理界面,一个一个虚拟机创建。
不过现在很多虚拟化厂商也开始提供api接口,不过这只是部分功能的api接口。
如果说IaaS,云计算,必须提供全部功能的API接口,这个定义我还是很赞同的。
节点规模
有人说,10台的规模,就是虚拟化,1000台,就是云计算。其实也是有道理的。你管理机器的规模和你的管理方式有很大的联系。一个简单的例子,你10台机器的时候,创建虚拟机,制定物理节点,就是一个刚需。当你的设备超过1k,那么你更多的是考虑放到哪个zone里。
分布式技术
有人认为采用分布式的技术,就是云计算,例如如果你的存储是用本地存储,那么还是虚拟化,用了分布式,那么就是云计算,网络也是类似。
这个观点,还是很深入人心,符合中国人很多观念。虚拟机都是分布式的,肯定不会有所谓的单点故障。
弹性扩展
这个就更加深入人心。有弹性扩展的功能,就是云计算,没有就是虚拟化。不过大家对弹性扩展的理解,其实差异很大。对于虚拟机来说,是横向还是纵向扩展呢?
云计算是个概念,而不是具体技术。
虚拟化是一种具体技术,指把硬件资源虚拟化,实现隔离性、可扩展性、安全性、资源可充分利用等特点的产品。
CPU虚拟化的技术:Intel的VT-x,AMD的AMD-V。
虚拟化的软件:VMWare,Hyper-V,Xen,KVM,OpenVZ等
目前云计算,大多是依赖虚拟化,通过把多台服务器实体虚拟化后,构成一个资源池,实现共同计算,共享资源。也就是现在所谓“云计算”,其实这个词提出来之前,过去的“服务器集群”就已经实现这些功能了,只不过没有现在那么先进而已。
Cloud Computing is the result of evolution and adoption of existing technologies and paradigms. The goal of cloud computing is to allow users to take benefit from all of these technologies, without the need for deep knowledge about or expertise with each one of them. The cloud aims to cut costs, and help the users focus on their core business instead of being impeded by IT obstacles.
The main enabling technology for cloud computing is virtualization.
再补充一下自己的认识,云计算通常可能从两个方面理解:
一是将IT作为一种服务的业务模式,如AWS、阿里云,其目标是让IT未来像水和电一样随时随地、简单方便的使用,并按使用量收费;
二是IT自身的一种演进和优化,其目标是提高效率和降低成本,或者说用一种成本可接受的方式解决越来越复杂的业务问题,例如海量数据的存储和分析、超高并发访问(如双11或12306)等。
虚拟化作为一种技术,可以帮助云计算实现以上目标:资源分配更加灵活、资源利用率更高。同时技术成熟、对上层应用也基本不影响,因此被广泛使用,甚至在很多时候虚拟化成为了云计算的代名词。
虚拟化主要解决资源利用率,资源提供的自动扩展。有服务器(compute)虚拟化(kvm/xen/lxc等),存储虚拟化,网络虚拟化。原来的数据中心服务器整合就利用了大量的虚拟化。现在的云计算模式也以虚拟化技术为基础,特别是IAAS层。但云计算本质是效用计算,按需付费,因此SAAS也可以不基于虚拟化来实现。
Hadoop就是用来解决google类似的大数据的分析引入的计算框架。(mapreduce和分布式存储)。你可以把这些东西放在虚拟化环境里的。
虚拟化技术是否都适用于并行计算,分布式大数据存储和检索?
这里得区分是什么的虚拟化。如上,有服务器虚拟化,存储虚拟化,网络虚拟化。现在流行软件定义网络,软件定义存储,广义的说,这也算是虚拟化技术的应用。
并行计算是一种计算模式。可以基于虚拟化技术来实现。lerlang就是采用vm的方式来表示多进程。但是也可以在硬件上实现。
0 Comments.