[音乐]
[音乐]
同学们好
上次课呢,我们把虚拟化的概念和虚拟化的常见类型做了一些介绍
那么今天开始呢我们介绍一下,在虚拟化里面非常重要的一种类型,就是服务器的虚拟化
那么关于服务器虚拟化的关键技术,我们在这一部分要做一些介绍 那么什么是服务器虚拟化?
其实服务器虚拟化呢主要是对我们的一些计算资源做虚拟化
那么做虚拟化的目的呢主要是便于这个对这个物理资源的一些管理,那么提高利用率和降低成本
那么在这里面,使得我们在整个这个业务的部署当中呢,我们可以
呃,把原来需要多个服务器,比如需要电子邮件服务器,这个 Web
服务器或者打印服务器 那么各类服务器呢,可以我们通过这个服务器的虚拟化方式
可以让它统一地部署在一个物理机上,一个物理机器上面 那么通过这样一种方式呢,其实可以节约成本了
啊,所以的话呢,虚拟化技术目前也是云计算环境里面非常重要的一个技术
大家可以看到,这个虚拟,有了虚拟化技术之后 那么我们可以通过这样的虚拟化技术,把这个
不同的这个物理机器上的一些资源,可以充分利用起来 那么使得租户可以通过虚拟化的技术去使用
来自于同一个物理环境当中的不同的计算资源 所以我们说这个虚拟化技术呢
它的几大好处就是,第一个是,它需要更低的这个 IT 的费用,比如说
IT 的费用呢 可以更少,那么同时又可以提高这个资源的利用率
减少复杂度,形成这个自动化的管理。
第二呢就是说它可以提高服务质量 那么提高服务质量,很重要的一个特点,那就是虚拟化技术里面同学们知道
有这个虚拟机的动态迁移,那么动态迁移这个技术呢可以使得
在一些负载出现这个不均衡的情况下
由这个虚拟化的这个云平台来帮我们把这个
计算资源动态的从一个负载高的地方迁到负载低
保证整体的这个负载均衡,当然还可以提高容错性,增强安全性
以及提高这个弹性和可扩展性 那么像服务器虚拟化这种技术呢,其实在很早以前,也就是说上世纪
60 年代的时候呢 曾经就出现过,而且呢,当时就已经提出了这样一种技术
比如说在 IBM 大机上面其实就提到过用虚拟化的技术 到 80 年代和 90 年代的时候呢
大家知道这个操作系统,就多任务的操作系统普及了 另外呢,就是硬件的成本降下来了,就说你买一个机器
已经不是很贵了,因为传统的,大家知道,第一代计算机推出的时候
那么计算机是非常昂贵的,那么是很多的这个客户端都需要去共享这个资源
也就说这个计算设备是非常昂贵的,那么到了这个 PC
就是个人计算机出现之后,那么硬件成本进行了下降 呃,那么这样的话呢,这个虚拟化的技术就没有办法发挥
它的优势,所以人们慢慢的就对这个虚拟化的技术呢 冷却下来。
那么现在,就说到了目前 那么计算机的硬件这个性能不断地提升,那么我们知道这个
以 Intel 为例,就是它的这个从这个 x86 体系里面,从这个
286, 386 对吧 到现在的这个 4 核,2 核,4核,
8核,这样一个 发展的一个趋势,所以这个计算机硬件性能是逐渐在提升
那么在这种性能提升的情况下,怎么样 进一步降低系统的成本,来提高系统的资源的利用率
那么如何去降低管理的成本,又提高系统的安全性和可靠性
同时呢又可以增强可移植性,提高软件开发的效率
那么这种种问题的这个提出啊,因为我们知道这个
随着这些问题的提出,人们就在思考,那么这个虚拟化 技术是不是可以解决这些问题
所以,啊我们说这个人们重新有考虑在 大家都需要满足这些成本、
安全性、 可移植性、 效率等等要求的情况下 人们又开始关注虚拟化的技术。
那么虚拟 化技术它的体系结构啊,目前就是尤其是服务器虚拟化这一块的体系结构呢
其实目前,前面我们也提到有几种类型 那么一种呢就是我们看到
VML 这一种类型,它其实是一种全虚拟化的一个架构
也就是说它的这个虚拟化, VML 的 ESX 这个虚拟化的软件是直接运行在硬件之上
跑在操作系统之下这样一个架构 另外呢,还有一种就是像这个
Xen 这种架构 它的这个架构呢是跑在
Xen 呢是由这个 Xen 的跑在硬件之上和操作系统之下的一部分
软件以及和这个 Dom0,就是我们所说的这个超级,或者说特权域
来共同管理整个云计算,这个虚拟化的平台 那么还有一种就是 VML 的这个 workstation
这种 体系结构,那么这种体系结构呢是通过这个硬件 加上这个,啊就是它要依赖于
HostOS ,也就说在操作系统 之上,再装一个这个虚拟化的软件
那么这个虚拟化软件呢,啊它是一部分功能是通过这个 需要依赖于操作系统来完成的。
那么有一部分功能它可以直接调硬件,呃,调硬件 这相当于是一种混合的一个体系结构。
那么在这个体系结构里面大家可以看到 它们都一般包含了三类组件
这三类组件呢,第一个是我们所说的这个虚拟机监控器 就像
VML ESX 里面的这个 啊,就是这个ESX,VML
的 ESX 和这个 Xen 的这个,就是我们所说的这个它这个 Xen
软件,它都是虚拟机监控器 它是跑在,它主要用来管理这个计算机的这个资源的
那么第二个呢我们叫虚拟机 那么这个虚拟机呢,事实上就是指的基于这个
VML 这个体系结构之上 就说它虚拟出来的虚拟资源
来运行的一个计算环境,包括虚拟硬件 操作系统和上面的
app,那么整体叫做这个虚拟机 第三个叫 host OS,那么这个
host OS 呢其实就是我们 刚才提到的 VML 的这 Workstation
这种状况 就说它的这个虚拟化软件,必须跑在一个宿主操作系统上面
也就是说它要寄存在这样一个原有的操作系统之上,才能够进行运行
这是我们前面提到的虚拟化的这个,就服务器虚拟化有三种体系结构啦
那么下面我们来说明一下就是在服务器虚拟化的实现技术方面的分类
那么这里面说的实现技术分类呢其实重点就是讲的我们刚才所提到的 这个
VMM 它是通过什么样的方式来实现
那么我们大家都知道,这个虚拟化的实现技术呢其实目前呢主要是分为了三大类啊
第一大类叫全虚拟化,第二大类叫泛虚拟化,第三大类呢叫硬件辅助虚拟化
那么什么是全虚拟化,什么是泛虚拟化呢?
在这里我们只能简单介绍一下,那么同学们如果想更进一步地了解全虚拟化的
核心的技术还有这个泛虚拟化和硬件辅助虚拟化的核心技术,可能还需要去参照一些
资料去仔细的了解,比如我们大家,我给大家推荐的一些关于虚拟化的这个教材,大家可以去- 进一步地看
我么先来看一下什么是全虚拟化,那么全虚拟化呢 其实就是使用了一种叫做二进制转换的这样的一种技术
那么它的核心呢就是让这个 Hypervisor
就说在硬件之上我们跑的是一个虚拟机监控器叫 Hypervisor
,也叫 VMM 那么这个 Hypervisor
它是来全权负责 管理底层的硬件的,那么我们的虚拟机的操作系统
呢其实运行在比它更低一级的这个环上面 同学们不知道了不了解这个
linux 内核,或者是操作系统一般内核它对于 x86
体系结构 一般是每一个,操作系统运行在几环和这应用程序运行在几环上面
OK,可能有些同学知道,这个应用程序呢 一般我们在
x86 的体系结构上面是运行在 3 环 操作系统呢是运行在
0 环 那么大家可以看到这张图,就是我们可以看到在这个全虚拟化的环境下
因为 Hypervisor 它是需要运行在硬件之上,操作系统之下
所以呢,最早实现这个虚拟化的时候呢,就是把这个 Hypervisor
运行在 0 环 让这个客户的操作系统运行在 1 环 然后呢,应用程序运行在 3
环上面 那么这里面,那么 Hypervisor 要做的主要事情是什么呢?
就是要把客户操作系统提交的各种请求,因为大家知道客户操作系统原来是直接把 请求提交给硬件。
那么现在呢,它需要把客户操作系统解析的这个二进制的这个请求 通过
Hypervisor 把它翻译成这个硬件可以理解的这样的指令 啊,指令。
所以这一方面是 Hypervisor 要做的事情 那么 Hypervisor 这里是要拦截所有的来自客户操作系统的这个请求指令
所以它的这个,所请求的这个内容非常之多,它要做的二进制的转换
也是所有的来自的上面的这些指令 这个工作量是很大的,所以它会带来比较大的开销,这是它的缺点
那么泛虚拟化技术其实它最早是由这个虚拟化 Xen
就是剑桥大学推出的这个虚拟化的这个技术 Xen 它最早实现的这样一种技术。
那么泛虚拟化技术其实大家可能 知道它跟这个全虚拟化技术的一个最大相比较而言
它的最大优点就是它的性能好。
那么为什么它的性能会好? 我们来看一下这张图,大家通过这张图可以看到
这个在泛虚拟化环境下,这个 Hypervisor 仍然跑在这个硬件之上
但是呢,它相当于跑在了这个 跟操作系统同样,仍然地跑在
0 环上面 也就是说 Hypervisor 和这个虚拟化软件它俩都是在
0 环上面 它并没有改变原来操作系统所应该运行的环
那么操作系统仍然在 0 环,Hypervisor 呢也让它跑在
0 环上 那么这中间要形成一个逻辑的层次,也就是说操作系统
仍然要调 Hypervisor,就需要对所有的这个操作系统过来的这些
超级调用,实现一个特权的操作。
在这个实现里面大家 注意,原来的这个客户操作系统它是要通过
Systemcall,就是系统调用去调硬件 那么现在的话呢,就是每一个客户操作系统,它只能够去调
Hypervisor 来做监控 实现虚拟化,然后再去调硬件。
所以这里面就需要 修改这个客户操作系统,把原来的这个 Syscall 改成这个 Hypercall 超级调用。
就是让这个 Hypercall 去调这个 Hypervisor 里面的这个对应的功能 这是我们说的泛虚拟化它需要做的事情。
所以大家发现这里面其实泛虚拟化它的性能很好 就是说它有一些功能是不需要通过
Hypervisor 去实现 那么有些功能它可以直接调硬件,但是大部分,如果是一些
特权操作,它是通过 Hyperware [iii] 去调用,所以需要修改这个
客户操作系统,把它的以前的一些特权调用改成这个 Hypercall 的调用
所以大家可以,从这里可以看到,就是它的一个不同 那么最后一种叫硬件辅助虚拟化。
那么硬件辅助 虚拟化呢,大家可以看,同样看这张图啊,在这张图里面
这个操作系统仍然在 0 环,应用程序也在这个
3 环 但是呢,Hypervisor 现在它不在 0 环
它还是给它单独做了一个根模式,做了根模式 那么这个根模式其实是,主要是通过硬件支持来完成的。
比如说大家知道现在 Intel 或者是 AMD 它都提供了这个支持虚拟化的硬件,就是这个,比如说
Intel 的 VT AMD 的这个 SVM 这样的一些芯片。
这种 芯片的支持的支持之下,它可以专门给 Hypervisor 建立一环
当然这个环我们叫根模式,那么有的地方也叫把它叫做 -1 环 把它叫 -1 环。
那么有了这样一个模式之后呢,那么就不需要去修改操作系统 了。
那么操作系统仍然可以采取原有的调用方式去调用 Hypervisor Hypervisor。
所以从这个角度上来讲,有了硬件支持的这种虚拟化的体系结构
它的这个性能应该跟全虚拟化,比全虚拟化要好 可以跟这个泛虚拟化相媲美啊,相媲美
这是关于这个硬件辅助虚拟化这部分的这个主要的这个思想
所以通过前面我们可以看到,就是这个虚拟化 这一块要做分类,这个,主要分成了三大类,三大类
那么这三大类刚才我们已经介绍了它的实现方式 那么这种全虚拟化、 泛虚拟化和这个硬件辅助虚拟化
在实现的时候,实现的时候,其实它还有一种分类方式呢就是关于分成两种啊
一种分类方式是关于它,就根据它是不是寄宿到,需不需要一个宿主操作系统 来进行分类。
比如说这个虚拟化的软件它需要 就是寄居在某一种操作系统之上来安装和运行
那么这个呢,我们叫这个宿主型的。
那么 另外还有一种就是独立监控型的,它可以直接运行在硬件之上
大家可以看,我们这里列出了一些例子,比如说 VMWare 的 这个
WorkStation,它是一种,相当于是一种宿主型的 它实现的是全虚拟化的技术。
那么 Xen 呢,它是一种独立监控型的 它实现的是半虚拟化的技术。
当然目前也支持这个硬件辅助的 虚拟化。
那么 KVM 呢其实是实现的这个,是一种宿主型的一种虚拟化软件
它实现的是全虚拟化的技术,当然也支持硬件虚拟化 好,这部分内容我们就介绍到这儿,谢谢!