当前课程知识点:大数据系统基础 >  2.云计算 >  授课视频 >  2.9计算虚拟化

返回《大数据系统基础》慕课在线视频课程列表

2.9计算虚拟化在线视频

2.9计算虚拟化

下一节:2.10网络虚拟化:基础

返回《大数据系统基础》慕课在线视频列表

2.9计算虚拟化课程教案、知识点、字幕

中心虚拟化 三个方面的

第一个方面是计算虚拟化

计算虚拟化实际上是一个

用得很早的技术

所以它的种类也非常的多

但是大体上

计算虚拟化几个重要的概念

第一个叫做主的操作系统

主操作系统

是直接跟硬件打交道的

操作系统

它管理着硬件

然后虚拟化环境之后

一个硬件可以虚拟化成

好多个虚拟机

每一个虚拟机里

可以跑自己的操作系统

这些操作系统

我们就叫做客户操作系统

然后各个客户操作系统之间的

管理和调度

是由一个主件

叫做Hypervisor来实现的

这个Hypervisor

或者这个Hypervisor

它为什么叫Hypervisor

过去的话

我们管它叫虚拟机管理器

叫做Virtual Machine

Manager VMM

但是后来现在比较流行的词

是Hypervisor

因为Supervisor这个词

是操作系统里头

管集成调度的

但是听起来

比Super更加厉害的

那就是Hyper

所以Hypervisor

是管操作系统的

所以它是管着一堆Supervisor

所以管它叫做Hypervisor

所以Hypervisor

是管理各个客户操作系统的

这样一个虚拟化的

主要的组件

Hypervisor的实现

有好几种形式

一类大家可能常见的

一种实现的形式是

就是这种形式

是叫做类型2的实现形式

那么它是跑在主操作系统内的

同学们可能用过

比如说在MAC上跑一个

vm ware work station

或者跑一个

vm ware the fustion

就是这一系列的Hypervisor

它是把在一个操作系统里边

虚拟出另外一个操作系统

比如说你想在windows8里头

跑一个windowsXP

可能玩一些老的游戏

或者跑一个windows3.1

跑个DOS 在这种情况下

它就是类型2的Hypervisor

它是跑在

一个主操作系统之上的

主操系统控制着硬件

Hypervisor不控制硬件

另一种类型

是服务器虚拟化常用的

比如说是现在新的一些

vm ware 的服务器虚拟化的

解决方案都是跑的一种类型1

就是Hypervisor

直接控制硬件

它没有主操作系统

Hypervisor是非常简单的一层

它直接跟硬件打交道

它上面就可以跑若干个

客户操作系统

在这种情况下

你可以免除了这种

维护这主操作系统的一些麻烦

还有一种类型叫类型0

类型0是结合了两者

Hypervisor既直接跟硬件打交道

它也跟主操作系统打交道

readings的TPM

是这样的一类Hypervisor

但是无论Hypervisor的类型

是什么

它们提供的接口都是一样的

它们提供了一个虚拟的

一个硬件的接口层面

客户操作系统可以自己理解

它自己占有了这么一个硬件

实际上这个硬件

是一个虚拟的硬件

服务器虚拟化这件事情

它实际上是一个很麻烦的技术

它跟操作系统的底层

联系得非常紧

这里头的核心的问题

或者核心的难点主要有三个

第一个就是指令集的翻译

如果你提供的虚拟机

和你的真实的物理机器

它指令集不一样

比如说我想在X86上

提供一层

比如说PowerPC的虚拟机

这样的话

可以跑一些老的

苹果的应用程序

或者说我可以在X86上

提供一个java的运行环境

可以直接跑java

java它的二进制码

是一种byte-code

是这种自解码的这种形式

可以直接跑这个java

那么我们实际上是对

这些东西

它是有一层指令集

翻译的过程在里头的

指令集翻译

它是基于一种二进制的翻译

一个机器码可以翻译成

另一个机器码

当然这种翻译会比较慢

但是这种东西比较慢怎么办呢

这又是计算机系统的人

解决问题的一把重要的武器

那就是缓存

因为我翻译了一段

我先把这段记住

下次再用到这段的时候

我知道我刚才翻译过

我就不用再翻译了

我就可以来回用

这是它解决了一个

缓存解决了一个翻译效率的问题

但是里头

还有一个更复杂的问题

就在于有一些个指令

是只有在一些高权限的状态

才能执行的

比如说

直接操作这个内存页表

比如说

直接访问一些个I/0的设备

这些东西需要内核的权限

需要操作系统的权限

才能运行

那么客户机它是一个操作系统了

它里头有一个操作系统

它以为我独占了这台机器

我也希望运行这种

高权限的命令

但是事实上它运行不了

因为它实际上

真正的权限在Hypervisor那里

它只是一个应用程序

它运行这种高等级命令的时候

它就会失败

所以这个情况下

如何来让虚拟机里的

客户操作系统

能够执行这种高权限的命令

所以这种东西

不能够直接翻译

它需要一些特殊的处理

跟这相关的

就是一个I/0设备的仿真

比如说我的机器上

有一个特殊的显示器

或者有一个特殊的存储设备

那么我的虚拟机上

是不是能看到这些设备

那万一我的虚拟机上

跑了一个操作系统

不支持这些设备的驱动

那怎么办

所以I/O设备是怎么仿真的

也是一个需要考虑的问题

第三个需要考虑的问题就是

如果保障这个处理器的

数据结构不被破坏掉

因为处理器

它里头都是一些寄存器

比如说我的堆栈指针

在什么地方

我的数据指针在什么地方

这些都是一些一系列的寄存器

这些寄存器

在处理器里头只有一个

那么操作系统

它认为我是独占这个处理器的

我想怎么改它就怎么改它

实际上这就是操作系统

怎么工作的

但是客户操作系统

它是好几个客户操作系统

每个人都想改

这个处理器的这些状态

你改了之后

它还能不能互相不影响

你把人家的处理器改掉了

人家那个数据就找不到了

所以在这种情况下

多个客户操作系统都想改

这个处理器里的数据结构

这时候怎么做

我们肯定不能把真实的处理器

提供给客户的操作系统

所以我们在虚拟机里头

这个东西叫做影子处理器

就是实际上

你做了一个处理器的影子

客户操作系统改的

都是那个处理器的影子

每一个人各自有一个影子

但是真实的处理器

只有那个Hypervisor来控制的

这是我们虚拟化

主要考虑的三个问题

鉴于这门课的目的

和时间的关系

我们只举一个具体的例子

大家可以看到

虚拟机是如何来处理

这一系列的问题的

这一个例子

就是一个内存的保护和管理

这么一个问题

大家如果回想一下

操作系统课我们学的是进程

一个进程

它是有它自己的一系列的堆栈

它有一个运行的顺序

它还有自己的地址空间

每一个进程都

认为它自己有一个

一模一样的 独占的 整个的

内存空间

比如说它有这么一段

它这一段永远是

从最低的地址

一直到最高的地址

比如说32位的机器

它从0到4GB的地址

它是这么一个地址空间

它觉得它是独占的

它可以把地址分成代码段

数据段 它可以分成

各种不同的地方

那么程序1它访问内存的时候

它用的是它虚拟地址

它自己的内存地址

它访问哪里

然后实际上

我们有一个叫翻译映射的东西

它是一个硬件

实现的一个机制

它能够把虚拟的地址

翻译成物理的地址

实际上每一段虚拟的地址

在内存里 实际上

在物理内存里

实际上对应着另外一个空间的

当然程序2也是如此

它也看到的

也是自己一串虚拟的地址

但是它的虚拟地址

可能映射到物理内存的

另外区域

这个映射

是由一个东西叫做MMU
(07:04)

内存管理单元

这个东西是CPU里头

集成的一个部件

是由它来完成的

所以这个地址的转换

是一个硬件的转换

因为只有当硬件实现

你才能够

因为寻址是非常普遍的

你只有硬件转换

它才能保证这个寻址的高效率

这MMU传统来说

是由操作系统控制的

操作系统决定了哪个进程

它的地址映射到什么地方

所以这个映射叫做页表

页表这个东西

是操作系统管理的

但是就像我们刚才说的

如果它有很多的客户操作系统

那么哪个客户系统

来管理这个页表

所以这个是一个问题

这件事情现在是怎么解决的

不同的虚拟机的Hypervisor

有不同的实现方法

头两种是比较传统的解决方法

第一种方法叫做半虚拟化

所谓半虚拟化的意思就是说

如果客户操作系统你能改

比如说它是个开源头的

它是个Linux或者是什么

那么我稍微改一改

那么它想访问页表

或者想访问这种

你不应该没有权限访问的

操作的时候

那我就不让你访问

咱们把代码改了

我改成我想访问这个

我跟Hypervisor说一声

我说我想访问这个

那个Hypervisor就知道了

它自己可以调度这件事

这叫做半虚拟化

半虚拟化的特点就是说

我需要改动

这个客户端操作系统

而有些操作系统

比如说Windows它不让你改

那你怎么办呢

就是另外一种方法

就叫影子页表

影子页表的说法就是说

你爱访问什么访问什么

但是你访问完了之后

它就会出错

因为它没这权限

它硬件就会(08:31)到操作系统

但是它自己是操作系统

所以它会

(08:34)到Hypervisor

所以这个时候Hypervisor

捕获了这个异常之后说

你想干这件事

那么我来决定

是不是现在让你干这件事

还是让你先等会

让别人先干完了你再干

所以这个叫做影子页表的方案

就是每一个客户端操作系统

需要的没有权限的操作

比如说改MMU这种操作

它都会造成一种异常

然后变成一种硬件的中断

然后Hypervisor

捕获这种中断

然后来把它这个事情

给它打上个补丁

然后让它截住这个操作

把它转换成它允许的操作

这是两个在没有硬件支持的

情况下的操作

但是现在Intel和AMD

这两家作为CPU的巨头们

都想说 现在虚拟化这么时兴

我干嘛不在硬件里支持

其实你想这个页表这东西

原来想的是就是一个操作系统

我们只有一个页表

一个操作系统管理的

其实这件事情

如果你想做成一个多级的

第一级 我说它到底是哪一个

客户操作系统的页表

然后我确定了那个之后

我再往下看

它的页比是怎么回事

每一个操作系统

它自己管理自己的列表

这个事情实际上硬件里实现

是非常简单的

在几年之前

无论是Intel还是AMD

都已经在硬件里

实现了这种功能

他们这种东西的统称

叫做二级地址转换表

叫second-level address

translation tabol

以使用不同的客户操作系统

第二级是传统的页表

当然了Intel和AMD

都有不同名字 商品名字

AMD叫AMD-V 叫RVI

Intel里头 叫VTX或者叫EPT

这些都在硬件里实现

现在目前大部分的Hypervisor

都是利用

这个硬件支持的虚拟化

所以现在虚拟化的开销

实际上是越来越小了

大数据系统基础课程列表:

1. 绪论

-授课视频

--什么是大数据

--大数据典型应用

--大数据的特点

--大数据技术体系

--大数据生态系统

--大数据技术挑战

--课程内容

-1. 绪论--Quiz 1

2.云计算

-授课视频

--2.1大数据和云计算关系概述

--2.2并行化理念

--2.3规模经济理念

--2.4从仓库规模计算机到云

--2.5云计算商业模式概述

--2.6云计算带来的价值

--2.7云计算的分类

--2.8虚拟化技术概述

--2.9计算虚拟化

--2.10网络虚拟化:基础

--2.11网络虚拟化:软件定义网络

--2.12软件定义网络实现

--2.13存储虚拟化:用户接口

--2.14存储虚拟化:分布式存储实现方式

--2.15虚拟化技术总结

--2.16OPENSTACK

--2.17云计算小结

-2.云计算--Quiz 2

3.文件存储

-授课视频

--Video

--Video

--Video

--Video

--Video

--Video

--Video

--Video

--Video

--Video

--Video

--Video

--Video

--Video

--Video

--Video

-3.文件存储--Quiz3

4. 处理框架

-授课视频

--4.1大数据的处理框架

--4.2MapReduce编程模型

--MapReduce执行过程

--4.4MapReduce数据流

--4.5MapReduce性能优化与容错

--4.6Hadoop

--4.7MapReduce总结

--4.8Pig Latin

--4.9Pig Latin语法

--4.10Pig Latin 嵌套数据类型

--4.11Pig Latin 实现与优化

--Pig Latin 实现与优化(2)

--4.13类似框架

--4.14章节总结

-4. 处理框架--Quiz4

5.内存计算

-授课视频

--5.1内存计算概述

--5.2并行计算挑战

--5.3并行计算的局限性

--5.4大数据处理并行系统

--5.5内存计算需求

--5.6MapReduce文件传递数据

--5.7内存计算的可行性

--5.8内存层次的延迟

--5.9内存计算实例-spark

--5.10SPARK-RDD

--5.11大数据并行系统

--5.12Spark编程接口

--5.13Spark编程实例——Log挖掘

--5.14Spark编程实例——WorkCount

--5.15Spark实现技术

--5.16复杂的DAG示例

--5.17RDD性能的提高

--5.18Spark应用和生态环境

--5.19Spark的局限性

-5.内存计算--Quiz5

6. NoSQL

-授课视频

--NoSQL与Cassandra

--数据模型、接口、语言

--系统架构与Gossip协议

--一致性哈希与数据分区

--数据副本及一致性

--节点本地数据存储

-6. NoSQL--Quiz6

7. 流计算

-授课视屏

--Video

--Video

--Video

--Video

--Video

--Video

--Video

--Video

--Video

--Video

-7. 流计算--Quiz7

2.9计算虚拟化笔记与讨论

也许你还感兴趣的课程:

© 柠檬大学-慕课导航 课程版权归原始院校所有,
本网站仅通过互联网进行慕课课程索引,不提供在线课程学习和视频,请同学们点击报名到课程提供网站进行学习。