关于虚拟化的思考

Sina WeiboBaiduLinkedInQQGoogle+RedditEvernote分享




虚拟化是当前的一个热门话题,但它并不是一个新名词,虚拟化的历史由来已久。

举一个简单的例子,比如说操作系统。操作系统是做什么的哪?操作系统是管理

设备的,是为进程提供一个虚拟的执行环境,使得每个进程都感觉自己拥有整个

系统。操作系统至少为进程提供了以下假象:

1) CPU是自己独占的,可以随便用

2) 32bits或者64bits的内存空间,基本上可以认为是没有限制

3) 文件系统,以及设备操作等

4) 网络,没有限制的缓存以及连接等

可以想象,操作系统提供了进程执行的虚拟环境,简化了进程编写的工作。但是,

在这个虚拟执行环境里面,操作系统还要保证:

1) 公平,由于不是一个进程在执行,所以不能厚此薄彼,操作系统要调度

2) 保护,为进程提供保护,使得一个进程崩溃,不会影响到其他进程

3) 资源管理,虽然资源表面上是无限的,但需要操作系统来管理,分配,调度,映射

从上面的例子,我们可以看出虚拟化的几个重要的特性

1) 资源的管理和映射。虚拟化提供了虚拟的执行环境,好像资源是无限的。但是

真正的物理硬件是有限的,只不过大家轮流使用而已;或者是把大块的物理资

源分割成多个小块,然后分配给虚拟系统。

从这个角度来说,虚拟化最重要的工作就是资源的调度和向上层提供虚拟接口。

具体怎么实施,参考操作系统的实现就可以。资源管理应该由提供虚拟

环境的实体来施行。一个简单的例子,preemptive和cooperative的多任务。

显然cooperative是不能很好地支持多任务的,而preemptive就可以。

2) 空间隔离和保护。虚拟环境是给多个虚拟系统使用的。要在多个虚拟系统之间

提供隔离和保护的功能,使得各虚拟系统之间不要相互影响。最简单的,比如

数据的保护。还有就是一个系统崩溃不能影响其他系统。从这一点来看,很多

虚拟环境是不合格的,比如基于web server的虚拟主机,虚拟ftp服务器等等。

3) QoS。之所以要把这个单拿出来说,是因为如果虚拟环境不能提供与非虚拟环境

同等质量的服务的话,那虚拟环境就没有什么竞争力。这里有很多例子,比如以

太网里面的VLAN或者是路由器里面的MPLS。网络里面有很多虚拟化的例子,虽

然它们的初衷是为了资源共享,但是在实现的时候,特别强调QoS。与QoS

相关的资源预留或者资源调度等等,都是为了保证虚拟系统的服务质量。这里面有

很多门道。

虚拟化可以简单这样分类

1) 1:1,虚拟系统切分物理系统,多个虚拟系统加起来,正好等于物理系统,或者

物理系统提供一定的冗余量以保证QoS。这样的系统有多大的价值?这里只有资源

的分割,有可能不提供虚拟接口,也不提供空间保护。

2) 1:N,虚拟系统的能力加起来要比物理系统大,如果只有一个虚拟系统,那就是1:1,但通常是不会这样用。

虚拟化至少应该提供以下好处:

1) 虚拟化可以有效的利用资源,一个假设就是用户不会同时都在peak点上,所以可

以把多余的资源拿出来分享。或者某个通道容量特别大,可以承载多个用户。

2) 提供虚拟执行环境,用起来就像是一个系统。比如常见的cluster,把多个机器统

一管理,向上提供一致的虚拟执行环境;或者像vmware这种,可以在一台机器上,

提供多个虚拟机,使用虚拟机就像使用物理机一样。

3) 节约成本。如果不能做到这一点,虚拟化就没有必要。

思路有点乱,希望能有点启发。

参考资料:

1: http://en.wikipedia.org/wiki/Operating_system

2: http://en.wikipedia.org/wiki/Vlan

3: http://en.wikipedia.org/wiki/Multiprotocol_Label_Switching

4: http://en.wikipedia.org/wiki/Virtual_Execution_System

5: http://www.cisco.com/en/US/prod/collateral/switches/ps9441/ps9402/ps9512/White_Paper_Tech_Overview_Virtual_Device_Contexts.html

6: www.vmware.com/pdf/vi_architecture_wp.pdf

(没有打分)

雁过留声

“关于虚拟化的思考”有19个回复

  1. kernelchina 于 2011-03-07 6:03 下午

    虚拟化是天然的层次结构。

  2. Sting 于 2011-03-07 6:52 下午

    写的太简单了。。。

    我倒是对虚拟化的技术在嵌入式领域的应用很感兴趣,貌似现在通信厂商在无线接入网元上也号称要部署虚拟化支撑;

    个人感觉,从某些单点技术来看,多核OS的挑战及演进与虚拟化技术有殊途同归之妙

  3. kernelchina 于 2011-03-07 7:39 下午

    抛砖引玉而已,弯曲的重点是评论,高人都在潜水。说到演进,倒让我想起了,“天下大势,合久必分,分久必合”,不管是多核,还是虚拟化,都挺符合的。

  4. 陈怀临 于 2011-03-07 9:36 下午

    kernelchina, 以后自己preview一下格式,换行。。。我容易吗我。我这么高的工资给你排版,你太给力了你。。。

  5. kernelchina 于 2011-03-07 9:40 下午

    实在是抱歉,一是在弯曲,我的帐号没法用live writer,报401,没有权限,这是个老问题了;还有就是我发现用list不太好,没法对齐行。

  6. Lucifer 于 2011-03-07 11:40 下午

    其实弯曲这里用google chrome写的话,换行和空行会被吃掉,后来我都是用ie来发文章的

  7. 晃晃悠悠 于 2011-03-07 11:49 下午

    云+虚拟化,齐飞?

  8. ruishe 于 2011-03-08 12:08 上午

    有个问题想请教一下,目前的虚拟化产品是否可以实现在多台物理机器上成功调度资源,如A机器的20%资源+B机器的20%资源=满足需求的物理机。

  9. Sting 于 2011-03-08 1:31 上午

    楼上说的就是aggregation的应用,不过据说效率比较低,性能下降一半以上;

  10. kernelchina 于 2011-03-08 1:47 上午

    Cloud os? 虚拟化要隐藏底层细节,为上层提供统一接口。虚拟化不能仅局限于虚拟机怎么搞,在更高层次需要抽象,否则Cloud是用不起来的。

  11. Lucifer 于 2011-03-08 1:55 上午

    终极概念……分布式操作系统

  12. 土人 于 2011-03-08 3:29 上午

    将多台计算机资源汇聚在一起是HPC吗?vmware好像做不到。两个方向的问题

  13. wylandrea 于 2011-03-08 7:36 上午

    虚拟化内部通信也是很重要的一块啊

  14. 陈怀临 于 2011-03-08 8:21 上午

    这篇文章类似于大哲学家们在餐桌上用餐巾纸写的一些随笔。。。:-)。当然,都是真知灼见:-)

  15. EE 于 2011-03-08 3:34 下午

    @土人,如果能把底层硬件都统一成一样的虚拟接口,应该能做到的。

  16. deltali 于 2011-03-08 4:59 下午

    将多台计算机资源汇聚在一起,在vmware中叫做资源池。

    我曾想用kernelchina的这个话题也写篇文章,但是发现不好写。最近事比较多,头脑比较乱。等闲下来的时候再来细细的琢磨下。

  17. 冬瓜头 于 2011-03-08 7:41 下午

    对这方面我也有一些思考和总结,不过都写到《大话存储2》里了,兄弟们,4月初大概就出版了,还望大家支持

  18. 土人 于 2011-03-09 4:07 上午

    @EE HPC好像靠的是算法,还有一个牌子的服务器是模块化的 实在想不起来了 他好像是这样做的
    @deltali 一台虚拟机好像无法同时使用两台物理机的资源,即使是一个资源池。还是两个方向的东东

  19. symantec 于 2011-03-09 4:10 上午

    冬瓜头,等你这本书已经很久了