zoukankan      html  css  js  c++  java
  • 虚拟化与云计算

    虚拟化

    除了服务器虚拟化之外,虚拟化还包括存储虚拟化,网络虚拟化,应用虚拟化,桌面虚拟化等。百度对虚拟化的定义是:虚拟化是一种资源管理技术,是将计算机的各种实体资源,如CPU、内存、存储(主要是硬盘)、网络等,予以抽象、转换后呈现出来,打破实体结构间不可切割的障碍,使用户能够以比原本组态更好的方式来应用这些资源。

    相较之下,VMware对虚拟化的定义更加全面:虚拟化是为一些组件(如应用、服务器、存储和网络)创建基于软件(或虚拟)的表现形式的过程。这里的组件不单指计算机实体资源,还包括应用、操作系统等非实体资源。

    通常对于数据中心来说虚拟化一般指的就是计算机实体资源的虚拟化,更多关于虚拟化的介绍参考:

    VMware关于虚拟化的简介:https://www.vmware.com/cn/solutions/virtualization.html

    Redhat关于虚拟化的简介:https://www.redhat.com/zh/topics/virtualization

    数据中心的虚拟化技术

    数据中心有三种常用的虚拟化技术:服务器虚拟化、存储虚拟化、网络虚拟化。

    服务器虚拟化

    服务器虚拟化最常见,是指将一台计算机(服务器)虚拟为多台逻辑计算机(即虚拟机,Virtual Machine,VM)的技术。

    存储虚拟化

    广义上来说,服务器虚拟化的虚拟“硬盘”与RAID划分LUN,这两种技术都算是存储虚拟化。不过对于数据中心而言,存储虚拟化更多指的是TB、PB,甚至是EB级别的存储资源(主要还是硬盘),通过某种方式集中形成池,按照需要提供给物理机或者虚拟机存储资源。

    Tips:LUN(Logical Unit Number,逻辑单元号),比如说2块500G的硬盘"虚拟化"成4块250G的硬盘,这4块硬盘就称为4个LUN,每个LUN在OS看来就是一块"真实"的硬盘。LUN这个概念需要和卷区分,卷对应的是我们常说的分区,比如说windows下的C盘、D盘,Linux下的/分区、/var分区,一个分区就是一个卷。

    网络虚拟化

    Tips: 服务器当然包括存储、网络,所以服务器虚拟化技术之中也是包括存储虚拟化技术和网络虚拟化技术的。具体而言,存储虚拟化分为基于主机的虚拟存储、基于存储设备的虚拟化、基于网络的虚拟化(细分为基于互联设备和基于路由器),网络虚拟化分为基于协议和基于虚拟设备。为了方便介绍,这里我都是以数据中心常用的角度来进行解释,毕竟对于数据中心来说,很少会说RAID是存储虚拟化技术,VPN、VLAN是网络虚拟化技术。详细的存储和网络虚拟化将在后面的存储虚拟化和网络虚拟化篇章介绍。

    服务器虚拟化

    要了解云计算,就必须先了解虚拟化,而虚拟化中最重要的就是服务器虚拟化。这是一种将多个操作系统同时运行在一台物理服务器上的技术,服务器虚拟化和双操作系统有所不同,双操作系统一台物理服务器只能同时运行其中一个操作系统,而服务器虚拟化一台物理服务器可以同时运行多个操作系统。

    实现服务器虚拟化依靠的是hypervisor,hypervisor又被称为虚拟机监视器(VMM,Virtual Machine Monitor),它有两种类型:一种是操作系统,直接安装在物理服务器上;另一种是应用程序,这需要先在物理服务器上安装一个操作系统,称为Host OS,再在Host OS中安装hypervisor。

    服务器虚拟化实际是将这“多个操作系统”安装在hypervisor中,这“多个操作系统”使用hypervisor从物理服务器的物理硬件虚拟化而来的虚拟硬件。举个例子来说,某台物理服务器实现服务器虚拟化后,在它的一块100G的硬盘上安装了A、B两个操作系统,此时在A操作系统中查看,A操作系统有一块50G的硬盘,在B操作系统中查看,B操作系统也有一块50G的硬盘。实际上A操作系统中的这块50G硬盘在现实中并不存在,它只是物理服务器上那块100G硬盘空间中的一部分,也就是说A操作系统的数据最终还是写入到了那块100G的硬盘中,B操作系统也是如此,而我们一般将服务器虚拟化中“一个操作系统”使用的虚拟硬件集合和这个操作系统本身一起称做一台虚拟机。

    Tips:试想如果不这么做,物理服务器上的每个操作系统都可以使用全部的硬件资源,那么A操作系统向这100G硬盘的某个扇区写入数据,B操作系统也向这个扇区写入数据,这时A、B操作系统都将无法正常使用这个扇区。

    服务器虚拟化的意义

    服务器虚拟化主要是解决两个问题,一是灵活,二是硬件使用率。

    灵活

    比如说现在某个业务需要一台服务器,配置如下:双核CPU、4G内存、80G的硬盘,像这种需求,一般笔记本电脑都比这个配置高。为了这个需求,单独买一台如此低配的服务器,再额外布线,接电源,不但占用机房空间,而且费时费力。

    服务器虚拟化就可以很好的解决这一问题,只需要一台硬件配置较高的物理服务器资源,虚拟出相应配置的虚拟机即可。而且随着时间推移,可能虚拟机配置要求变高了,在该物理服务器资源足够的情况下,可以轻松扩展虚拟机的配置,至于空余的该物理服务器资源也可以再建新的虚拟机给其他业务使用。

    而且数据中心购买服务器不是说今天说买,明天就到,这需要申请、审批、下单、可能长达几个月服务器都没到。运用服务器虚拟化技术,可以根据公司业务量增长情况,储备适量的物理服务器,当有新业务的时候,根据需求建立虚拟机就可以了。

    硬件使用率

    当今的x86计算机一次只能运行一个操作系统,这意味着即使是小型数据中心也必须部署多台服务器,这样每台服务器仅使用约12%的运行能力。以任何标准来看,这都是非常低效的。借助服务器虚拟化将多个操作系统在一个物理服务器上同时运行,可以有效的提高硬件使用率。

    比如某台物理服务器CPU为10核,我在此物理服务器上创建出3台4核的虚拟机。从表面上看物理机提供了虚拟的12核,但是实际能够使用的只有10核。不过一般情况下3台虚拟机不太可能同时使用到4核的处理能力,这样还保证了偶尔虚拟机会使用到4核的处理能力。一台物理机上虚拟机数量越多,同时使用到全部虚拟CPU的概率也就越小。因此在合理控制虚拟化比例的基础上,便能够极大的提高硬件使用率。

    Tips:如果多个业务放在一台物理服务器上来避免灵活和硬件使用率这两个问题怎么样?

    几乎Windows都遇到过类似这样的问题,听着音乐打游戏,游戏崩溃导致电脑死机,这时音乐听不成,游戏也打不了。服务器也一样,如果多个业务部署在一台服务器上,如果某个业务故障,导致服务器宕机,则会影响到该服务器上的所有业务。而服务器虚拟化,虚拟机之间是相互隔离的,单台虚拟机宕机,并不会影响其它虚拟机。

    参考文章:http://news.west.cn/35908.html 

    主流服务器虚拟化厂商

    服务器虚拟化涉及一系列组件,最基础的组件是实现物理服务器虚拟出虚拟机的系统或者是软件——“hypervisor”。主流的企业级服务器虚拟化厂商有VMware、Microsoft、Redhat、Citrix,各厂商使用的“hypervisor”分别为VMware--ESXi,Microsoft--Hyper-V,Redhat--KVM,Citrix--Xen。

    VMware的ESXi是商业产品,价格不菲,稳定性和性能极佳,Microsoft的Hyper-V是2008年才推出的商业产品,对Linux的支持有一些瑕疵,KVM和Xen都是开源的,KVM市场规模较大一些,此外还有一些国内厂商基于开源产品(多是基于KVM,Xen)二次开发的产品,比如华为(FusionCompute)、新华三(H3C)、中兴(TECS)等等。

    云计算

    对于数据中心来说,虚拟化虽然灵活,但是仍然没有完全解决数据中心面临的问题。因为虚拟化软件一般创建一台虚拟的电脑,是需要人工指定这台虚拟电脑放在哪台物理机上的。这一过程可能还需要比较复杂的人工配置。比如使用VMware的虚拟化软件,需要考一个很牛的证书,而能拿到这个证书的人,薪资是相当高,也可见复杂程度。

    所以仅仅凭虚拟化软件所能管理的物理机的集群规模都不是特别大,一般在十几台、几十台、最多百台这么一个规模。

    这一方面会影响时间灵活性:虽然虚拟出一台电脑的时间很短,但是随着集群规模的扩大,人工配置的过程越来越复杂,越来越耗时。另一方面也影响空间灵活性:当用户数量多时,这点集群规模,还远达不到想要多少要多少的程度,很可能这点资源很快就用完了,还得去采购。

    所以随着集群的规模越来越大,基本都是千台起步,动辄上万台、甚至几十上百万台。如果去查一下BAT,包括网易、谷歌、亚马逊,服务器数目都大的吓人。这么多机器要靠人去选一个位置放这台虚拟化的电脑并做相应的配置,几乎是不可能的事情,还是需要机器去做这个事情。

    人们发明了各种各样的算法来做这个事情,算法的名字叫做调度(Scheduler)。通俗一点说,就是有一个调度中心,几千台机器都在一个池子里面,无论用户需要多少CPU、内存、硬盘的虚拟电脑,调度中心会自动在大池子里面找一个能够满足用户需求的地方,把虚拟电脑启动起来做好配置,用户就直接能用了。这个阶段我们称为池化或者云化。到了这个阶段,才可以称为云计算,在这之前都只能叫虚拟化。

    这段文字节选自:http://www.cnblogs.com/popsuper1982/p/8505203.html

    关于云计算传统基本上会分为三种:公有云、私有云、混合云。

    最近几年还延伸出“行业云”,个人理解行业云是公有云的一种类型,是一种提供行业内的定制服务的公有云,比如说教育云可以提供教育资、成绩分析,可以参考:http://www.soft6.com/news/201608/05/307231.html

    公有云

    最基础的公有云服务就是云计算服务商建设好机房,配置好物理服务器、网络等,根据用户(其它公司)需求提供虚拟机。要想使用服务器(实质就是虚拟机),你去云计算服务商的网站,选择所需要选择服务器配置、支付租金,就可以使用了。具体管理云服务器,可以通过网页的GUI控制台,当然仍然支持ssh登陆shell管理。

    优势:机房建设、网络环境、服务器虚拟化等问题都由公有云的服务商解决,企业只需要专注于使用这些虚拟机。

    有了服务器,还需要部署服务器中环境。比如说网页服务器可能需要安装Nginx,MySQL等软件,而这些软件的安装、维护、优化工作需要专业的运维人员来处理,对于小型公司来说,这部分运维人员的工资是一笔不小的花费。在云计算平台下,这些繁琐的部署、调试操作只需要你在网页上点几下就可以在后台自动完成了。

    优势:减少技术团队投资,节约部署、调试服务器环境的时间、人力成本。

    互联网应用有客户端-服务器、浏览器-服务器两种模式。以网易云音乐为例,用客户端听歌,这就属于客户端-服务器模式(C/S),在网易云音乐网站听歌,这就属于浏览器-服务器模式(B/S)。对于B/S模式的应用而言,光有了服务器和服务器环境还不够,需要浏览器显示的内容,还需要企业自己制作放入配置好环境的服务器中。

    例如装饰公司的官网,一般不会有太大的访问量。这时候就算装饰公司有了服务器,在服务器中部署了相应环境(Nginx),也还需要web前端工程师制作官网以及处理后续的官网内容的更新、维护工作,当然云计算服务商也很乐意解决这个的问题,他们通常提供一些模板,你根据模板简单修改要想要展示的内容即可。

    优势:更加减少技术团队投资,企业几乎只需要关心自身业务运营。

    这里就分别对应了云计算的三种服务模式:IAAS、PAAS、SAAS。简单来说,IAAS就是提供虚拟机,PAAS则是在提供虚拟机的同时还提供在虚拟机中部署环境的服务,SAAS则是直接提供网页应用,官网、论坛、网页版PS、word都属此列,不过现在SAAS提供的服务更加丰富,比如财务管理系统,人事管理系统,CRM等等。目前IAAS市场最大,PAAS次之,SAAS市场较小,甚至连很多云计算报告都没有统计这部分。

    2017年上半年数据,公有云国内市场阿里云40%的份额位居榜首,之后排名的电信云、腾讯云、金山云市场份额均不足10%,2018市场格局总体任然变化不大。2018Q1全球公有云市场中(仅统计IAAS和PAAS),AWS,微软和Google占统治地位,并且完全可能获得更多的市场份额,仅AWS一家就占据了近40%的市场份额,三家合计占市场份额超过60%(微软10%+)。至于国内翘楚阿里云具体份额不详,据参考文章分析应该为6%左右。

    参考文章:http://www.199it.com/archives/740453.html

    更多关于AWS:https://www.zhihu.com/question/20058413

    公有云番外:裸金属服务器

    传统公有云提供的服务器都是虚拟机而一些企业级客户,对服务器性能要求比较高,希望在享受云便利性的同时,又能使用物理服务器。

    公有云-裸金属服务器就是云厂商提供物理服务器,相对于传统服务器托管依靠用户自己或者其它授权人人工维护,使用裸金属服务器则要简单的多。使用裸金属服务器和普通公有云虚拟机的操作完全相同,也是网页GUI管理。但与传统的虚拟机相比,裸金属服务器灵活性就要差一些了,一般只能使用云厂商固定的硬件配置,如果自定义硬件,则可能需要等待几个小时(就是在等厂商组装0.0)。

    华为裸金属服务器简介:https://support.huaweicloud.com/bms_faq/zh-cn_topic_0053536927.html

    私有云

    数据即是企业的命脉,对于一些大企业来说,不太愿意将数据存放在公有云服务商,故选择建设私有云。私有云就是自己或第三方公司搭建,仅供本公司内部使用的云计算。

    Tips:IAAS、PAAS、SAAS主要是针对公有云提出的概念,私有云平台主要是提供虚拟机,有的也会有自动部署服务器环境的功能。

    云计算中最重要的就是服务器虚拟化调度(Scheduler),公有云的服务器虚拟化,微软自然使用的是自己的Hyper-v,其余多数都是KVM。至于调度,AWS、微软、谷歌、阿里都是自己研发的,华为则是基于开源的OpenStack二次开发。

    再来看私有云的服务器虚拟化,资金充足自然选择商业产品,如果是VMware-ESXi,调度多会选择VMware-vShere,如果是Hyper-v,调度多会选择SCVMM(System Center Virtual Machine Manager )。资金紧张多会选择开源产品,服务器虚拟化则是KVM、Xen,调度则是OpenStack。

    Tips:需要注意的是,调度和服务器虚拟化并不一定固定绑定,比如SCVMM虽然是微软的产品,但也是支持ESXi的,详细介绍见云计算分类的后续文章。

    混合云

    混合云融合了公有云和私有云。我们已经知道私有云主要是面向企业用户,出于安全考虑,企业更愿意将数据存放在私有云中,但是同时又希望可以获得公有云的计算资源,在这种情况下混合云被越来越多的采用,它将公有云和私有云进行混合和匹配,以获得最佳的效果,这种个性化的解决方案,达到了既省钱又安全的目的。

    Tips:简单来说就是核心的业务部署在私有云,非核心的业务部署在公有云,两者之间可以快速迁移,目前“VMware和AWS”这两家厂商的合作就是混合云比较成功的案例。

  • 相关阅读:
    IEnumerable、ICollection、IList、List关系和区别
    在Winform界面中使用DevExpress的TreeList实现节点过滤查询的两种方式
    关键字Lock的简单小例子
    .NET Core DI简单介绍
    Linux服务器部署.Net Core笔记:六、安装MySQL
    表的透视变换
    ZedGraph怎样在生成曲线时随机生成不一样的颜色
    3、手写Unity容器--第N层依赖注入
    微信支付-小程序H5 公众号 Payment SDK
    WPF继续响应被标记为已处理事件的方法
  • 原文地址:https://www.cnblogs.com/yogurtwu/p/9356886.html
Copyright © 2011-2022 走看看