[TOC]

0x00 前言简述

云计算-Cloud Computing

1.云计算概述

Q: 什么是云计算(Cloud Computing)?

定义: 它是一种互联网的计算方式,通过该方式共享软硬件资源和信息按需要提供给计算机各种终端和其他设备。
简单的说: 它把庞大的计算资源集中在某个或某些地方,而不再是放在身边的那台计算机,用户的每一次计算都发生在那个被称为云的那个看不见摸不着的地方。

Q: 为什么会出现云计算?

定义: 随着计算机硬件、网络、存储等技术的发展,单人拥有一台计算机而似乎有些浪费,由于其大多数时间里都是空闲的。如果可以将计算机各类计算机资源集中分享公用,类似于现在操作系统那样的分时复用,其将是对资源极大节省和效率的极大提升,同时也适应了社会经济的发展即边界效应(成本递减),在这样的背景下云计算孕育而生。

Tips : CPU 处理器的主要参数主频、核数、LLC(三级缓存)、制造工艺。发展趋势主频(GHz)越来越高,核心数越来越多,LLC(高速缓存)越来越大,CPU的制程(nm)越来越小。


2.云计算发展历史

描述: 云计算的起始元年为2006年,无论是国内外云计算的市场都是快速发展的。

2006.08 : 亚马逊(Amazon)发布了弹性计算云(Elastic Computer cloud)
2008.04 : 谷歌(Google)发布了Google App Engine Beta,在2013年12月其 Google Computer Engine 对标的 AWS EC2 才正式使用。
2008.10 : 微软发布了Azure云计算产品2014年3月更名为(Microsoft Azure)
2009.xx : 阿里成立阿里云部门开始服务于内部,其后2011.07开始对外出售云服务。
2010.07 :NASA 与 Rackspace 共同发布了著名的开源项目OpenStack;


3.云计算服务模型

描述: 云计算是推动IT转向业务为中心的一次重大变革, 其眼于运营效率、竞争力和快速响应等成果。意味着IT的作用正在从提供IT服务逐步过渡到根据业务需求优化服务的交互和使用。

云计算的模型是以服务为导向,根据提供的服务层次不同可分为:

  • 1) IaaS(Infrastructure as a Service, 基础架构即服务) : 用户有更大的自主权,能控制自己的操作系统,网络连接(虚拟的),硬件(虚拟的)环境等,云服务提供商提供的是一个虚拟的主机环境。特征: 用户需要为一个主机环境付费。例如Google Compute Engine。
  • 2) PaaS(Platform as a Service, 平台即服务) : 云服务提供商提供给用户开发、运维应用程序的运行环境,用户负责维护自己的应用程序,但并不掌控操作系统、硬件以及运作的网络基础架构。例如 Google App Engine
  • 3) Saas(Software as a Service, 软件即服务) : 云服务提供商将软件服务直接提供给用户使用。特征: 用户不必自己维护软件本身。例如 Google Docs、Microsoft CRM;
WeiyiGeek.云计算服务层次模型

WeiyiGeek.云计算服务层次模型

Tips: 云计算服务层次模型特点是他们提供的服务越来越抽象,用户实际控制的范围越来越小。

WeiyiGeek.云计算服务

WeiyiGeek.云计算服务

导读: 从图中可以看出物理是那种云计算服务模型,虚拟化(Virtualization)都是其基础后一章进行详细讲解。



虚拟化-Virtualization

1.虚拟化概述

Q: 什么是虚拟化?

定义: 在计算机领域,虚拟化指创建某事物的虚拟(而非实际)版本,包括虚拟的计算机硬件平台、存储设备,以及计算机网络资源。
可见虚拟化是一种资源管理技术,它将计算机的各种实体资源如(cpu/内存/存储网络等)予以抽象和转化,并提供分割、重新组合,以达到最大化利用物理资源的目的。

描述: 虚拟化是一个广义的术语,在计算机方面通常是指计算元件在虚拟的基础上而不是真实的基础上运行。虚拟化技术可以扩大硬件的容量例如LVM(Logical Volume Manager)的操作,简化软件的重新配置过程。

Q: 为什么需要虚拟化?

答: 有了虚拟化技术,一个物理主机可以被抽象、分割成为多个虚拟的逻辑意义上的主机,向上支撑多个操作系统及其之上的运行环境和应用程序,其资源可以最大化的利用节约了资源,降低了IT成本,并且且增强了系统安全性和可靠性。

WeiyiGeek.物理资源虚拟化示意图

Tips : 首先针对虚拟化示例图从下到上进行讲解

  • 一是物理主机环境(实际的物理环境上的操作系统Host OS运行着虚拟机监控器)。
  • 二是VMM虚拟机监控器(Virtual Machine Monitor)也称为Hypervisor,它是为了达到虚拟化而引入的一个软件层,其向下掌握着实际的物理资源即第一步所说的操作系统Host OS。
  • 三是客户机(Guest OS)环境即在虚拟化环境中虚拟出来的逻辑主机。


2.虚拟化历史

描述: 虚拟化(Virtualization)技术最早出现20世纪60年代的IBM大型机器中,在70年代的system 370系列中逐渐流行起来。后随着近些年多核系统、集群、网络甚至云计算的广泛发展,虚拟化技术在商业应用上的优势也日益体现,使用的企业以及学习者逐渐增多,所以虚拟化技术及其概念也逐渐深入到人们的日常工作与生活之中。


3.虚拟化实现方式

Tips : 最理想的虚拟化的两个目标如下客户机完全不知道自己运行在虚拟化环境中,其次完成不需要VMM介入客户机的运行过程。

3.1 主要分类

  • 平台虚拟化 (Platform Virtualization) : 针对于计算机和操作系统的虚拟化 (通常)。
  • 资源虚拟化 (Resource Virtualization) : 针对于特定的系统资源的虚拟化,比如内存、存储、网络资源等。
  • 应用程序虚拟化 (Application Virtualization) : 包括仿真、模拟、解释技术等


3.2 虚拟化技术分类

  • 0) 操作系统级虚拟化(Operating System Level Virtualization) : 在传统操作系统中,所有用户的进程本质上是在同一个操作系统的实例中运行,因此内核或者应用程序的缺陷可能影响到其他进程。操作系统级虚拟化是一个在服务器操作系统中使用轻量级虚拟技术,通过创建多个虚拟的操作系统实例(比如内核和库) 来隔离不同的进程,不同的实例中的进程完全不了解对方的存在。

  • 1) 软件虚拟化与硬件虚拟化

    • 软件虚拟化: 通过软件模拟来实现VMM层,通过纯软件的环境来模拟执行客户机的指令。例如 QEMU 虚拟化软件(翻译->截取->执行)。
      1
      2
      优点: 客户机兼容多平台OS。
      缺点: 虚拟化性能较差软件的复杂性大大增加。
    • 硬件虚拟化: 是指计算机硬件本身提供能力,让客户机指令独立执行,而不需要(严格来说是不完全需要) VMM 截获重定向执行,而VMM运行在root mode中拥有完整的硬件访问控制权限, 而客户机在noe-root mode中运行。
      1
      2
      优点: 性能接近于原生系统,并且极大地简化VMM的软件设计架构。
      缺点: 需要特殊的硬件虚拟化支持,例如: `Intel VT`
  • 2) 准(半)虚拟化与全虚拟化、超虚拟化

    • 准(半)虚拟化 (Partial Virtualization):本质上准虚拟化弱化了对虚拟机特殊指令的被动截获需求,将其转化为客户端操作系统的主动通知,但是准虚拟化需要修改客户机操作系统的源代码来实现主动通知。典型的半虚拟技术就是 Virtio 但是需要再宿主机与 VMM (模拟了部分底层硬件) 和客户机中都安装相应的驱动。

    • 全虚拟化 (Full Virtualization): VMM 模拟了完整的底层硬件,使得为原始硬件设计的操作系统或者其它系统软件完全不做任何修改就可以在虚拟机中运行,敏感指令在操作系统和硬件之间被VMM捕捉处理,客户操作系统无需修改,所有软件都能在虚拟中运行。例如 Intel VT-x、VT-d为代表的硬件虚拟化技术的兴起,让由有硬件虚拟化辅助的全虚拟化全面超过了半虚拟化。例如: Microoft Virtual PC/ Sun Virtual Box/ Parallels Desktop For Mac 和 QEMU.

    • 超虚拟化 (Paravirtualization) : 一种修改为 guest OS部分访问特权状态的代码,以便直接与VMM交互的技术。
      在超虚拟化虚拟机中部分硬件接口以软件的形式提供给客户机操作系统,可以通过 Hypercall 的方式来提供,例如 Denali 与 Xen。

  • 3) Type 1 和 Type 2 虚拟化 : 从软件框架的角度上,根据虚拟化层是直接位于硬件之上,还是在一个宿主操作系统之上进行划分的。

    • Type 1 (Native , bare-metal Hypervisor) : Hypervisor 直接运行在硬件之上,它们可以直接控制硬件资源以及客户机,例如 Xen 和 VMware ESX。
    • Tyep 2 : Hypervisor 运行在宿主机操作系统之上,其就是宿主机操作系统中的一个应用程序,像其它应用程序样受宿主机操作系统管理。例如VMware Workstation 和 KVM (有一定争议)

Tips : Intel 2005 年开始为其x86 CPU 中加入硬件虚拟化支持Intel VT(Inter Virtualization Technology)
Tips : Intel-VT 和 AMD-V 是目前x86体系结果上可用的两种硬件辅助虚拟化技术。
Tips : 以Virtio为代表的半虚拟化技术也一直在不断发展,其性能上只是略逊全虚拟化,加之其较少的平台依赖性,受到了广泛的欢迎。


4.虚拟化小结

(1) 操作系统级虚拟化产品有 Solaris Container,FreeBSD Jail 和 OpenVZ等。

  • OpenVZ : 常用于VPS平台之中通过虚拟化技术将一个服务器虚拟化为多个可以安装操作系统的实例,这样每一个实体都是一个VPS。

    1
    2
    # 缺陷:只能安装Linux系列操作系统,其次是不能完全虚拟化每个VPS账户共用母机内核,不能单独修改内核。
    # 优点: 在不超售的情况下OpenVZ是最快效率最高的VPS平台
  • (2) 上述分类并不是绝对的一个优秀的虚拟化软件往往融合了多项技术,例如VMware workstation是一个著名的全虚拟化VMM,但是它使用了一种被称为动态二进制翻译的技术,把对特权状态的访问访转化成为对影子状态的操作,从而避免了低效的Trap-And-Emulate的处理方式,这与超虚拟相似只不过超虚拟化是静态的修改程序代码,对于超虚拟化而言,如果能利用硬件特性那么虚拟化,那么虚拟机的管理将会大大简化,同时还能保持较高的性能