用人话讲虚拟化 1 - 道

来源:互联网 发布:梦天堂网络 编辑:程序博客网 时间:2024/06/05 10:01

虚拟化技术(Virtualization)是云计算的基础。他使得一台物理机器上能运行多台“虚拟机器”,每一台虚拟机器都认为自己独占物理机器,并互不影响(理想状态)。云计算厂商从而可以将一台物理机器虚拟成多个虚拟机器,卖给更多的用户。考虑到用户并不同时使用所有机器资源,虚拟化可以用更少的机器支持了更多的用户。换句话就是用更少的货卖出更多的钱。

本文主要讨论虚拟化技术的“实质”。

1. 什么是虚拟化?

虚拟化本身并不是一个新的概念,它是一个广泛应用的技术。其关键在于“接口”(Interface)和“复用”(Multiplexing)。

举一个“接口”的栗子。我们运行一个仿真器,在PC上运行小霸王学习机上的游戏。这个仿真器就把PC的接口转化成了小霸王学习机的接口,从而能无缝支持为小霸王开发的游戏。这种接口转化几乎的万能的,我们总可以写一套软件在一个接口上模拟出另外一种接口。

这种技术最大的问题就是,慢!

举一个“复用”的栗子。我们的ADSL网络连接,在同一个物理线路上可以支持多个用户的网络连接。更重要的是,假设物理带宽是10M,每个用户用2M,利用虚拟化技术我们可以支持多于5个的用户。因为所有用户同时使用最大带宽的情况很少见。可见,虚拟化技术可以用使有限的物理资源支持更多的用户。

代价是什么?性能不稳定。如果卖得用户太多,大家需求总和超过物理极限的时候,大家的性能都会受影响。因此,挑剔的用户和应用会选择预留专用资源,不跟其他人共享。

2. 平台虚拟化概念?

云计算中的虚拟化为“平台虚拟化(Platform Virtualization)”,因为其虚拟化对象是x86平台。

刚刚提到了“接口”与“复用”。那么云计算中的虚拟化实际就是要在一台x86机器的物理接口上,虚拟出多个x86的虚拟接口,在每个虚拟接口上运行一个操作系统,卖给不同的用户。可见,实现了多个虚拟x86接口,我们就可以实现复用,可以实现平台虚拟化。

注意要实现多个虚拟接口,我们必须要分隔开每个虚拟接口后边的“状态”。

举一个简单的栗子,假设我们开一个连锁银行,接口就是窗口柜台服务员,整个银行只有一个人会记账。在没有虚拟化时,记账的哥们站前台,来一个用户处理一个用户。假如本地客户很少,这哥们大部分时间就得闲着。于是我们在另一个城市开分店!分店里有若干窗口和前台服务员,所有记账请求都通过电话、网络传给记账帝,让他处理。这样记账帝就会忙一点了。

对用户来说,它们只跟窗口(接口)打交道,并不在乎有几个人记账。对银行来说,只要把每个客户的账(状态)分开就好了,这样整个银行里一个记账帝(CPU)就够用了。

所以,平台虚拟化实质就是一个物理设备,多个虚拟接口,状态分离。

3. 平台虚拟化实现

虚拟化技术的演变基本从纯软件,到paravirtualization,到hardware assisted virtualization。现如今广泛使用的实际是hardware assisted和paravirtuliazation的结合。

预知每个技术的详情,请分享点赞。。。不然实在没动力写。。。


关于作者

欧阳马上毕业,中国科学技术大学学士,美国匹兹堡大学在读博士生,研究方向操作系统,虚拟化。2013,2014年暑假作为实习生在美国VMware, Palo Alto ESX内核组从事CPU调度研发工作。

0 0
原创粉丝点击