谈谈我对云计算的认识之基本概念(二)

来源:互联网 发布:windows 高精度sleep 编辑:程序博客网 时间:2024/04/26 20:59

上一篇介绍了云计算基本概念,本篇继续介绍一个云计算中非常重要的概念:虚拟化。

虚拟化定义

虚拟化这个词并不像云计算那个难以令人捉摸,虚拟化是一种资源管理技术,是将计算机的各种实体资源(CPU、内存、磁盘空间、网络适配器等),予以抽象、转换后呈现出来并可供分区、组合为一个或多个电脑配置环境。由此,打破实体结构间的不可切割的障碍,使用户可以比原本的配置更好的方式来应用这些电脑硬件资源。这些资源的新虚拟部分是不受现有资源的架设方式,地域或物理配置所限制。一般所指的虚拟化资源包括计算能力和数据存储。其虚拟化层次如下图:
层次
最底层的虚拟化是硬件支持的虚拟化,Intel虚拟化技术(VT-x)和AMD的AMD-V,上有操作系统级别的虚拟化如KVM、ESXI等,最上层的还有应用虚拟化,大家所熟知的JVM,Java的一次编译处处运行的特性就是依赖JVM。

虚拟化分类

虚拟化可以按照虚拟化程度分为:全虚拟化、半虚拟化、硬件辅助虚拟化。全虚拟化的就是全部由软件模拟,操作系统不需要任何修改,如我们经常在自己电脑上面安装的VMware workstations以及Oracle Virtualbox,我们可以通过标准的ISO镜像安装操作系统,不需要定制操作系统;半虚拟化和全虚拟化最大的区别在于要修改操作系统,让客户机操作系统知道自己运行在虚拟化环境,这样部分指令可以透过操作系统,提供效率,最著名就是Xen;当前数据中心最常用的是硬件辅助虚拟化,宿主机的hypervisor运行在特权级别,关于指令如果陷入等详细内容以后再细谈,当前常见的硬件辅助虚拟化主要是:VMware的ESXi、KVM以及微软的Hyper-v。商业化最成熟也是最稳定的当属ESXI,开源最热门的当属KVM,openstack+KVM黄金搭档。
这里写图片描述
从虚拟化的内容分类可以分为:计算虚拟化、存储虚拟化、网络虚拟化。下面我就针对这些虚拟化类型逐一讲解:

计算虚拟化

我认为计算虚拟化狭义的理解为CPU和内存虚拟化,CPU虚拟化就是在把物理CPU抽象成虚拟CPU供Guest OS使用,任意时刻一个物理CPU上只能运行一个虚拟CPU,虚拟CPU本质上就是一个进程。在x86体系结构中CPU一般有4个等级:Ring0、Ring1、Ring2、Ring3,Ring0级别具有最高的权限,可以执行任何指令,从Ring0->Ring3依次递减,操作系统内核运行在Ring0而用户的应用程序运行在Ring3。内存虚拟化,就是通过VMM(hypervisor)管理物理机上内存,并按照每个虚拟机对内存的需求划分机器内存,同时保证各个虚拟机内存相互隔离。在内存虚拟化中,需要维护逻辑内存(guest os)与机器内存之间的映射关系。其基本原理:GVA(客户机操作系统虚拟内存)->GPA(客户机物理内存地址)->HPA(宿主机物理内存地址)当然这些转换通可以通过硬件加速或者影子列表法加速。虚拟内存管理常用三种技术:内存气泡、内存零页共享、内存交换技术。我把现在流行的Docker页纳入计算虚拟化中。
这里写图片描述

存储虚拟化

存储虚拟化分为两个阶段,第一阶段是以数据中心SAN存储和NAS存储为代表的集中存储。
SAN第二个阶段是软件定义的存储,如亚马逊的S3,开源的分布式对象存储系统,以ceph为代表。分布式存储可以搭建在普通x86服务器集群之上,主要依靠多副本完成数据高可靠,下图是ceph的存储示意图
ceph

网络虚拟化

网络虚拟化是在物理网络拓扑基础之上建立的虚拟网络,它不依赖于底层物理连接,能够动态变化网络拓扑,提供多租户隔离。如果溯源,vlan其实就是一种网络隔离,在一个网络下通过vlan tag划分多个广播域。可以通过SDN实现虚拟网络,这又不得不提NFV,它和SDN最大的区别是SDN是全软件实现,NFV依赖物理设备。下图展示一个物理拓扑到逻辑拓扑的映射。
这里写图片描述
还有vxlan、ovs、overlay等技术会在后面详细介绍

1 0
原创粉丝点击