云计算-从基础到应用架构系列-虚拟化的概念

 

开篇

     上篇我们讲述了云计算的发展历史,当然也是IT信息产业发展的一个未来的趋势,正如我们的互联网应用的蓬勃发展,目前包括一些RIA富客户端应

用的迅速发展,还包括开源软件和HTML5的未来的推广,无疑都是为了为用户提供更好的服务。当然云计算的提出,也是在前人的肩膀上,通过柔和现

有的技术,为用户或者企业提供更好的服务的一种新的IT模式,因此我们可以说云计算本身带来的是一种IT产业格局的变化,因此,我们对云计算抱的

态度可能不会说是非它不可,但是我们必须要思想上对其能够把我,在自己的企业信息化的决策中,可以将其列为未来的企业发展的一个重要战略之一。

      本篇将会从云计算的核心技术之一或者说是,完成云计算这个新兴概念的底层的核心技术虚拟化的相关概念的介绍,至少我们应该知道云计算这个

浪漫的名词,它的底层实现是采用什么技术,是什么需求,促使这样的概念的提出等等,具体的关于云计算概念的相关的介绍,我们也已经在第一篇中

提过,所以我们这里只要知道,虚拟化是实现云计算的一个核心的技术之一就好。

摘要

      虚拟化技术的产生也是计算机技术发展道路上的一个趋势和必然现象,在计算机发展道路上起到了重要的作用,虚拟化的技术早在20世纪50年代就

已经提出,第一次将虚拟化的技术应用到商业应用中还是20世纪的60年代,并且将虚拟化技术提出并应用到商业中的第一个公司就是IBM,IBM可以说

是在虚拟化技术方面一直是领导者,现在虚拟化的技术用到的地方太多了,随便举例吧,无论是操作系统的虚拟内存,还是说是虚拟机或者目前的服务

器的虚拟化或者是PC的虚拟化等都是离不开虚拟化技术。随着虚拟化技术的广泛使用,为数据中心和应用部署带来了新的管理与部署方式,虚拟化技术

的使用,提高了高效便捷的管理,提高了资源的利用率,虚拟化技术目前以成为多家商业巨头的重要企业战略。

      本文将会从下面的几个方面进行阐述。

      1、虚拟化的概念

      2、虚拟化的常见类型

      3、虚拟化的方面

本文大纲

1、开篇

2、摘要

3、本文大纲

4、虚拟化的概念

5、虚拟化的常见类型

6、虚拟化技术的演进

7、服务器虚拟化的方面

8、本文总结

9、后续

10、参考文献

虚拟化的概念

      虚拟化概念的提出,是相对于真实的资源来说的,虚拟化的简单的来说就是,模拟真实环境下运行的完全状态到一个虚拟化的环境中,一般来说我

们知道计算机资源分为二种,硬件资源和软件资源。

      虚拟化技术正是将虚拟化技术应用在计算机资源上的,所以既可以针对硬件也可以针对软件,一般来说计算机的软硬件资源结构图,可能是如下情

况:

      image

上面给出的可虚拟化的计算机资源的组图,基本上涵盖了可虚拟化的资源。

      看过计算机操作系统教材的朋友,应该都知道操作系统中的内存虚拟化的技术,比如我们的现在用的比较多的操作系统的虚拟化桌面的虚拟内存的

概念,这个怎么理解呢,我认为就可以用虚拟化的技术来解释。在操作系统中的虚拟内存的的思想就是操作系统在硬盘的某个区域内,将内存中不使用

的状态数据IO到硬盘上,等到某个程序需要使用的数据不在内存中的时候,通过IO操作,将应聘的数据IO到内存中,就算我们的本身的内存很小,但是

我们却能运行数据量很大的程序,原因就是因为,我们在把数据装入内存的过程中,并不是一次性的全部加载,有点类似我们平时应用程序的延迟加载

的意思呵呵,不过思路可不同,不能混淆。下面我们来简单的说明下过程。

image 

      这里将内存中的部分内存空间释放,提供给当前要运行的程序,具体的IO到硬盘中的数据,根据一些策略来完成切换。我这里并不详细的讲述这个方

面的内容,详细的介绍,请大家查阅相关资料呵呵。

      下面我们来看看关于虚拟化的相关概念性的定义吧

      1.维基百科对虚拟化的描述

      虚拟化是将计算机资源进行抽象的一种方法,通过虚拟化出来的计算机资源,我们可以像我们未虚拟化访问物力资源的形式,来访问虚拟化后的资

源。并且这种抽象后的资源,不会受到物力资源配置、地域、实现等因素的影响。

      2、信息技术术语库

      虚拟化是某些事物的虚拟版本,例如操作系统,计算机系统,CUP,内存,硬盘,负载均衡,路由器等。

      3、IBM的虚拟化定义

      虚拟化是资源的逻辑表示,不受物理限制的约束。

      通过上面的总结,我们不难发现他们之间的共性。

      a、虚拟化的对象是各式各样的资源。

      b、经过虚拟化后的逻辑资源,隐藏了一些细节性的维护。

      c、用户可以在虚拟环境中,使用真实环境中的部分或者全部功能。

虚拟化的分类

      可虚拟化的资源有多种多样,我们前面也是给出了按照软硬件方面的内容,来分析的,一般都是软硬件相结合的形式,下面我们来按照虚拟化的分类

来讲述下,虚拟化资源的不同类型,针对每个类型虚拟化的具体的作用和功效是什么,我们来简单的分析下。我们先看下可虚拟化资源的整体结构。

      image 

      开篇的时候,我们对虚拟化的软硬件资源进行了拆分,下面我们针对拆分后的结果进行分类,从下面的几个类型进行讲述,我们先来看看基础设施

分类的内容。

一、基础设施的虚拟化

       在这些虚拟化的资源中,我想我们使用最多的虚拟化的实践就是-按照VMware Workstation提供的虚拟机,我们通过按照虚拟机虚拟一个逻辑的操

作系统,同时虚拟化后的操作系统,我们可以和正常的操作系统使用一样来使用虚拟化的操作系统,这个虚拟化后的操作系统,就是一个独立的操作系统,我们

需要为这个虚拟操作系统重新安装相应的软件,

       我们平时在管理一些数据文件,网络资源,存储资源时,我们都认为是基础设施类型的虚拟化,网络的虚拟化指的是将网络中的软硬件资源整合,为用户

提供虚拟化的网络链接技术,针对网络的虚拟化技术,我们可以分为局域网虚拟化和广域网虚拟化,局域网的虚拟化,是将局域网内的多个网络虚拟成为一个

逻辑网络,或者将局域网进行划分,划分成多个子网,通过这样的方法来提供网络的资源利用率,广域网的虚拟化的典型代表是VPN,通过使用VPN的技术,我

们能够远程访问公司内部的网络资源,就像是在公司内部访问一样,同时这样的技术,保证了外部网络链接的安全性和私密性。

       基于存储的虚拟化技术是指,为物理设备提供一个抽象的逻辑视图,用户通过这个视图来访问整合后的资源,采用这个技术的典型代表是磁盘阵列

技术(RAID) 该技术通过将多块物理硬盘组合成为磁盘阵列,用廉价的设备,组合成高容错,高性能的存储空间。

二、操作系统的虚拟化

       我想大部分的从事IT的朋友,可能在没有充分了解虚拟化技术之前,我们对虚拟化技术的理解,在操作系统层面上的认识比较多,认为操作系统的

虚拟化就是虚拟化,还有就是操作系统中的内存的虚拟化,打印机的虚拟化等。系统的虚拟化,实现了操作系统与物理设备的分离,例如,我们可以在

windows的操作系统上安装Linux操作系统,我们都知道一个计算机上不能同时运行多个物理的操作系统,但是通过虚拟化技术,我们就能将一个计算

机设备上,同时运行多个操作系统,这个我想大家的理解最深刻。

       我们通过使用虚拟机来创建多个操作系统实例,那么我们就可以在计算机中通过同事运行多个系统实例来完成多系统的同时运行,并且,我们使用

虚拟机,我们需要为虚拟机的运行环境提供相应资源的虚拟。

       image

       通过上图我们可以看到虚拟机的下的运行设备,是通过虚拟机从计算机物力资源中分配相应的计算机资源来提供给虚拟机运行环境,这样,我们在

使用虚拟机中的操作系统实例时,就和我们的物理操作系统一样使用方便。

       并且通过虚拟化后的操作系统,如果我们将一些自己的应用程序安装在虚拟机上之后,我们通过创建快照,创建的机器映像,我们就可以还原镜

像,虚拟机会从快照中恢复虚拟机的实例。一般恢复实例只要几分钟的时间,我们可以通过这样的方式,来迅速的恢复一个操作系统或者为我们省去了

一些不必要的按照应用程序的时间浪费。

三、软件的虚拟化

      除了前面讲述的2个虚拟化类型的资源,还有一种是应用类型的虚拟化技术,我们通过将软件虚拟化技术,我们可以实现软件和操作系统之间解耦,

为软件提供一个虚拟的运行环境。例如如下的场景,我们现在开发一个应用程序,我们在虚拟化的服务器上部署相应的组件,当用户访问相关的应用程

序时,我们通过虚拟化服务器将组件推送到客户的客户端的虚拟化环境中,完成应用,当客户关闭软件时,将客户的变更和数据信息传送回虚拟服务

器,这样用户可以不单局限于单一的客户端,可以在不同的终端使用自己的应用程序。

      还有比较典型的软件虚拟化技术的代表是JAVA的虚拟机,JAVA的虚拟机将高级编程语言编译成中间语言,JAVA虚拟机将中间语言解释成特定平台

上可执行的二进制机器码,从而达到了一次编译,处处运行的效果,不过当然这是目标,可能还有一些细节的问题需要处理。

      我这里就不给去其他的例子了,那么我们可以看看,我们实现应用虚拟化的简单过程。

      image

服务器虚拟化的方面

      服务器虚拟化技术,我们上篇就讲述了服务器虚拟化的相关概念,并且分析了服务器虚拟化的核心技术的三个方面,CUP,内存,设备及IO,本节

针对这三个方面进行阐述,实现的优势及特点。

      1、Cpu

      CPU的虚拟化技术,是将物理的CPU抽象为虚拟的CPU,我们知道,任意时刻,物理的CPU只能处理一个指令,我们也知道分时的CPU通过CPU的

执行时间,来对多个指令进行响应,不停的切换始终,执行不同的指令。我们很早的时候,是采用集中式的服务器模式,就是一台中央服务器,多个客

户端,每个客户端访问服务器内的CPU响应自己的命令,这个时候,客户在使用计算机的时候,感觉不到自己使用的是集中式的服务器,而是感觉自己

使用的单独的PC,这个时候,我们可以说内部其实就已经有了虚拟化的概念。

      CPU的虚拟化的过程中会出现如下的问题,有的时候,如果我们在虚拟机里面执行一些类似中断,或者是内存管理的指令这样的命令操作的时候,

我们其实是要访问物理资源,那么我们如何处理这样的问题,我们只能通过虚拟机监视器监视这样的操作。然后执行相应的处理。

      在X86结构体系下,关于CPU的虚拟化提供了二种方式,全虚拟化和半虚拟化,我们来介绍下这2类虚拟化的原理。

      全虚拟化:是指我们通过虚拟机监视器,监视用户的操作,当用户执行某些特殊指令时,虚拟机监视器将这些指令进行动态的转换,转化成由虚拟

机可完成的相同的指令序列。一般全虚拟化采用的是二进制动态翻译机制,通过这样的机制,给客户的感觉就是自己的系统就是运行在真实的物理环境

当中。

      半虚拟化:是指通过超级调用的形式,使虚拟机完成真实物理环境中特殊指令的执行,半虚拟化要求客户的操作系统与虚拟机是兼容的,否则如果

虚拟机无法操控物理的操作系统,那么将无法完成超级调用的操作。

      只要采用虚拟化技术,就会造成性能上的损失,随着虚拟机技术的发展,目前CPU生产厂商中的绝对代表Intel、AMD已经将硬件辅助虚拟化技术带

入了CPU,Intel的Intel-VT,AMD-V,通过CPU提供的硬件辅助技术,就是提供虚拟化操作的相关指令集合,这些指令集合辅助完成前面我们介绍的全

虚拟化与半虚拟化中解决的问题。

             2、内存及设备、IO

             这块的内容,本章就不讲述了,基本上来说与计算机操作系统中的讲述的虚拟化的应用差不多,我这里就不详说了。

本文总结

      本章主要讲述了虚拟化的相关概念,介绍了虚拟化资源的分类及虚拟化的几种类型,并且分析了虚拟化产生的优势,通过虚拟化技术,我们提供了

资源的利用率,提高了系统的性能,虚拟化技术随着硬件及软件的不断发展,虚拟化技术将会在IT产业中占据越来越重要的角色,所以我们对虚拟化技

术方面的只是了解的越深入,对未来的IT的发展方向就越有把握。

后续

      下一篇我们就开始讲述虚拟化技术方面内容了,希望大家看完本章内容后,如果有什么意见和建议,请您提出来,我在下篇书写的时候,会及时的

改进,谢谢您的意见,由于个人水平有限,错误或不足之处还请多多指点。

posted @ 2011-01-09 21:59  hotdefans  阅读(6388)  评论(20编辑  收藏  举报