云计算与大数据技术应用

什么是云计算
云计算的定义
PC时代以前,计算机用户主要通过终端分享主机(可以理解为服务器)的计算和存储,获得有限的服务。这样的模式就好比一个家庭里有许多孩子,每一笔零花钱都要朝父母要,用多少要多少。家里的钱都锁在保险柜里,可以想象对孩子来说想买些小零食小玩具都是比较不自在的体验。1979年IBM推出了IBM-PC,计算机从企业普及到个人,用户可以拥有自己的个人电脑。如果还拿零花钱举例,这个时代就好比让孩子有了自己的小钱包,虽然远不如保险柜里的钱多,但完全由自己掌控,一定程度上摆脱了父母的约束。问题也随之而来,一如钱包可能丢失,个人电脑的数据也会因为电脑病毒而付之一炬。而且一台电脑的文件可能在另一台电脑无法使用,就像没法在美国花人民币一样。再后来,也就进入了云计算最早的阶段。大型数据中心的出现给了IBM机会,IBM开始专门出售用于云计算的服务器。而亚马逊此时则开始购买IBM的服务器建立数据中心,提供网站托管服务。想要提供互联网服务的公司不用自己费心,只要租用亚马逊的服务即可。我们可以认为亚马逊开设了自己的银行,从IBM大量购买“保险柜”,然后将管理存款、计账、提供交易明细的服务卖给客户。自此钱便不需要放在自家保险柜,可以直接交给亚马逊,用户没有了保险柜的概念,只知道自己有一个账户,里面是自己的存款。而作为互联网巨头的谷歌,解决了云计算的关键技术问题,其中包括海量数据存储、计算资源管理和信息安全三方面。我们可以认为,谷歌直接搭建了整个银行系统,设置了央行和各个商业银行的分行,组织了专门的银行柜员,让客户的钱可以在全国银行实现统一调度,不用去管自己的钱到底是放在哪家银行的哪个分行、哪个保险柜。同时谷歌还设置了安保系统,防止有人抢银行。至此账户和保险柜完全分离,用户只要享受存取款的服务即可。

云计算的特点
第一,云计算保证用户可以随时随地访问和处理信息,并且可以方便地与人共享信息”:在过去分享文件只能通过U盘拷贝,而且到了别人的电脑上还未必可以打开。想要处理信息的话,用户一定要电脑在手边,现在在任何终端都可以完成,而且在线应用软件分享数据功能比个人电脑强得多。这就好比支付宝的存在让我们从此免去了去银行取钱的过程,想要借钱给别人只需要在线转账即可。而且即使在海外消费,也可以直接按实时汇率把美元折合成人民币扣费。“第二,云计算保证用户可以使用大量在云端的计算资源,而无需自己购入设备,压低了用户成本,且用户不用担心数据丢失、病毒入侵等麻烦”:这一点不难理解,如果还要类比的话,我们把钱存在银行就免去了过去自己选购保险柜的过程和费用,而且把钱放在银行也方便保管,不必承担失窃的风险,反倒是那些藏在自家土炕里的钱全部发霉腐坏了。“第三,云计算让全社会的计算资源得到最有效的利用”:我们可以想象,银行的保险柜利用率肯定要远比家庭的高,同样一大笔财宝,放在银行要比分放在零散的家庭占用的保险柜数量少得多。同时银行还可以灵活周转,若是现在每个家庭都把钱从银行取出来放回自己家里,那世界经济得倒退百年都不止。云计算的出现就好比加速了这百余年的经济发展,让互联网服务进一步迎来一个井喷的时代。“第四,云计算可以让用户完成以前根本完成不了的任务”:现在,云计算工具可以把工作并行地安排到互联网上闲置的服务器中,几分钟之内完成任务。还是同样的例子,身家上亿的富翁要是把钱都放在自己家里自己数,每消费一笔巨款也要再数一笔钱出来,那可能真要数钱数到死了,而现在银行负责了一切,用户只需要在线查看自己账户的余额和交易明细就可以了。“第五,云计算把整个云端的服务器资源作为整体保存,然后根据用户的需求动态分派这些资源”:现在公司购买计算资源,只需要指定需要的资源数目,而无需考虑设备问题。就好比银行的储户不必去管自己的钱到底是放在银行的哪个分行、哪个保险柜,消费时直接刷卡消费,不用考虑整存争取,买买买就是了。简单讲云计算的几大优点就是,省心、省心和省心,解放了所有基于互联网的业务。

经典的云计算基础架构
云计算架构——显示层  这层主要是用于以友好的方式展现用户所需的内容,并会利用到下面中间件层提供的多种服务,主要有五种技术:  HTML:标准的Web页面技术,现在主要以HTML4为主,但是将要推出的HTML5会在很多方面推动Web页面的发展,比如视频和本地存储等方面。  JavaScript:一种用于Web页面的动态语言,通过JavaScript,能够极大地丰富Web页面的功能。  CSS:主要用于控制Web页面的外观,而且能使页面的内容与其表现形式之间进行优雅地分离。  Flash:业界最常用的RIA(Rich Internet Applications)技术,能够在现阶段提供HTML等技术所无法提供的基于Web的富应用,而且在用户体验方面,非常不错。  Silverlight:来自业界巨擎微软的RIA技术,虽然其现在市场占有率稍逊于Flash,但由于其可以使用C#来进行编程,所以对开发者非常友好。  云计算架构——中间层  这层是承上启下的,它在下面的基础设施层所提供资源的基础上提供了多种服务,比如缓存服务和REST服务等,而且这些服务即可用于支撑显示层,也可以直接让用户调用,并主要有五种技术:  REST:通过REST技术,能够非常方便和优雅地将中间件层所支撑的部分服务提供给调用者。  多租户:就是能让一个单独的应用实例可以为多个组织服务,而且保持良好的隔离性和安全性,并且通过这种技术,能有效地降低应用的购置和维护成本。  并行处理:为了处理海量的数据,需要利用庞大的X86集群进行规模巨大的并行处理,Google的MapReduce是这方面的代表之作。  应用服务器:在原有的应用服务器的基础上为云计算做了一定程度的优化,比如用于Google App Engine的Jetty应用服务器。  分布式缓存:通过分布式缓存技术,不仅能有效地降低对后台服务器的压力,而且还能加快相应的反应速度,最著名的分布式缓存例子莫过于Memcached。  云计算架构——基础设施层  这层作用是为给上面的中间件层或者用户准备其所需的计算和存储等资源,主要有四种技术:  虚拟化:也可以理解它为基础设施层的“多租户”,因为通过虚拟化技术,能够在一个物理服务器上生成多个虚拟 机,并且能在这些虚拟机之间能实现全面的隔离,这样不仅能减低服务器的购置成本,而且还能同时降低服务器的运维成本,成熟的X86虚拟化技术有 VMware的ESX和开源的Xen。  分布式存储:为了承载海量的数据,同时也要保证这些数据的可管理性,所以需要一整套分布式的存储系统。  关系型数据库:基本是在原有的关系型数据库的基础上做了扩展和管理等方面的优化,使其在云中更适应。  NoSQL:为了满足一些关系数据库所无法满足的目标,比如支撑海量的数据等,一些公司特地设计一批不是基于关系模型的数据库。云计算架构——管理层  这层是为横向的三层服务的,并给这三层提供多种管理和维护等方面的技术,主要有下面这六个方面:  帐号管理:通过良好的帐号管理技术,能够在安全的条件下方便用户地登录,并方便管理员对帐号的管理。  SLA监控:对各个层次运行的虚拟机,服务和应用等进行性能方面的监控,以使它们都能在满足预先设定的SLA(Service Level Agreement)的情况下运行。  计费管理:也就是对每个用户所消耗的资源等进行统计,来准确地向用户索取费用。  安全管理:对数据,应用和帐号等IT资源采取全面地保护,使其免受犯罪分子和恶意程序的侵害。  负载均衡:通过将流量分发给一个应用或者服务的多个实例来应对突发情况。  运维管理:主要是使运维操作尽可能地专业和自动化,从而降低云计算中心的运维成本。 云计算架构其中有三层是横向的,分别是显示层、中间件层和基础设施层,通过这三层技术能够提供非常丰富的云计算能力和友好的用户界面,云计算架构还有一层是纵向的,称为管理层,是为了更好地管理和维护横向的三层而存在的。

云计算主要服务模式
对于企业来说,可能会需要一套OS系统来解决办公自动化的问题;或者通过使用ERP系统帮助提升管理效率;再者用到定制化的CRM系统助力工作的精准度等等。最初想要实现这些应用,需要企业自己购买服务器、硬件以及开发团队,自从云计算出现以后,想要得到这样一套应用变得简单了,没有专业的团队也能够得到满足自己搭建需求的应用。根据NIST(美国国家标准与技术研究院)的权威定义,云计算的服务模式SPI,即SaaS、PaaS和IaaS。 SaaS软件即服务SaaS系统,英文全称“Software-as-a-Service”,中文全称“软件即服务”。常见的SaaS产品种类包括ERP(企业资源计划)、CRM(客户关系管理)、OA(办公自动化)、EHR(人力资源管理)、SCM(供应链管理)等。传统软件系统基于本地,而云计算系统将本地服务器搬到了云端,通过软件连接互联网使用。主要有以下特点:软件系统的运行不受限于本地物理主机的性能,而是高速运行在云端服务器上;云端服务器24小时开机运行,只要连接互联网便可实现“随时”、“随地”的访问使用;方便随时在线收集用户需求,对SaaS平台进行集中维护更新;基于模块化功能开发,企业可根据不同行业用户需求快速迭代产品。最容易接触到关于SaaS的小程序或者软件,如H5应用、阿里钉钉、腾讯企业微信、云创办公等,这些应用平台上可提供各类SaaS小软件,从OA到ERP,再到CRM等等,可涵盖企业运行所需的几乎所用应用。 PaaS平台即服务PaaS系统,英文全称“Platform-as-a-Service”,中文全称“平台即服务”,也可以称之为“中间件”服务。传统软件离不开本地配置开发环境和服务器等设备,PaaS平台可以提供基础架构,开发者可以在此之上构建新的应用,或者二次开发新的功能,缩短应用的开发周期。主要有以下特点:提供已经开发完成的功能模块“中间件”,缩短开发者开发周期;节省本地开发硬件设备采购与维护费用;基于Web的开发环境,方便不同开发者、工作室跨区域、跨空间协作;PaaS平台可为应用提供实时的管理与监控,开发者可通过具体数值观察应用的运行状态。PaaS能够提供各种开发和分发应用的解决方案,如虚拟服务器和特定的操作系统。能够节省硬件上的费用,也让各类应用的开发更加便捷,让不同工作间的打通变得容易。熟知的PaaS平台就有百度BAE、新浪SAE、阿里Ali、腾讯云、云创办公等等,很多电商平台、视频网站等都可以通过PaaS实现快速部署。IaaS基础设施即服务IaaS系统,英文全称“Infrastructure-as-a-Service”,也可称之为“Hardware-as-a-Service”,中文全称“基础设施即服务”。IaaS服务一般分为三类:公有云(置于Internet上,面向注册、付费用户,核心属性是共享资源服务)、私有云(置于私有环境中,服务于单个客户,对数据、安全性和服务质量的提供最有效控制)、混合云(融合了公有云和私有云,将内部重要数据保存在本地数据中心,同时也可以使用公有云的计算资源)。IaaS提供的场外服务器,存储和网络硬件,可以进行租用,降低成本和办公场地费用,可随时通过这些硬件来运行其应用。熟知的IaaS服务有服务器托管业务,多数的IDC都提供这样的服务,用户自己不想要再采购价格昂贵的服务器和磁盘阵列了,所有的硬件都由IaaS提供,并且还能获得品质更高的网络资源。

云计算主要部署模式
公有云:众多企业公用一个云服务器,可以理解为共享资源服务。如果公有云比喻成出租公寓,那么企业就是其中的租户之一,当企业选择停止租用时,空间将被清理并释放出来租给下个租户。公有云的优点是价格低廉、使用便捷、节省维护成本,所以用户多以创业公司和个人居多。缺点是不够安全,容易发生文件泄露的风险,而且当需要移动大量数据的时候,企业面临的将是很大一笔费用。私有云:服务器可以是企业自己建立也可以是租用第三方服务器,企业独享服务器只为该企业提供数据服务。如果公有云是出租公寓,那么私有云就是独门独户的小别墅。私有云的优点是提供了更加安全的环境,用户可以根据需求选择定制其资源。缺点是安装成本高,高度安全性可能会使部分功能操作有局限性。混合云:混合了公有云和私有云的一种解决方式,企业可以将重要文件放置私有云,普通文件放置公有云,两者之间可以进行数据和应用的移植。混合云的优点是可以满足企业多样化需求,节省必要的开支。缺点是开发过程中因兼容等问题会变得比较复杂,后期的维护也需要花费时间和人力,对于企业的实力要求较高。

经典的云计算产品
亚马逊AWS(Amazon Web Services (AWS) )是亚马逊提供的专业云计算服务,于2006年推出,以Web服务的形式向企业提供IT基础设施服务,通常称为云计算。其主要优势之一是能够以根据业务发展来扩展的较低可变成本来替代前期资本基础设施费用。亚马逊网络服务所提供服务包括:亚马逊弹性计算网云(Amazon EC2)、亚马逊简单储存服务(Amazon S3)、亚马逊简单数据库(Amazon SimpleDB)、亚马逊简单队列服务(Amazon Simple Queue Service)以及Amazon CloudFront等。

IBM在2007年11月15日推出了蓝云计算平台,为客户带来即买即用的云计算平台。它包括一系列的云计算产品,使得计算不仅仅局限在本地机器或远程服务器农场(即服务器集群),通过架构一个分布式、可全球访问的资源结构,使得数据中心在类似于互联网的环境下运行计算。通过IBM的技术白皮书,我们可以一窥蓝云计算平台的内部构造。“蓝云”建立在IBM大规模计算领域的专业技术基础上,基于由IBM软件、系统技术和服务支持的开放标准和开源软件。简单地说,“蓝云”基于IBM Almaden研究中心(Almaden Research Center)的云基础架构,包括Xen和PowerVM虚拟化、Linux操作系统映像以及Hadoop文件系统与并行构建。“蓝云”由IBM Tivoli软件支持,通过管理服务器来确保基于需求的最佳性能。这包括通过能够跨越多服务器实时分配资源的软件,为客户带来一种无缝体验,加速性能并确保在最苛刻环境下的稳定性。IBM新近发布的“蓝云(Blue Cloud)”计划,能够帮助用户进行云计算环境的搭建。它通过将Tivoli、DB2、WebSphere与硬件产品(目前是x86刀片服务器)集成,能够为企业架设一个分布式、可全球访问的资源结构。根据IBM的计划,首款支持Power和x86处理器刀片服务器系统的“蓝云”产品将于2008年正式推出,并且计划随后推出基于System z“大型主机”的云环境,以及基于高密度机架集群的云环境。
阿里云服务大概分两个方面:1、把传统的计算机系统(包括软件、硬件等)SAAS化,终端用户不再关心底层建设,只需要按需求购买服务即可。比如云服务器ECS、云数据库RDS、云存储OSS/NAS、云防火墙等等,原来都是需要自建购买软硬件来完成相应的业务,现在可以全部以服务形式购买、使用;2、把分散、独立的服务聚合在一起。比如域名注册、企业邮箱服务、短信服务、安全验证服务、大数据服务等等再针对性举例:云服务器ECS云服务器ECS相当于一台虚拟服务器,基于庞大的物理服务器集群虚拟出来的,但可以像独立服务器一样使用,常见的是作为应用服务器(基于容器提供web服务)或数据库服务器(当然,阿里有专业的云数据库,在此不做多述)。应用服务器中最简单的一种应用方式是,比如个人博客、企业官网、web业务系统等,邮件服务之外(ECS默认禁用邮件SMTP服务25 端口,特殊情况需报备审核后使用)

云计算技术的新发展
随着云计算的不断演变,云计算不再是早期的简易平台,通过互联网云计算能够以最少的管理工作快速进行系统资源配置,以及随时访问更高级别的共享池。云计算的出现,让企业获得成本效益之外,还实现了简化IT管理和维护、内置安全性以及易于部署的模式等。基于这些优势,越来越多的企业开始使用云计算,以期能够帮助企业实现业务目标。未来,企业云用户关心的云计算会有哪些发展?1重新定义服务模式随着云计算的发展,云服务和解决方案将随之增长。软件即服务(SaaS)预计到2020年将以18%的年均复合增长率增长,平台即服务(PaaS)的采用率将在2020年达到56%,2018年基础设施即服务(IaaS)的全球市场规模将达到175亿美元。现阶段云计算是一种业务模式,服务提供商在定制的环境中处理客户的完整基础架构和软件需求。随着企业云服务的采用,云文件共享服务将会增加,而消费者云服务也将会随之增长。在云计算领域,亚马逊领先于微软、IBM、谷歌及其他技术巨头。2022年,亚马逊AWS营收将达到430亿美元。2混合云成优选2018年,云到云连接将不断增长。当前,多个云提供商都开放了平台上的APIs,以连接多个解决方案,API有助于同步多学科和跨功能的流程。通过允许数据和应用程序共享,从而实现公有云和私有云融合的云计算环境被称为混合云。为满足业务需求,未来企业将选择混合云,并进行大量定制,同时保留其内部解决方案。考虑到数据流的控制,内部部署是网络安全性更好的选择,因而未来企业更加钟情于私有云+公有云。3众包数据替代传统云存储传统的云存储不安全、速度慢且成本高,因此2018年将实现Google Drive和DropBox等众包数据存储。企业也正在使用这种类型的存储来生成更多的众包数据。例如,谷歌和亚马逊正在为大数据、数据分析和人工智能等应用提供免费的云存储,以便生成众包数据。4云安全支出剧增云应用越多,云安全性将变得更加脆弱,2017年全球信息安全支出为864亿美元,预计2018年全球信息安全支出将达到930亿美元。在未来,云计算行业将期待更多网络安全公司提出新的云安全措施。5物联网(IoT)和云计算云和物联网(IoT)是不可分割的,因为物联网需要云来运行和执行。物联网是一套完整的管理和集成的服务,允许企业大规模从全球分散的设备连接、管理和摄取物联网数据,对数据进行实时处理和分析,实施操作变更,并根据需要采取行动。2017年12月3日,世界互联网大会上,亚马逊全球AWS公共政策副总裁迈克尔.庞克表示,随着IoT的发展,我们现在进入了一个万物互联的时代,数以万计的产业、行业通过互联网实现互联。现在有更多的IoT连接到云端,因此云计算的使用将和物联网一起不断发展。6实现无服务器云计算的应用优势之一便是无服务器,无服务器应用将为那些专注于网络安全和恶意软件防护的企业提供即时支付型付费模式。触发式日志,数据包捕获分析和使用无服务器基础架构的流量信息将变得更加普遍,中小型企业能够获得与大型企业一样的规模效益和灵活性。云计算是信息技术发展和服务模式创新的集中体现,是信息化发展的重大变革和必然趋势,是信息时代国际竞争的制高点和经济发展新动能的助燃剂。云计算引发了软件开发部署模式的创新,成为承载各类应用的关键基础设施,并为大数据、物联网、人工智能等新兴领域的发展提供基础支撑。据统计,中国云计算市场正以30%左右的增速高速发展。在中国云计算高速发展的趋势下,随着各企业业务不断扩张,对于云计算的需求将越趋于个性化,未来更多的企业会将倾向于定制服务,即为企业量身打造适合于自身发展的云计算方案,这也势必成为未来市场的发展方向。

我国的云计算产业现状
全球云计算市场风起云涌、群雄争霸,中国云计算市场百花齐放、百舸争流!(1)全球云计算市场规模2013 年全球云服务市场约为1317亿美元,年增长率为18%,2014年全球云服务市场规模为1547.9亿美元,较上年同期增长17.5%。据预测,未来几年云服务市场仍将保持15%以上的增长率,2017 年达到2442 亿美元。此外,据《福布斯》网络版报道,Bain Company公布的最新报告显示,到2020年全球云计算市场的规模预计将升至3900亿美元,年复合增长率(CAGR)达到17%。2011-2017年全球云服务市场规模走势图资料来源:Gartner(2)全球云计算市场结构在云计算细分市场中,SaaS 规模仍然最大,IaaS 市场增长最快。SaaS 市场规模是IaaS 和PaaS 市场规模总和的一倍还多;但从年增长率来看则分别为45.2%、28.8%和24.4%,IaaS 和PaaS 的市场规模增速都超过SaaS,预计未来几年这种情况还将延续。据悉,当前来自公共和私有云服务及相关设备的利润达到了2012年时期的4倍,其中向终端客户提供云服务的提供商占据了其中20%的利润。同时期内,基于SaaS的应用市场规模的CAGR为18%,基于IaaS/PaaS应用市场规模的CAGR为27%。全球云计算细分市场格局资料来源:Gartner(3)全球云计算区域分布欧美等发达国家占据了云服务市场的主导地位(75%以上),其中,美国、西欧分别占据了全球50%和23.5%的市场份额;虽然中国市场所占份额仅为4%,但近几年一直呈上升之势(2011 年中国市场占全球3.2%、2012 年占3.7%)。由于云计算市场发展受到国家信息化水平、经济发展水平、ICT 产业发展程度等条件的制约,未来几年全球市场格局不会有显著变化。全球云服务市场区域分布格局资料来源:Gartner目前,《财富》全球50强企业中有48家公司公开宣布了自己的云部署计划,其中多家企业的IT部门已在广泛使用云服务。客户对云服务的需求为:替换或者升级现有的云服务、某些非关键应用,以及创建新的数字业务。数据安全、满足监管合规需求以及供应商绑定,是企业客户向云市场转换过程中最为关注的三大因素。此外,所购买云服务成本和开支的不确定性,数据可移植性、所有权,数据的管控(升级、备份时间等),以及软件的兼容性和可靠性,也不同程度地受到客户关注。(4)中国云计算市场在互联网时代,市场从落地到成熟的时间会越来越短,中国的云计算市场份额的增速也会越来越快。在全球云计算浪潮的席卷下,我们从全球公有云计算龙头亚马逊AWS、国内云计算领导者阿里云的爆发式增长看到,目前国内整体产业正在步入远高于全球市场的快速爆发阶段。国内行业的整体趋势:1.云计算的渗透正在逐步从互联网领域客户,向传统产业的领域渗透2.在国家产业政策的驱动下,各个国家部委、省政府、垂直性的行业协会、大型央企,正在逐步将一类非敏感性的业务系统,搬迁到公有云上,并优选私有云作为整个IT架构转型和业务升级的载体,我们看到过去的一年中,国内几乎所有的省份都启动了区域性的云计算建设项目3.众多传统行业,诸如银行、保险、制造业等均选择云计算作为未来战略转型升级的重要支撑载体,一改过去主要以互联网客户为主的现状从客户变迁的显著趋势来看,云计算产业正在进入广泛的应用渗透,以及产品迭代升级与客户拓展交互推进的阶段,整体行业正在进入业绩逐步兑现的阶段!

云计算前景
从当前云计算的落地应用情况来看,当前云计算的落地应用已经进入到了新的阶段,这个阶段的主要特点有三个,其一是云计算正在从IT(互联网)行业开始向传统行业覆盖;其二是云计算正在成为企业进行网络化、智能化升级的重要支撑;其三是云计算正在全面整合行业资源,从而促进企业创新能力的提升。云计算在落地应用的初期,主要出发点有两个,其一是拥有大量“过剩算力”的互联网企业(以电子商务企业最为突出),希望通过云计算的方式来盘活自身的算力,从而降低运营成本;其二是对于中小企业来说,借助于云计算能够降低网络化升级的成本,可以采用更廉价的方式来拥抱互联网。从这两个出发点来看,云计算早期的关注点主要集中在“廉价算力”上,这使得云计算的模式能够迅速得到认可,也为云计算的后期发展奠定了扎实的用户基础。随着云计算对于大数据、人工智能等技术的支撑作用越发明显,当前云计算已经从早期的IaaS逐渐开始向PaaS和SaaS领域发展,这个过程正在不断提升云计算产品的附加值,而此时的云计算早已经不是“廉价算力”的代名词了,转而成为了企业拥抱工业互联网的重要桥梁。在工业互联网发展的大背景下,云计算的附加值会逐渐提升,而云计算的全面落地也为大数据和人工智能产品的落地,提供了重要的场景支撑。从云计算本身的特点来看,云计算说到底就是一种服务,在云计算落地应用的过程中,云计算的服务边界也在随着技术的迭代而不断扩展,所以当前云计算的想象空间还是非常大的,基于云计算也可以为企业的工业互联网发展之路带来更多的便利。最后,云计算的落地应用本身是一个动态的过程,云计算的全面落地在工业互联网时代会进一步加速。实际上,当前很多中小企业已经越来越离不开云计算了。

云计算的概念模型
云计算(cloud computing,分布式计算技术的一种,其最基本的概念,是透过网络将庞大的计算处理程序自动分拆成无数个较小的子程序,再交由多部服务器所组成的庞大系统经搜寻、计算分析之后将处理结果回传给用户。透过这项技术,网络服务提供者可以在数秒之内,达成处理数以千万计甚至亿计的信息,达到和“超级计算机”同样强大效能的网络服务。 最简单的云计算技术在网络服务中已经随处可见,例如搜寻引擎、网络信箱等,使用者只要输入简单指令即能得到大量信息。 未来如手机、GPS等行动装置都可以透过云计算技术,发展出更多的应用服务。 进一步的云计算不仅只做资料搜寻、分析的功能,未来如分析DNA结构、基因图谱定序、解析癌症细胞等,都可以透过这项技术轻易达成[7]。 稍早之前的大规模分布式计算技术即为“云计算”的概念起源 云计算时代,可以抛弃U盘等移动设备,只需要进入Google Docs页面,新建文档,编辑内容,然后,直接将文档的URL分享给你的朋友或者上司,他可以直接打开浏览器访问URL。我们再也不用担心因PC硬盘的损坏而发生资料丢失事件。狭义云计算提供资源的网络被称为“云”。“云”中的资源在使用者看来是可以无限扩展的,并且可以随时获取,按需使用,随时扩展,按使用付费。这种特性经常被称为像水电一样使用IT基础设施。 广义云计算这种服务可以是IT和软件、互联网相关的,也可以是任意其他的服务。解释:这种资源池称为“云”。“云”是一些可以自我维护和管理的虚拟计算资源,通常为一些大型服务器集群,包括计算服务器、存储服务器、宽带资源等等。云计算将所有的计算资源集中起来,并由软件实现自动管理,无需人为参与。这使得应用提供者无需为繁琐的细节而烦恼,能够更加专注于自己的业务,有利于创新和降低成本。有人打了个比方:这就好比是从古老的单台发电机模式转向了电厂集中供电的模式。它意味着计算能力也可以作为一种商品进行流通,就像煤气、水电一样,取用方便,费用低廉。最大的不同在于,它是通过互联网进行传输的。云计算是并行计算(Parallel Computing)、分布式计算(Distributed Computing)和网格计算(Grid Computing)的发展,或者说是这些计算机科学概念的商业实现。云计算是虚拟化(Virtualization)、效用计算(Utility Computing)、IaaS(基础设施即服务)、PaaS(平台即服务)、SaaS(软件即服务)等概念混合演进并跃升的结果。总的来说,云计算可以算作是网格计算的一个商业演化版。早在2002年,我国刘鹏就针对传统网格计算思路存在不实用问题,提出计算池的概念:“把分散在各地的高性能计算机用高速网络连接起来,用专门设计的中间件软件有机地粘合在一起,以Web界面接受各地科学工作者提出的计算请求,并将之分配到合适的结点上运行。计算池能大大提高资源的服务质量和利用率,同时避免跨结点划分应用程序所带来的低效性和复杂性,能够在目前条件下达到实用化要求。”如果将文中的“高性能计算机”换成“服务器集群”,将“科学工作者”换成“商业用户”,就与当前的云计算非常接近了。

政府推动云计算产业发展
政府机构应在云计算中扮演的五大角色为:用户、供应商、经纪人、店铺和监管者。一、作为“用户”作为用户,政府机构应“尽其所能”。但首先,政府机构应该确定自己是否真的需要云服务。Di Mato说:“很多情况下,更传统的服务往往更能满足需求。因此,尽管供应商大肆推销云服务,且很多政府机构都在鼓励采用云服务,但必须首先进行个体评估,明确机构内部是否真的存在云服务需求。”云服务为用户提供了越来越高的灵活度,这是一个很重要的机遇。但反过来,政府机构却日渐忽略了“更加传统但更加适合的解决方案”,也没有对供应商未来可能对其产生的“锁定效应”引起足够重视。因此,报告再次呼吁:无论供应商的宣传多么天花乱坠,无论各大机构倡导采用云服务的呼声多么强烈,各政府机构应首先评估是否真的需要云服务。二、作为“供应商”针对第二大角色,提醒政府机构特别是那些大的部门应“发展成熟的云计算模式”。大部分情况下,内部供应商都认为云计算是一种数据中心整合和虚拟化的必然趋势。转向云计算似乎是政府机构决策者可能采取解决方案之一,现在看来,也是一种非常明智的选择。Di Mato呼吁政府机构应思考云服务“是否符合政府的使命和战略目标”,“政府能否提供比市场参与者更加经济高效的服务?”三、作为“经纪人”报告指出,政府机构作为经纪人指的是政府机构成为用户和运营商的中间人,这样一来,“用户就不用再担心如何去寻找能够满足其要求的服务供应商”。政府机构作为经纪人可以为用户提供相对灵活的选择,“使用户避免与供应商直接接触”。作为中间人,政府机构得以维持内部和外部资源的平衡,有效控制灵活度和开支。但报告指出,这将是一件非常复杂的事情。四、作为“店铺”目前,政府机构在云计算中最被大家认同的角色就是店铺。五、作为“监管者”第五大即最后一个角色是监管者。政府作为监管者,能够降低使用云服务的“风险”,并通过“必要的监管职能确保一切(用户和供应商)正常运作。”这个角色的实施可以从两个角度出发:一是通过发表建议或直接“限制”采购过程;二是让供应商从一开始就介入云战略。

云计算是商业模式的创新
1.三大商业模式的由来

云计算的一个典型特征就是IT服务化,也就是将传统的IT产品,运算能力通过互联网以服务的形式交付给用户,于是就形成了云计算商业模式。云计算是一种全新的商业模式,其核心部分依然是数据中心,它使用的硬件设备主要是成千上万的工业标准服务器,它们由英特尔或者AMD生产的处理器以及其它硬件产商的产品组成。企业和个人用户通过高速互联网得到计算能力,从而避免了大量的硬件投资。

云计算的商业模式可以简单的划分基础设施即服务(IaaS),平台即服务(PaaS),软件即服务(SaaS),它们分别对应于传统IT中的“硬件”,“平台”和“(应用)软件”。

2.三大商业模式的简介

2.1 IaaS(Infrastructure-as-a-Service)--------基础设施即服务

基础设施即服务:
基础设施即服务(IaaS)交付给用户的是基本的基础设施资源。用户无需购买,维护硬件设备和相关系统软件,就可以直接在该层上构建自己的平台和应用。基础设施向用户提供虚拟化的计算资源、存储资源、网络资源个安全防护等。这些资源能够根据用户的需求动态的分配。支撑该服务的技术体系主要包括虚拟化技术和相关资源动态管理与调度技术。

代表性的产品:
1.IBM Blue Cloud“蓝云”:蓝云解决方案是业界的第一个,也是在技术上比较领先的企业级云计算解决方案。
2.Amazon EC2:EC2基于著名的开源虚拟化技术Xen,主要提供不同规格的计算资源(虚拟机)为主。提欧完善的API和Web管理界面方便用户使用。
3.Cisco UCS:是一个集成的可扩展多机箱平台。
4.Joyent:基于Open Solaris技术的IaaS服务。
2.2 PaaS(Platform-as-a-Service)---------平台即服务
平台即服务(PaaS)

PaaS 是为用户提供应用软件的开发、测试、部署和运行环境的服务。所谓环境,是指支撑使用特定开发工具开发的,应用能够在其上有效运行的软件支撑服务系统平台。支撑该服务的技术体系主要是分布式系统。
代表性产品:
1.Force.com:业界第一个PaaS平台,基于多租户的结构,主要通过提供完善的开发环境等功能来帮助企业和第三方供应商交付的在线应用。
2.Google APP Engine:使用户可以在Google及基础结构上运行自己的网络应用程序的PaaS应用程序。提供整套的开发工具和SDK来加速应用的开发,并提供大量的免费额度拉节省用户的开支。
3.Windows Azure Platform:微软推出的PaaS产品。运行在微软数据中心的服务器和网络基础上,通过公共互联网对外提供服服务。
4.Heroku:部署Ruby On Rails应用的PaaS平台,支持多种编程语言。
2.3 SaaS(Software-as-a-Service)-------软件即服务
软件即服务(SaaS)
SaaS 是一种以互联网为载体,以浏览器为交互方式,把服务器端的程序软件传给远程用户来提供软件服务的应用模式。在服务器端,SaaS 提供为用户搭建信息化所需要的所有网络基础设施及软硬件运作平台,负责所有前期的实施,后期的维护等一系列工作;客户只需要根据自己的需要,向SaaS 提供商租贷软件读物,无需购买软硬件、建设机房、招聘IT人员。
代表性产品:
1.Google Apps:中文名为“Google企业应用套件”,提供多个在线办公工具。该套件价格低廉,使用方便。
2.Salesforce CRM:是一款在线客户管理工具,在销售,市场营销、服务和合作伙伴这四个商业领域中提供完善的IT支持,还提供强大的定制和扩展机制。
3.Office Web Apps:是微软开发的完全免费的在线版Office,兼容Firefox,Safari等非IE系列浏览器。为用户提供随时随地的办公。
4.Zoho:是一款在线办公套件,在功能方面,他绝对是最全面的,有邮件、CRM、项目管理、Wiki、在线会议、论坛和人力资源等几十个在线工具供用户选择

3.Iaas和Paas之间的比较

PaaS的主要作用是将一个开发和运行平台作为服务提供给用户,而IaaS的主要作用是提供虚拟机或者其他资源作为服务提供给用户。接下来,将在七个方面对PaaS和IaaS进行比较:

开发环境:PaaS基本都会给开发者提供一整套包括IDE在内的开发和测试环境,而IaaS方面用户主要还是沿用之前比较熟悉那套开发环境,但是因为之前那套开发环境在和云的整合方面比较欠缺,所以使用起来不是很方便。
支持的应用:因为IaaS主要是提供虚拟机,而且普通的虚拟机能支持多种操作系统,所以IaaS支持的应用的范围是非常广泛的。但如果要让一个应用能跑在某个PaaS平台不是一件轻松的事,因为不仅需要确保这个应用是基于这个平台所支持的语言,而且也要确保这个应用只能调用这个平台所支持的API,如果这个应用调用了平台所不支持的API,那么就需要对这个应用进行修改。
  3) 开放标准:虽然很多IaaS平台都存在一定的私有功能,但是由于OVF等协议的存在,使得IaaS在跨平台和避免被供应商锁定这两面是稳步前进的。而PaaS平台的情况则不容乐观,因为不论是Google的App Engine,还是Salesforce的Force.com都存在一定的私有API。
可伸缩性:PaaS平台会自动调整资源来帮助运行于其上的应用更好地应对突发流量。而IaaS平台则需要开发人员手动对资源进行调整才能应对。
整合率和经济性: PaaS平台整合率是非常高,比如PaaS的代表Google App Engine能在一台服务器上承载成千上万的应用,而普通的IaaS平台的整合率最多也不会超过100,而且普遍在10左右,使得IaaS的经济性不如PaaS。
计费和监管:因为PaaS平台在计费和监管这两方面不仅达到了IaaS平台所能企及的操作系统层面,比如,CPU和内存的使用量等,而且还能做到应用层面,比如,应用的反应时间(Response Time)或者应用所消耗的事务多少等,这将提高计费和管理的精确性。
学习难度:因为在IaaS上面开发和管理应用和现有的方式比较接近,而PaaS上面开发则有可能需要学一门新的语言或者新的框架,所以IaaS学习难度更低。
未来的PK

在当今云计算环境当中,IaaS是非常主流的,无论是Amazon EC2还是Linode或者Joyent等,都占有一席之地,但是随着Google的App Engine,Salesforce的Force.com还是微软的Windows Azure等PaaS平台的推出,使得PaaS也开始崭露头角。谈到这两者的未来,特别是这两者之间的竞争关系,我个人认为,短期而言,因为IaaS模式在支持的应用和学习难度这两方面的优势,使得IaaS将会在短期之内会成为开发者的首选,但是从长期而言,因为PaaS模式的高整合率所带来经济型使得如果PaaS能解决诸如通用性和支持的应用等方面的挑战,它将会替代IaaS成为开发者的“新宠”。

它们之间的关系主要可以从两个角度进行分析:其一是用户体验角度,从这个角度而言,它们之间关系是独立的,因为它们面对不同类型的用户。其二是技术角度,从这个角度而言,它们并不是简单的继承关系(Saa…

4.三种模式之间的关系

它们之间的关系主要可以从两个角度进行分析:其一是用户体验角度,从这个角度而言,它们之间关系是独立的,因为它们面对不同类型的用户。其二是技术角度,从这个角度而言,它们并不是简单的继承关系(SaaS基于PaaS,而PaaS基于IaaS),因为首先SaaS可以是基于PaaS或者直接部署于IaaS之上,其次PaaS可以构建于IaaS之上,也可以直接构建在物理资源之上。虚拟化技术
虚拟化技术简介 虚拟化技术的概念11虚拟化bai是指计算元件在虚du拟的基础上zhi而不是真实的基础上运行。虚dao拟zhuan化技术可以扩大硬shu件的容量,简化软件的重新配置过程。CPU的虚拟化技术可以单CPU模拟多CPU并行,允许一个平台同时运行多个操作系统,并且应用程序都可以在相互独立的空间内运行而互不影响,从而显著提高计算机的工作效率。虚拟化技术与多任务以及超线程技术是完全不同的。多任务是指在一个操作系统中多个程序同时并行运行,而在虚拟化技术中,则可以同时运行多个操作系统,而且每一个操作系统中都有多个程序运行,每一个操作系统都运行在一个虚拟的CPU或者是虚拟主机上;而超线程技术只是单CPU模拟双CPU来平衡程序运行性能,这两个模拟出来的CPU是不能分离的,只能协同工作。虚拟化技术也与目前VMware Workstation等同样能达到虚拟效果的软件不同,是一个巨大的技术进步,具体表现在减少软件虚拟机相关开销和支持更广泛的操作系统方面。 虚拟化,原本是指资源的抽象化,也就是单一物理bai资源的多个逻辑表示,或者多个物理资源的单一逻辑表示。具体到服务器虚拟化,就是多个物理资源的单一逻辑表示。另外,存储虚拟化就是这种模式的一个例子。  对不了解虚拟化的终端用户来说,听到上面说“单一物理资源的多个逻辑表示”,往往会认为“虚拟化技术也太抽象了”。可是,如果要看计算机架构的话,虚拟化正是计算机的本质。  想一下,PC同时启动使用邮件和Web浏览器等多个应用,这时候你就会理解虚拟化技术。在这个情况下,操作系统把PC物理资源抽象化了,将多个应用集中到一个物理资源环境下。因为虚拟化hypervisor是运行在操作系统上层的,所以会被认为有些抽象。不过,如果试着从计算机结构来理解的话,也不是那么晦涩。  虚拟化的主要类型:主机型和hypervisor型  虚拟化的类型大致可以分为主机型和hypervisor型。当虚拟化最初应用于PC时的主流类型是主机型。  主机型是将虚拟化软件作为一个应用安装的主机操作系统中。虚拟硬件包括主机操作系统中的虚拟化软件、操作系统和应用。因为是被作为一个应用,所操作系统不是那么快。  主机型虚拟化的问题在于,如果主机操作系统发生故障,就会波及到作为该操作系统一个应用的虚拟化软件。而且,在硬件模拟过程中也会发生诸多问题。  接下来是hypervisor型。hypervisor型是指通过低层级软件让多个操作系统得以共享相同的硬件设备。 虚拟化技术的分类111.网络虚拟化在这里插入图片描述网络虚拟化相对计算、存储虚拟化来说是比较抽象的,以我们在学校书本上学的那点网络知识来理解网络虚拟化可能是不够的。在我们的印象中,网络就是由各种网络设备(如交换机、路由器)相连组成的一个网状结构,世界上的任何两个人都可以通过网络建立起连接。带着这样一种思路去理解网络虚拟化可能会感觉云里雾里——这样一个庞大的网络如何实现虚拟化?其实,网络虚拟化更多关注的是数据中心网络、主机网络这样比较「细粒度」的网络,所谓细粒度,是相对来说的,是深入到某一台物理主机之上的网络结构来谈的。如果把传统的网络看作「宏观网络」的话,那网络虚拟化关注的就是「微观网络」。网络虚拟化的目的,是要节省物理主机的网卡设备资源。从资源这个角度去理解,可能会比较好理解一点。为了完成虚拟机在同主机和跨主机之间的通信,需要借助某种“桥梁”来完成用户态到内核态(Guest 到 Host)的数据传输,这种桥梁的角色就是由虚拟的网络设备来完成,上面介绍了一个第三方的开源方案——OVS,它其实是一个融合了各种虚拟网络设备的集大成者,是一个产品级的解决方案。但 Linux 本身由于虚拟化技术的演进,也集成了一些虚拟网络设备的解决方案,主要有以下几种:(1)TAP/TUN/VETHTAP/TUN 是 Linux 内核实现的一对虚拟网络设备,TAP 工作在二层,TUN 工作在三层。Linux 内核通过 TAP/TUN 设备向绑定该设备的用户空间程序发送数据,反之,用户空间程序也可以像操作物理网络设备那样,向 TAP/TUN 设备发送数据。基于 TAP 驱动,即可实现虚拟机 vNIC 的功能,虚拟机的每个 vNIC 都与一个 TAP 设备相连,vNIC 之于 TAP 就如同 NIC 之于 eth。当一个 TAP 设备被创建时,在 Linux 设备文件目录下会生成一个对应的字符设备文件,用户程序可以像打开一个普通文件一样对这个文件进行读写。比如,当对这个 TAP 文件执行 write 操作时,相当于 TAP 设备收到了数据,并请求内核接受它,内核收到数据后将根据网络配置进行后续处理,处理过程类似于普通物理网卡从外界收到数据。当用户程序执行 read 请求时,相当于向内核查询 TAP 设备是否有数据要发送,有的话则发送,从而完成 TAP 设备的数据发送。TUN 则属于网络中三层的概念,数据收发过程和 TAP 是类似的,只不过它要指定一段 IPv4 地址或 IPv6 地址,并描述其相关的配置信息,其数据处理过程也是类似于普通物理网卡收到三层 IP 报文数据。VETH 设备总是成对出现,一端连着内核协议栈,另一端连着另一个设备,一个设备收到内核发送的数据后,会发送到另一个设备上去,这种设备通常用于容器中两个 namespace 之间的通信。(2)BridgeBridge 也是 Linux 内核实现的一个工作在二层的虚拟网络设备,但不同于 TAP/TUN 这种单端口的设备,Bridge 实现为多端口,本质上是一个虚拟交换机,具备和物理交换机类似的功能。Bridge 可以绑定其他 Linux 网络设备作为从设备,并将这些从设备虚拟化为端口,当一个从设备被绑定到 Bridge 上时,就相当于真实网络中的交换机端口上插入了一根连有终端的网线。如下图所示,Bridge 设备 br0 绑定了实际设备 eth0 和 虚拟设备设备 tap0/tap1,当这些从设备接收到数据时,会发送给 br0 ,br0 会根据 MAC 地址与端口的映射关系进行转发。 Bridge 与 TAP/TUN 的关系 因为 Bridge 工作在二层,所以绑定到它上面的从设备 eth0、tap0、tap1 均不需要设 IP,但是需要为 br0 设置 IP,因为对于上层路由器来说,这些设备位于同一个子网,需要一个统一的 IP 将其加入路由表中。这里有人可能会有疑问,Bridge 不是工作在二层吗,为什么会有 IP 的说法?其实 Bridge 虽然工作在二层,但它只是 Linux 网络设备抽象的一种,能设 IP 也不足为奇。对于实际设备 eth0 来说,本来它是有自己的 IP 的,但是绑定到 br0 之后,其 IP 就生效了,就和 br0 共享一个 IP 网段了,在设路由表的时候,就需要将 br0 设为目标网段的地址。总结传统网络架构到虚拟化的网络架构,可以看作是宏观网络到微观网络的过渡TAP/TUN/VETH、Bridge 这些虚拟的网络设备是 Linux 为了实现网络虚拟化而实现的网络设备模块,很多的云开源项目的网络功能都是基于这些技术做的,比如 Neutron、Docker network 等。OVS 是一个开源的成熟的产品级分布式虚拟交换机,基于 SDN 的思想,被大量应用在生产环境中。2.储存虚拟化存储虚拟化是指通过在存储设备上加入一个逻辑层,管理员通过逻辑层访问或者调整存储资源,提高存储利用率。这样便于集中的存储设备以及提供更好的性能和易用性。存储虚拟化包括基于主机的存储虚拟化方式、基于存储设备的虚拟化方式以及基于网络的存储虚拟化方式。基于主机的虚拟存储依赖于代理或管理软件,通过在一个或多个主机上进行安装和部署,来实现存储虚拟化的控制和管理。这种方法的可扩充性较差,实际运行的性能不是很好。由于这种方法要求在主机上安装控制软件,因此一个主机的故障可能影响整个SAN系统中数据的完整性。基于主机的虚拟化实现起来比较容易,设备成本最低。基于存储设备的存储虚拟化是在通过第三方的虚拟软件,基于存储的虚拟化通常只能提供一种不完全的存储虚拟化解决方案。这种技术主要用在同一存储设备内部,进行数据保护和数据迁移。优势在于与主机无关,不占用主机资源,数据管理功能丰富。容易和某个特定存储供应商的设备相协调,所以更容易管理。在这里插入图片描述基于网络的虚拟化方法是在网络设备之间实现存储虚拟化功能:1.基于互联设备的虚拟化基于互联设备的虚拟化方法能够在专用服务器上运行,使用标准操作系统,例如Windows、Linux或供应商提供的操作系统。这种方法具有基于主机方法的诸多优势——易使用、设备便宜。但是,基于设备的方法也有一些不足,机的故障或不适当的主机配置都可能导致访问到不被保护的数据。2. 基于路由器的虚拟化基于路由器的方法是在路由器固件上实现存储虚拟化功能。在此方法中,路由器被放置于每个主机到存储网络的数据通道中,用来截取网络中任何一个从主机到存储系统的命令。由于不依赖于在每个主机上运行的代理服务器,这种方法比基于主机或基于设备的方法具有更好的安全性。当连接主机到存储网络的路由器出现故障时,仍然可能导致主机上的数据不能被访问。但是只有联结于故障路由器的主机才会受到影响,其他主机仍然可以通过其他路由器访问存储系统。路由器的冗余可以支持动态多路径,这也为上述故障问题提供了一个解决方法。基于网络的存储虚拟化是通过在存储区域网(SAN)中添加虚拟化引擎实现的。主要用于异构存储系统的整合和统一数据管理。它的优势是:第一,与主机无关,不占用主机资源;第二,能够支持异构主机、异构存储设备;第三,能使不同存储设备的数据管理功能统一;第四,可以构建统一管理平台,可扩展性好。但也存在缺点:第一,部分厂商数据管理功能弱,难以达到虚拟化统一数据管理的目的;第二,部分厂商产品成熟度较低,仍然存在和不同存储和主机的兼容性问题。3.服务器虚拟化虚拟化是一种方法,本质上讲是指从逻辑角度而不是物理角度来对资源进行配置,是从单一的逻辑角度来看待不同的物理资源的方法。以此出发,虚拟化是一种逻辑角度出发的资源配置技术,是物理实际的逻辑抽象。比如说,当前只有一台计算机,通过虚拟技术,在用户看来,可以多台,每台都有其各自的CPU、内存、硬盘等物理资源。对于用户,虚拟化技术实现了软件跟硬件分离,用户不需要考虑后台的具体硬件实现,而只需在虚拟层环境上运行自己的系统和软件。而这些系统和软件在运行时,也似乎跟后台的物理平台无关。服务器虚拟化技术是将服务器物理资源抽象成逻辑资源,让一台服务器变成几台甚至上百台相互隔离的虚拟服务器,我们不再受限于物理上的界限,而是让CPU、内存、磁盘、I/0等硬件变成可以动态管理的“资源池”,从而提高资源的利用率,简化系统管理,实现服务器资源整合,让IT对业务的变化更具适应力。虚拟化的概念在20世纪60年代首次出现,利用它可以对属于稀有而昂贵资源的大型机硬件进行分区。随着时间的推移,微型计算机和PC可提供更有效、更经济的方法来分配处理能力,因此到20世纪80年代,虚拟技术已不再广泛使用。但是到了20世纪90年代,研究人员开始探索如何利用虚拟化解决与廉价硬件激增相关的一些问题,例如,利用率不足、管理成本不断攀升和易受攻击等。虚拟化技术处于时代前沿,可以帮助企业升级和管理他们在世界各地的IT基础架构并确保其安全。虚拟化技术可以扩大硬件的容量,简化软件的重新配置过程。CPU的虚拟化技术可以单CPU模拟多CPU并行,允许一个平台同时运行多个操作系统,并且应用程序都可以在相互独立的空间内运行而互不影响,从而显著提高计算机的工作效率。所有的IT设备,不管是PC、服务器还是存储,都有一个共同点:它们被设计用来完成一组特定的指令。这些指令组成一个指令集。对于虚拟技术而言,“虚拟”实际上就是指的虚拟这些指令集。虚拟机有许多不同的类型,但是它们有一个共同的主题就是模拟一个指令集的概念。每个虚拟机都有一个用户可以访问的指令集。虚拟机把这些虚拟指令“映射”到计算机的实际指令集。硬分区、软分区、逻辑分区、Solaris Container、VMware、Ken、微软Hyper—V这些虚拟技术都是运用的这个原理,只是虚拟指令集所处的层次位置不同。无论哪一种虚拟技术,都要求需要实施虚拟化的物理服务器能够良好地支持这些的虚拟化指令集。裸金属架构裸金属服务器再度流行,目前阿里云、华为云、腾讯云等各大厂商都推出了自己的裸金属服务器,那么到底什么是裸金属服务器?裸金属服务器的架构原理是什么?什么是裸金属服务器?裸金属服务器(Bare Metal Server)类似云上的专属物理服务器,在拥有弹性灵活的基础上,具有高性能的计算能力。计算性能与传统物理机无差别,具有安全物理隔离的特点。裸金属服务器再度流行?目前云计算各大厂商都推出了自己的裸金属服务器,例如:阿里云的弹性裸金属服务器,腾讯云的黑石服务器,华为的BMS裸金属服务器,为何裸金属服务器再度流行?主要是由于以下几点原因:物理机才有安全感部分企业,尤其是大型企业,对于将私有数据中心迁移到公有云有些许担忧,裸金属服务器可以给用户物理机一样的安全感。性能要求较高如果用户的应用程序对性能要求敏感,这时候选择裸金属服务器是最佳的选择。安全监管某些应用场景对数据安全和监管要求非常严格,虚拟机无法满足用户要求,需要独占物理机,显然裸金属服务器是比较合适的选择。传统托管的弊端用户选择传统的服务器托管模式需要耗费更多时间去采购设备、部署等,这个流程比较复杂,周期也比较长,无法及时响应业务变化,这时候裸金属服务器比较合适。虚拟机与物理机相结合场景用户上云可能会存在多种形态的计算资源,某些情况下虚拟机无法满足复杂的应用场景,这时候可能就需要需要虚拟机和物理机相结合的场景,裸金属服务器应运而生。寄居架构全虚拟化如果一个基于硬件运行(native)的OS不需要修改任何代码就可以直接跑在VMM上,也就是guest OS根本感知不到自己运行在一个虚拟化环境中(可以说VMM是骗术高明的),这种就被称为“完全虚拟化”。在这种模式下,VMM需要正确处理guest所有可能的指令。最简单直接的方法就是,VMM对guest运行过程中的每一条指令都进行解释和执行,模拟出这条指令执行的效果,这种方法既适用于和VMM相同体系结构的guest,也能用于模拟和VMM不同体系结构的guest(比如物理CPU是x86的,而guest是基于ARM的),其缺点也很明显,就是性能太差。有一些指令是要操作特权资源的,比如修改虚拟机的运行模式或者下面物理机的状态,读写时钟或者中断寄存器,这些指令被称为敏感指令,确实不适合由guest直接来控制。然而其他的一些非敏感指令,是完全可以在物理CPU上直接执行并返回结果给guest的,VMM只需要截获并模拟guest对敏感指令的执行和对特权资源的访问就可以了,以intel的VT-x和AMD的AMD-V为代表的硬件辅助虚拟化技术,就可以帮助VMM高效地识别和截获这些敏感指令。在这里插入图片描述半虚拟化半虚拟化:半虚拟化技术是后来才出现的技术,也叫做准虚拟化技术,现在比较热门,它就是在全虚拟化的基础上,把客户操作系统进行了修改,增加了一个专门的API,这个API可以将客户操作系统发出的指令进行最优化,即不需要VMM耗费一定的资源进行翻译操作。硬件辅助虚拟化你的CPU只有4个线程,不还是可以同时运行一大堆应用么。比如一边看网页,一边听音乐,一边敲代码,一边编译,等。这在本质上和overcommit你的CPU来跑虚拟机没什么区别,就是个时分复用,由host OS的scheduler来调度各个线程/vCPU。因为你大多数的vCPU都是处于idle的状态,于是它们本质上并不会占用你的物理线程。你可以试试让所有的虚拟机同时运行CPU bound的application来感受一下。操作系统虚拟化操作系统虚拟化目前还是处于非主流状态.2006年11月8日,权威研究机构Gartner发布了一份服务器技术发展的研究报告,其中有一个不同寻常的预测:到2010年,共享的操作系统虚拟化将成为主流虚拟化技术.文中提到的服务器操作系统虚拟化厂商包括:Sun Solaris Containers,SWsoft Virtuozzo,以及IBM z/OS和HP.服务虚拟化桌面虚拟化应用虚拟化虚拟化技术的优势和劣势 虚拟化技术的优势11虚拟化技术的bai优势:  ①更高的资源利用率——虚拟可支持实现物理资源和资源池的动态共享,提高资源利用率,特别是针对那些平均需求远低于需要为其提供专用资源的不同负载。  ②降低管理成本——虚拟可通过以下途径提高工作人员的效率:减少必须进行管理的物理资源的数量;隐藏物理资源的部分复杂性;通过实现自动化、获得更好的信息和实现中央管理来简化公共管理任务;实现负载管理自动化。另外,虚拟还可以支持在多个平台上使用公共的工具。  ③提高使用灵活性——通过虚拟可实现动态的资源部署和重配置,满足不断变化的业务需求。  ④提高安全性——虚拟可实现较简单的共享机制无法实现的隔离和划分,这些特性可实现对数据和服务进行可控和安全的访问。  ⑤更高的可用性——虚拟可在不影响用户的情况下对物理资源进行删除、升级或改变。  ⑥更高的可扩展性——根据不同的产品,资源分区和汇聚可支持实现比个体物理资源小得多或大得多的虚拟资源,这意味着您可以在不改变物理资源配置的情况下进行规模调整。  ⑦互操作性和投资保护——虚拟资源可提供底层物理资源无法提供的与各种接口和协议的兼容性。  ⑧改进资源供应——与个体物理资源单位相比,虚拟能够以更小的单位进行资源分配。  虚‎‎拟所能提供的优势取决于客户的目标、所选择的特殊虚拟技术以及现有的IT基础架构。 并‎‎非所有的客户都能够从实现某一特殊虚拟化解决方案中获得同样的利益。 现在,即使是使用虚拟化进行简单的服务器整合,客户们也经常可以在某种程度上获得以下很多利益: 更高的资源利用率——虚拟可支持实现物理资源和资源池的动态共享,提高资源利用率,特别是针对那些平均需求远低于需要为其提供专用资源的不同负载。 n 降低管理成本——虚拟可通过以下途径提高工作人员的效率:减少必须进行管理的物理资源的数量; 隐藏物理资源的部分复杂性; 通过实现自动化、获得更好的信息和实现中央管理来简化公共管理任务; 实现负载管理自动化。 另外,虚拟还可以支持在多个平台上使用公共的工具。 n 提高使用灵活性——通过虚拟可实现动态的资源部署和重配置,满足不断变化的业务需求。 n 提高安全性——虚拟可实现较简单的共享机制无法实现的隔离和划分,这些特性可实现对数据和服务进行可控和安全的访问。 n 更高的可用性——虚拟可在不影响用户的情况下对物理资源进行删除、升级或改变。 n 更高的可扩展性——根据不同的产品,资源分区和汇聚可支持实现比个体物理资源小得多或大得多的虚拟资源,这意味着您可以在不改变物理资源配置的情况下进行规模调整。 n 互操作性和投资保护——虚拟资源可提供底层物理资源无法提供的与各种接口和协议的兼容性。 n 改进资源供应——与个体物理资源单位相比,虚拟能够以更小的单位进行资源分配。 虚拟化技术的劣势111、缺乏虚拟bai化的总体规划在部署虚拟化之前缺乏总体规划是当前虚拟化存在的最大陷阱。例如,部分用户只为提高部分应用中的服务器资源利用效率,缺乏对服务器、负载、应用和业务需求的全面研究和规划,等到应用了虚拟化软件之后,才认识到虚拟化需要针对不同的工作负载进行不同的考虑,并对不同的负载采用不同的方案,随之还会涉及虚拟应用的整合比等问题。还有很多用户对TCO研究不足,甚至在上虚拟机之前根本未考虑到还需在硬件、基础架构方面作出更多的深入分析和优化的投入。没有前期规划,会给虚拟化应用带来极大的风险。2、缺乏虚拟化的系统管理很多用户对虚拟化系统的管理没有充分认知,在部署后也没有重视并实施具体的管理方法,这很可能会导致虚拟环境产生性能问题,并给IT人员带来无尽的新的头疼问题。例如,在容量、性能、配置或自动化部署和管理等方面,虚拟化必然会成为一系列新问题的导火索。轻视虚拟化应用中的系统管理的复杂程度,造成系统管理不到位,将是虚拟化应用中致命的问题。3、虚拟机负载过重虚拟化可以对资源进行动态配置,从而处理更多,或者更少的负载,这种作法似乎可以解决虚拟设施可能负载过重的问题。但这并不意味着虚拟服务器就是永远压不垮的。虚拟技术有其自己的限制,在基础设施中添加其无法应付的太多虚拟机会适得其反。很多用户在配置虚拟机时对物理机的承受能力没有进行深入分析。4、缺少测试环节虚拟化是实现快速资源服务的途径,但这并不意味着IT部门就可以忽视虚拟机实施前和向虚拟基础设施分配应用之前的容量规划和测试。很多企业用户在应用了动态虚拟机之后才意识到没有测试I/O、占用率等其他问题,就匆匆将新的应用或服务器搬进了虚拟环境。这往往会带来很大的问题。5、没有持续优化在虚拟化中,大量的需求都是动态的。这也意味着企业在部署虚拟化的相关解决方案之后需要进行持续地管理与优化。很多用户在这个方面做得非常不够。企业的IT主管必须从一开始就做好虚拟机生命周期管理规划,并同时配备相关虚拟化管理制。在这里插入图片描述有诸多优点自然也伴随着不足之处,当然并不是每一个应用程序可以虚拟化。有些应用程序需要直接调用硬件,必须在共享的内存空间中运行,或者需要一个只与特定的设备兼容的专用的设备驱动程序。前期高额的费用虽然从长远来看,虚拟化技术是有经济效益的。当然考虑到更长久,我们不得不在硬件上投入更多的资金。从长远来看,肯定会节省开支,但是现实成本还是挺高的。降低硬件利用率这点似乎和上面所说的优点矛盾了,其实只是角度不同而已。虚拟化必然需要占用一部分资源(CPU/内存/硬盘),一个可以发挥出100%性能的物理机,加上虚拟化以后,可能只能发挥出80%的性能,所以又说它会降低资源的利用率。因此某些极度吃资源的应用可能并不适用于虚拟化的环境。更大的错误影响面在常规配置下,虚拟机存储于本地物理机硬盘上。真实物理机down机,上面的虚拟机将全部不可用。另外物理机硬盘损坏,一般可以恢复出绝大部分文件,但碰巧坏的是虚拟机镜像文件,结果虚拟机里面的文件可能全部损坏。实施配置复杂,管理复杂通常的IT管理员并不能很好的排查并解决虚拟化使用过程中的问题,例如经常碰到的VM不能启动或者卡死,没有真实物理机那么好解决。一定的限制性使用虚拟化技术的一个主要缺点是,它涉及到各种限制。并非所有的服务器和应用程序虚拟化是友好的,这意味着你的企业的IT基础设施的某些方面可能与虚拟化解决方案兼容。为此,应该考虑的是,仍然有不完全支持虚拟化环境的供应商。安全性虽说虚拟化技术在安全上已经很不错了,但是虚拟化技术自身也存在着一定的安全隐患。虚拟化过程的目的是分离虚拟化的资源,但是仍然有一些情况下,服务器意外地对其他不应该看到它们的人可见。虚拟化技术与云计算虚拟化是一种将功能与硬件分离的技术,而云则建立在这种分离技术之上。由于两者的核心理念都是从抽象资源中创建可用的环境,所以很容易被混为一谈。单纯地从基础架构即服务(IaaS)的角度来理解二者的区别最为简单。稳定的操作系统(如Linux®)是云计算的基础。它可帮助用户实现公共、私有和混合环境之间的独立性。如果您已经设置好相应的内部网和/或互联网访问权限,则可通过虚拟化来创建云。借助一个名为 “Hypervisor”(虚拟机监控程序)的软件,可以监控物理硬件,并对机器中各项资源进行抽象。这些资源可以是原始处理能力、存储或基于云的应用,这些应用包含部署所需的所有运行时代码和资源。如果就此止步,那么您实施的就是虚拟化,而不是云计算。只有当虚拟资源被分配至中央池中,才能被称为“云”;这些云还需通过管理和自动化软件进行编排,才能被视为“云计算”。云具备以下额外优势:自助服务访问权限、自动化基础架构扩展和动态资源池——这些是它与传统虚拟化的最大区别。具体比较虚拟化的主要功能是把单个资源抽象成多个给用户使用,而云计算则是帮助不同部门(通过私有云)或公司(通过公有云)访问一个自动置备的资源池。虚拟化 借助虚拟化技术,用户能以单个物理硬件系统为基础创建多个模拟环境或专用资源。名为“虚拟机监控程序”的软件可直接连接到硬件,从而将一个系统划分为不同的、单独安全环境,即虚拟机(VM)。虚拟机监控程序能够将计算机资源与硬件分离并适当分配资源,而虚拟机则依赖这些功能运行。云计算 云计算则由多种规则和方法组合而成,可以跨任何网络向用户按需提供计算、网络和存储基础架构资源、服务、平台和应用。这些基础架构资源、服务和应用来源于云。 简单来讲,云就是一系列管理及自动化软件编排而成的虚拟资源池,旨在帮助用户通过支持自动扩展和动态资源分配的自助服务门户,按需对这些资源进行访问。如何从虚拟化转换成云计算?如果已经有虚拟基础架构,您可以将虚拟资源集中在一起,使用管理和自动化软件对其进行编排,然后为用户创建自助服务门户,以此来创建云服务。但是,如果您受到供应商的企业许可协议的约束,则可能会限制您投资云、容器和自动化系统等现代技术,那么实现从虚拟化向云计算的转换就不是那么简单了。在这里插入图片描述虚拟化技术原理CPU虚拟化一个KVM(kernel-based virtual machine)虚拟机在宿主机上就是一个 qemu-kvm进程,与其他Linux进程一样被调用。 虚拟机的每个虚拟CPU则对应 qemu-kvm进程中的一个进程。 因此,虚拟CPU可以超过物理CPU的数量,叫CPU超配。内存虚拟化KVM通过内存虚拟化共享物理系统内存,动态分配给虚拟机。image为了在一台机器上运行多个虚拟机,KVM需要实现VA(虚拟内存) --> PA(物理内存) --> MA(机器内存)的转换,其中虚拟机OS控制VA->PA的转换,KVM负责PA->MA的映射。存储虚拟化KVM的虚拟化通过存储池(Storage Pool)和卷(Volume)实现。 存储池是宿主机可见的一片存储空间,,可以分为多种类型。 卷是存储池的一块空间,卷在虚拟机眼中就是一块硬盘。 不同类型的存储池:目录类型文件目录是最常见的存储池。 目录是一个存储池,默认是 /var/lib/libvirt/images/ 目录里的一个文件就是一个卷。使用文件做卷的优点:存储方便移植性好可复制可远程访问KVM支持多种卷格式:raw: 默认格式,镜像什么格式,卷就是什么格式qcow2: cow即写时复制(copy on write),节省空间,支持AES加密。vmdk:是VMWare 的虚拟磁盘格式,VM虚拟机可以直接在KVM上运行vdi: 是VirtualBox的虚拟磁盘格式逻辑卷管理(Logical Volume Manager)类型宿主机上的VG(Volume Group)中的LV(Logical Volume)作为虚拟磁盘分配给虚拟机使用,只能作为数据盘,不能作为启动盘,因为它没有MBR引导记录。 这种情形,主机的VG就是存储池,LV就是卷。其他类型KVM还支持 iSCSI, Ceph等多种类型的存储池。网络虚拟化基本概念假设宿主机有1块物理网卡en0, 运行着一个虚拟机VM1。那问题是如何让VM1访问外网呢? a):将物理网卡直接分配给虚拟机,但这样会导致宿主机和其他的虚拟机没有网络连接了。 b):给虚拟机分配一个虚拟网卡vnet0, 通过Linux Bridge br0 将 en0和vnet0连接起来。这个是实际采用的方案。Linux Bridge可以看做是物理接口和虚拟接口的转发器。如果添加虚拟机VM2,自然也给它分配虚拟网卡vet0, 这两块虚拟网卡都通过 br0 和en0通信,并且虚拟机之前是可以直接通信的。因此br0就充当了两台虚拟机的出口网关。VLAN没有VLAN之前,连在同一交换机上的主机共享广播域,独占冲突域,相互之间可以直接通信。 VLAN 能够将一个交换机的端口划分为若干个组, 使得连接在同一组中端口的主机位于同一逻辑网络中,不同VLAN间通信需要经过三层路由。VLAN是二层上的隔离,隔离广播指的是二层以太网广播帧,和三层的IP广播报文区别开来。VLAN用VLAN ID 唯一标示组,范围是 [1, 4096]。 支持VLAN的交换机因而具有两种端口:access端口和trunk端口。 access口隶属某一个组,只能把access口划分给一个VLAN组,没有显式指定,默认在0号组。 trunk口允许不同的VLAN帧通过,通常是连接两个交换机的端口模式。imageeth0是宿主机的物理网卡,eth0.10是与它连接的子设备。eth0.10就是VLAN设备,vlan id 是10。eth0.10挂载在brvlan10的Linux Bridge上, 虚拟机VM1的虚拟网卡vnet0也挂载在 brvlan10上。如此一来,vnet0, brvlan10 和 eth0.10 都接在VLAN10 的Access口上。而eth0充当trunk口。如果再增加一个VLAN2image那么VM2的三个虚拟接口都是接在VLAN 20 上的。对于新创建的虚拟机,只要为它创建一个VLAN组,并将其虚拟网卡放到这个组中,就能共享宿主机的物理网卡了。还有,一个物理网卡可以为多个虚拟网卡服务,而一个虚拟网卡则只能对应于一块物理网卡。即一对多关系。Linux Bridge + VLAN = 虚拟交换机对LVM的网络虚拟化总结:物理交换机存在多个VLAN, 每个VLAN拥有多个端口。同一VLAN的主机可以互相通信,不同VLAN端口之间相互隔离。因此交换机包含两层功能:交换和隔离。Linux的VLAN设备实现的是隔离,但没有交换功能。一个VLAN母设备(如eth0)不能拥有两个相同VLAN id的子设备。Linux Bridge专门实现交换功能。将同一VLAN的子设备都挂载到一个Bridge上,设备(也就是两台虚拟机)之间可以交换数据。什么是虚拟化?云计算的核心技术之一就是虚拟化技术。所谓虚拟化,是指通过虚拟化技术将一台计算机虚拟为多台逻辑计算机。在一台计算机上同时运行多个逻辑计算机,每个逻辑计算机可运行不同的操作系统,并且应用程序都可以在相互独立的空间内运行而互不影响,从而显著提高计算机的工作效率。虚拟化的核心软件VMM,是一种运行在物理服务器和操作系统之间的中间层软件。VMM是一种在虚拟环境中的“元”操作系统。他们可以访问服务器上包括CPU、内存、磁盘、网卡在内的所有物理设备。VMM不但协调着这些硬件资源的访问,也同时在各个虚拟机之间施加防护。当服务器启动并执行VMM时,它会加载所有虚拟机客户端的操作系统同时会分配给每一台虚拟机适量的内存,CPU,网络和磁盘。虚拟化方式虚拟化技术有很多实现方式,比如根据虚拟化的程度和级别,有软件虚拟化和硬件虚拟化,全虚拟化和半虚拟化。软件虚拟化:顾名思义,就是采用纯软件的方法在在现有的物理平台上实现物理平台访问的截获和模拟,该物理平台往往不支持硬件虚拟化。硬件虚拟化:简单来说,就是物理平台本身提供了对特殊指令的截获和重定向的硬件支持,新的硬件会提供额外的资源来帮助软件实现对关键硬件资源的虚拟化,从而提升性能。全虚拟化:完全虚拟化技术又叫硬件辅助虚拟化技术,最初所使用的虚拟化技术就是全虚拟化(Full Virtualization)技术,它在虚拟机(VM)和硬件之间加了一个软件层Hypervisor,或者叫做虚拟机管理程序或虚拟机监视器(VMM)。半虚拟化:半虚拟化技术是后来才出现的技术,也叫做准虚拟化技术,现在比较热门,它就是在全虚拟化的基础上,把客户操作系统进行了修改,增加了一个专门的API,这个API可以将客户操作系统发出的指令进行最优化,即不需要VMM耗费一定的资源进行翻译操作。虚拟机技术原理虚拟机其实就是一款模拟电脑硬件的软件。比如说你的电脑,在没有装windows系统或者其他操作系统之前,它本身是一个由硬件组装的电脑,一般称为裸机。而虚拟机就是模拟电脑硬件的一款软件。记住,虚拟机是一款软件。你装了虚拟机之后可以相当于你多了一台裸机。然后再在虚拟机里装操作系统,就相当于多了一台电脑。注:简洁点,虚拟机的原理就是模拟硬件的。1、虚拟机(英文全称:Virtual Machine)是指通过软件模拟的具有完整硬件系统功能的、运行在一个完全隔离环境中的完整计算机系统,目前流行的虚拟机软件有VMware(VMWare ACE)、Virtual Box和Virtual PC,它们都能在Windows系统上虚拟出多个计算机,每个虚拟计算机可以独立运行,可以安装各种软件与应用等。  2、虚拟机在现实中的作用还是相当大的,比如最简单我们电脑中没有光驱,如果要安装系统就可以使用虚拟机来安装系统,虚拟机内部拥有虚拟光驱,支持直接打开系统镜像文件安装系统,另外虚拟机技术在游戏爱好者朋友眼中也相当实用,比如一般一台电脑很多游戏不支持同时多开,但我们可以在电脑中多创建几个虚拟机,那么在虚拟机系统中即可单独再运行程序了,这样即可实现一台电脑同时多开同一游戏了。  3、其实虚拟机在企业中应用非常广,由于服务器通常配置很高,因为很多服务器网络商为了满足中小站长需求,通常将一台服务器划分出多个虚拟机服务器,这样每个网站即可分配独立服务器资源一部分,并且互相不影响且可以配独立IP地址,大大解决了中小企业使用单独服务器费用过高的问题,目前购买的VPS服务器则均为采用该技术,做过网站的朋友初期用到的虚拟空间也是该原理。CPU虚拟化原理cpu的虚拟化技术:CPU的虚拟化技术可以单CPU模拟多CPU并行,允许一个平台同时运行多个操作系统,并且应用程序都可以在相互独立的空间内运行而互不影响,从而显著提高计算机的工作效率;虚拟化技术与多任务以及超线程技术是完全不同的。多任务是指在一个操作系统中多个程序同时并行运行,而在虚拟化技术中,则可以同时运行多个操作系统,而且每一个操作系统中都有多个程序运行,每一个操作系统都运行在一个虚拟的CPU或者是虚拟主机上;而超线程技术只是单CPU模拟双CPU来平衡程序运行性能,这两个模拟出来的CPU是不能分离的,只能协同工作;虚拟化技术也与目前VMware Workstation等同样能达到虚拟效果的软件不同,是一个巨大的技术进步,具体表现在减少软件虚拟机相关开销和支持更广泛的操作系统方面;纯软件虚拟化解决方案存在很多限制。“客户”操作系统很多情况下是通过VMM(Virtual Machine Monitor,虚拟机监视器)来与硬件进行通信,由VMM来决定其对系统上所有虚拟机的访问。(注意,大多数处理器和内存访问独立于VMM,只在发生特定事件时才会涉及VMM,如页面错误。)在纯软件虚拟化解决方案中,VMM在软件套件中的位置是传统意义上操作系统所处的位置,而操作系统的位置是传统意义上应用程序所处的位置。这一额外的通信层需要进行二进制转换,以通过提供到物理资源(如处理器、内存、存储、显卡和网卡等)的接口,模拟硬件环境。这种转换必然会增加系统的复杂性。此外,客户操作系统的支持受到虚拟机环境的能力限制,这会阻碍特定技术的部署,如64位客户操作系统。在纯软件解决方案中,软件堆栈增加的复杂性意味着,这些环境难于管理,因而会加大确保系统可靠性和安全性的困难;而CPU的虚拟化技术是一种硬件方案,支持虚拟技术的CPU带有特别优化过的指令集来控制虚拟过程,通过这些指令集,VMM会很容易提高性能,相比软件的虚拟实现方式会很大程度上提高性能。虚拟化技术可提供基于芯片的功能,借助兼容VMM软件能够改进纯软件解决方案。由于虚拟化硬件可提供全新的架构,支持操作系统直接在上面运行,从而无需进行二进制转换,减少了相关的性能开销,极大简化了VMM设计,进而使VMM能够按通用标准进行编写,性能更加强大。另外,在纯软件VMM中,目前缺少对64位客户操作系统的支持,而随着64位处理器的不断普及,这一严重缺点也日益突出。而CPU的虚拟化技术除支持广泛的传统操作系统之外,还支持64位客户操作系统;两大CPU巨头Intel和AMD都想方设法在虚拟化领域中占得先机,但是AMD的虚拟化技术在时间上要比Intel落后几个月。Intel自2005年末开始便在其处理器产品线中推广应用Intel Virtualization Technology(Intel VT)虚拟化技术。目前,Intel已经发布了具有Intel VT虚拟化技术的一系列处理器产品,包括桌面平台的Pentium 4 6X2系列、Pentium D 9X0系列和Pentium EE 9XX系列。事实上,不同类型的虚拟化技术是从不同的地方开始引导虚拟机系统的:从模拟的 BIOS 开始引导的,支持 MBR、EFI、PXE 等启动方式,如 QEMU、VMWare;从内核开始引导的,虚拟机镜像内不包含内核,如 KVM、Xen;从 init 进程开始引导的,虚拟机是一个与主机共享内核的容器,会按照操作系统的引导过程启动各种系统服务,如 LXC、OpenVZ;只运行一个特定的应用程序或服务的,也是基于容器,如 Docker。/dev/kvm提供的操作包括:• 创建一个新的虚拟机• 向一个虚拟机中分配内存• 读写虚拟cpu寄存器• 向一个虚拟cpu中注入中断• 运行一个虚拟cpu我们在前面的文章中提到了虚拟化技术的大致分类情况,即分为全虚拟化、半虚拟化和硬件辅助虚拟化3大类。而我们虚拟化技术最主要的虚拟主体就是我们的硬件CPU、内存和IO,那么我们的CPU在全虚拟化模式下如何工作,在半虚拟化下如何工作,在硬件辅助虚拟化模式下如何工作?或着说细分下来,我们又可以分为:CPU的全虚拟化技术、半虚拟化技术和硬件辅助虚拟化技术,内存的全虚拟化技术、半虚拟化技术和硬件辅助虚拟化技术IO设备的全虚拟化技术、半虚拟化技术和硬件辅助虚拟化技术。本次我们就来说说CPU的全虚拟化技术、半虚拟化技术和硬件辅助虚拟化技术。不支持硬件辅助虚拟化技术的X86架构下的CPU有4个特权级(ring0~ring3),操作系统是处于最高级别的ring0,应用程序处于最低级别的ring3。内存虚拟化原理虚拟机管理程序 (HV) 通过虚拟真实的物理内存, 以便在虚拟机中运行的未经修改的操作系统 (如 linux 或 android),客户操作系统可以管理自己的连续物理内存的视图。虚拟机管理程序使用虚拟处理器标识符 (VPID) 和扩展页面表 (EPT) 来把客户物理地址转换为实际主机物理地址。虚拟机管理程序启用了EPT和 VPID 硬件虚拟化功能, 为操作系统和客户系统建立了EPT页表, 并向其他应用程序提供了EPT页表操作接口。从虚拟机管理程序的角度来看, 需要考虑以下几种内存空间,有:主机物理地址 (Host Physical Address): 本地主机物理地址空间,主机虚拟地址 (Host Virtual Address): 基于MMU机制的本地主机虚拟地址空间。我们使用页面表管理在HPA和HVA空间之间进行映射。从虚拟机上运行的客户操作系统来看, 有:客户物理地址 (Guest Physical Address): 虚拟机的客户操作系统的物理地址空间。在GPA到HPA之间的映射通常需要基于类似MMU的硬件模块 (例如X86中的EPT), 同时与页面表相关联客户操作系统虚拟地址 (Guest Virtual Address): 基于VMMU机制的虚拟机中客户操作系统的虚拟地址空间通常在这样的架构下,内存地址访问有四层映射:GVA - GPA - HVA - HPA GVA - GPA 的映射由客户操作系统来负责,而 HVA - HPA 由微内核虚拟化操作系统来负责维护。于是在虚拟化系统中我们需要一种机制,来维护 GPA - HVA 的映射。常用的实现有 SPT(Shadow Page Table) 和 EPT/NPT (Intel) ,前者通过软件维护影子页表,后者通过硬件特性实现二级映射。 本文说明虚拟化系统的内存管理基础结构, 以及它如何在虚拟化系统内处理不同的内存空间:虚拟机管理程序如何管理本地主机内存 (HPA/HVA)虚拟机管理程序如何管理客户操作系统内存 (HPA/GPA)虚拟机管理程序如何管理两个不同客户操作系统内存(HPA/GPA) 虚拟化物理内存管理 在虚拟化系中, 虚拟机最先初始化MMU页表以管理所有物理内存, 然后切换到新的MMU页表。在平台初始化阶段初始化MMU页表后, 就不会对MMU页表进行更新,因为这牵涉到客户操作系统内存和交互区域,系统启动时间优化等问题,因此MMU在平台初始化阶段固定对系统稳定性有一定的影响。虚拟化物理内存分布 无可非议虚拟机管理程序必须具备系统内存管理功能。通常情况下, 系统启动引导程序 (例如Intel的EFI) 将系统物理内存布局表传递给虚拟机管理程序,虚拟机管理程序基于此表使用分级页表来执行内存管理工作。如下图所示,此表包含系统平台的原始内存布局。虚拟化内存初始化 虚拟机管理程序在分页模式下运行。系统启动引导处理器 (BSP) 获取系统平台内存布局表后, BSP将在此基础上创建其MMU页面表。应用处理器 (AP) 接收 IPI CPU启动中断后, 它将使用由BSP创建的 MMU页表,并启用SMEP。SMEP(Supervisor Mode Execution Prevention),在现代intel处理器上,当设置了CR4存器的控制位时,会保护特权进程(比如在内核态的程序)不能在不含supervisor标志(对于ARM处理器,就是PXN标志)的内存区域执行代码。(直白地说就是内核程序不能跳转到用户态执行代码)。 虚拟机管理程序可以访问所有系统内存,并有自己的内存,为其代码/数据的 write-back 缓存,使用最小内存页将虚拟地址空间映射到物理地址空间。如果更新了页面的内存类型或访问权限, 或者删除了某些虚拟地址空间, 则会导致相应页面的拆分。虚拟机管理程序仍将继续使用最小内存页将虚拟地址空间映射到物理地址空间。内存分页池功能 内存分页池功能提供了对多种4kb 页面大小内存块的动态管理, 虚拟机管理程序通常使用这些内存块来存储内部数据。通过这些功能, 虚拟机管理程序可以分配和释放相应的内存页面。虚拟机管理程序内存虚拟化 虚拟机管理程序为每个客户操作系统提供了一个连续的物理内存区域。它还保证每个客户操作系统互相隔离不能访问彼此程序中的代码和内部数据, 并且每个客户操作系统在未授权的情况下不能访问虚拟机的代码和内部数据。虚拟机管理程序应该支持以下功能:支持EPT和VPID硬件虚拟化功能,为每个客户操作系统建立EPT页表,提供EPT页表操作服务,为每个客户操作系统提供虚拟化的MTRR机制,提供VPID操作服务,为GPA和HPA之间的地址空间映射提供服务,提供虚拟机管理程序和每个客户操作系统之间的数据传输服务。虚拟化内存功能检查 在虚拟机管理程序中, 内存虚拟化提供 EPT/VPID功能检查服务和支持EPT大型页面检查服务。不同地址空间的数据传输 在虚拟化系统中, 虚拟机管理程序、不同客户操作系统中使用不同的内存空间来实现各自的隔离。在这些内存空间之间, 有不同类型的数据传输, 客户操作系统可能会使用超调用来请求虚拟机管理程序提供数据传输服务。访问客户操作系统内存地址GPA 当虚拟机管理程序需要访问GPA来进行数据传输时, 来自客户操作系统的调用方必须确保此GPA内存地址范围是连续的。但对于虚拟机管理程序中的HPA主机物理内存地址, 它可能是不连续的 (特别是对于 巨型页表分配机制下的用户操作系统)。例如, 4Mb的GPA地址范围可能映射到2个不同的2Mb巨型主机物理页面。虚拟机管理程序应该通过基于其HPA的EPT页面滑动来处理这种数据传输。访问客户操作系统内存地址GVA 当虚拟机管理程序需要访问GVA内存地址数据进行数据传输时, GPA和HPA地址可能都是不连续的。虚拟机管理程序最好监视这种数据传输, 并通过基于其GPA和HPA 内存页表相应滑动来处理它。内存扩展页表的操作 虚拟机管理程序使用最小内存页表将客户操作系统的物理地址 (GPA) 映射到主机物理地址 (HPA) 。 如果更新了页面的内存类型或访问权限或删除了某些 GPA 空间, 则会导致相应的EPT页表被拆分。虚拟机管理程序仍应继续使用最小的EPT页表将GPA空间映射到HPA空间。 虚拟机管理程序提供EPT客户操作系统物理内存增加、删除、EPT页表重新分配、以及内存无效服务。网络虚拟化原理常见的虚拟化技术解决方案OpenStackOpenStack是一个开源的云计算管理平台项目,OpenStack也是云计算技术,由几个主要的组件组合起来完成具体工作。OpenStack支持几乎所有类型的云环境,项目目标是提供实施简单、可大规模扩展、丰富、标准统一的云计算管理平台。OpenStack通过各种互补的服务提供了基础设施即服务(IaaS)的解决方案,每个服务提供API以进行集成。OpenStack是一个旨在为公共及私有云的建设与管理提供软件的开源项目。它的社区拥有超过130家企业及1350位开发者,这些机构与个人都将OpenStack作为基础设施即服务(IaaS)资源的通用前端。OpenStack项目的首要任务是简化云的部署过程并为其带来良好的可扩展性。本文希望通过提供必要的指导信息,帮助大家利用OpenStack前端来设置及管理自己的公共云或私有云。OpenStack云计算平台,帮助服务商和企业内部实现类似于 Amazon EC2 和 S3 的云基础架构服务(Infrastructure as a Service, IaaS)。OpenStack 包含两个主要模块:Nova 和 Swift,前者是 NASA 开发的虚拟服务器部署和业务计算模块;后者是 Rackspace开发的分布式云存储模块,两者可以一起用,也可以分开单独用。OpenStack除了有 Rackspace 和 NASA 的大力支持外,还有包括 Dell、Citrix、 Cisco、 Canonical等重量级公司的贡献和支持,发展速度非常快,有取代另一个业界领先开源云平台 Eucalyptus 的态势。KVMKVM代表着键盘(Keyboard)、显示器(Video)和鼠标(Mouse),即利用一组键盘、显示器和鼠标实现对多台设备的控制,在远程调度监控方面发挥着重要作用。KVM技术可以向远程终端发送调度信息网中的各项数据资料,为下一级调度机构提供方便,这样即便下级调度机构没有建立调度数据网,也能够实现信息的共享。多计算机切换器(KVM)以多主机切换技术为依据,借助一组键盘、鼠标和显示器完成多台服务器之间的切换,进而节省空间,降低成本,使得管理更为简易方便,以提升工作效率。该技术具有很多优点,应用十分广泛。首先,在整个机房管理中,改变了传统的一对一的控制方式,而采用了一对多的管理方式,有利于节省空间、提高工作效率;其次,主机系统的安全性能得到了很大提升,而且具备了长距离的传输能力,在与远程用户相连接时,安全性能得到良好的保证;在服务器较多的情况下,通过数字交换机与其他服务器相连,并能与远程相连,可同时对本地和远程进行控制。在一些大型系统的解决方案中,可使用具有模拟交换机矩阵功能的大型模块系统,能够满足终端用户同时对上百台甚至更多服务器的访问,进而实现从中心点通过KVM系统对各地的服务器进行有效控制。此外,该技术也可以在家庭中用,为普通用户提供了很多方便。Hyper-VHyper-V是微软的一款虚拟化产品,是微软第一个采用类似Vmware ESXi和Citrix Xen的基于hypervisor的技术。这也意味着微软会更加直接地与市场先行者VMware展开竞争,但竞争的方式会有所不同。Hyper-V是微软提出的一种系统管理程序虚拟化技术,能够实现桌面虚拟化 [1] 。Hyper-V最初预定在2008年第一季度,与Windows Server 2008同时发布。Hyper-V Server 2012完成RTM版发布。VMwareVMWare (Virtual Machine ware)是一bai个“虚拟PC”软件公司.它的产du品可zhi以使你在一台机器上同时运行dao二zhuan个或更多Windows、DOS、LINUX系统。shu与“多启动”系统相比,VMWare采用了完全不同的概念。多启动系统在一个时刻只能运行一个系统,在系统切换时需要重新启动机器。VMWare是真正“同时”运行,多个操作系统在主系统的平台上,就象标准Windows应用程序那样切换。而且每个操作系统你都可以进行虚拟的分区、配置而不影响真实硬盘的数据,你甚至可以通过网卡将几台虚拟机用网卡连接为一个局域网,极其方便。安装在VMware操作系统性能上比直接安装在硬盘上的系统低不少,因此,比较适合学习和测试。XenXen采用ICA协议 [1] ,通过一种叫做准虚拟化的技术获得高性能,甚至在某些与传统虚拟技术极度不友好的架构上(x86),Xen也有上佳的表现。与那些传统通过软件模拟实现硬件的虚拟机不同,在Intel VT-X支持下3.0版本之前的Xen需要系统的来宾权限,用来和Xen API进行连接。这种技术已经可以运用在NetBSD, GNU/Linux, FreeBSD和Plan 9系统上。Sun微系统公司也正在积极地将Solaris移植到Xen平台之上。Xen虚拟机可以在不停止的情况下在多个物理主机之间实时迁移。在操作过程中,虚拟机在没有停止工作的情况下内存被反复的复制到目标机器。虚拟机在最终目的地开始执行之前,会有一次60-300毫秒的非常短暂的暂停以执行最终的同步化,给人无缝迁移的感觉。类似的技术被用来暂停一台正在运行的虚拟机到磁盘,并切换到另外一台,第一台虚拟机在以后可以恢复。XEN 是一个基于X86架构、发展最快、性能最稳定、占用资源最少的开源虚拟化技术。Xen可以在一套物理硬件上安全的执行多个虚拟机,与 Linux 是一个完美的开源组合,Novell SUSE Linux Enterprise Server 最先采用了XEN虚拟技术。它特别适用于服务器应用整合,可有效节省运营成本,提高设备利用率,最大化利用数据中心的IT基础架构。XEN 是英国剑桥大学计算机实验室开发的一个虚拟化开源项目,XEN 可以在一套物理硬件上安全的执行多个虚拟机,它和操作平台结合的极为密切,占用的资源最少。编写文档时稳定版本为XEN3.0。支持万贯虚拟化和超虚拟化。以高性能、占用资源少著称,赢得了IBM、AMD、HP、Red Hat和Novell等众多世界级软硬件厂商的高度认可和大力支持,已被国内外众多企事业用户用来搭建高性能的虚拟化平台。IBM经常在其主机和服务器上使用虚拟机来尽可能发挥其性能,并类似chroot监禁那样将程序置于隔离的虚拟OS中以增强安全性。除此之外,它还能使不同和不兼容的OS运行在同一台计算机上。Xen对虚拟机活跃迁移的支持允许工荷平衡和避免停时。DockerDocker的思想来自于集装箱,集装箱解决了什么问题?在一艘大船上,可以把货物规整的摆放起来。并且各种各样的货物被集装箱标准化了,集装箱和集装箱之间不会互相影响。那么我就不需要专门运送水果的船和专门运送化学品的船了。只要这些货物在集装箱里封装的好好的,那我就可以用一艘大船把他们都运走。docker就是类似的理念。现在都流行云计算了,云计算就好比大货轮。docker就是集装箱。1.不同的应用程序可能会有不同的应用环境,比如.net开发的网站和php开发的网站依赖的软件就不一样,如果把他们依赖的软件都安装在一个服务器上就要调试很久,而且很麻烦,还会造成一些冲突。比如IIS和Apache访问端口冲突。这个时候你就要隔离.net开发的网站和php开发的网站。常规来讲,我们可以在服务器上创建不同的虚拟机在不同的虚拟机上放置不同的应用,但是虚拟机开销比较高。docker可以实现虚拟机隔离应用环境的功能,并且开销比虚拟机小,小就意味着省钱了。2.你开发软件的时候用的是Ubuntu,但是运维管理的都是centos,运维在把你的软件从开发环境转移到生产环境的时候就会遇到一些Ubuntu转centos的问题,比如:有个特殊版本的数据库,只有Ubuntu支持,centos不支持,在转移的过程当中运维就得想办法解决这样的问题。这时候要是有docker你就可以把开发环境直接封装转移给运维,运维直接部署你给他的docker就可以了。而且部署速度快。3.在服务器负载方面如果你单独开一个虚拟机,那么虚拟机会占用空闲内存的,docker部署的话,这些内存就会利用起来。常见虚拟化技术的应用实践虚拟化环境的搭建

你可能感兴趣的:(笔记)