Virtualization虚拟化技术介绍

Virtualization即虚拟化技术,在计算机方面通常是指计算元件在虚拟的基础上而不是真实的基础上运行。虚拟化技术可以扩大硬件的容量,简化软件的重新配置过程。CPU的虚拟化技术可以单CPU模拟多CPU并行,允许一个平台同时运行多个操作系统,并且应用程序都可以在相互独立的空间内运行而互不影响,从而显著提高计算机的工作效率

本节索引:

一、虚拟化基本概念

二、虚拟化常见架构类型

三、Xen架构简介

四、CPU虚拟化原理介绍

五、内存虚拟化原理介绍

 

一、虚拟化基本概念

什么是虚拟化?

虚拟化是把物理的事物转换成为逻辑的方式表现出来

常见的虚拟化

内存虚拟化:内存页面Page File

磁盘虚拟化:RAID,Volume

网络虚拟化:vlan,vxlan

FusionSphere-x86/x64服务器的虚拟化

计算能力:CPU/Memory的虚拟化

存储:VIMS文件系统

网络:分布式虚拟交换机

 

虚拟化的优势

传统物流服务器

操作系统与物理服务器绑定

1.难以迁移

2.难以扩展

3.空间占用高

4.可靠性难以控制

5.资源利用率低

6.难以管理

 

虚拟化服务器

操作系统与物理服务器分离

1.易于迁移、扩展、资源整合

2.标准化的虚拟硬件

3.由一系列文件组成,易于保护

 

 

虚拟化常见概念

Guset OS:运行在虚拟机上的OS

Guset Machine:虚拟出来的虚拟机

Hypervisor:也叫VMM (Virtual Machine Monitor)虚拟机监控器,

Host OS:运行在物理机上的OS

Host Machine:物理机

 

模拟:emulation

x86 -> arm

sata -> scsi

完全虚拟化:Full Virtualization

开发人员直接针对物理平台开发即可,性能能达到硬件IDE的40%

CPU:

BT

HVM

半虚拟化:Para Virtualization

也叫不完全虚拟化,开发人员需针对虚拟化平台开发,性能能达到硬件IDE的80%

建议:生产环境一般使用半虚拟化技术:简单、性能好、易迁移上云

 

IAASCloudOS上部署xen或kvm这样的虚拟机,基础架构即服务

PAASCloudOS上直接提供一个容器作为平台,不需要用户安装操作系统,平台即服务

SAAS本机只需运行个浏览器,其他全交给云来解决,软件即服务

以此延伸,近些年还出现了:

DBaas:数据库即服务

LBaas:负载均衡即服务

……

 

 

二、虚拟化常见架构类型

根据在整个系统中的位置不同,虚拟化架构分为以下几种:

1.寄居虚拟化架构

2.裸金属虚拟化架构

3.操作系统虚拟化架构

4.混合虚拟化架构

 

(一)寄居虚拟化架构

寄居虚拟化架构指在宿主操作系统之上安装和运行虚拟化程序,依赖于宿主操作系统对设备的支持和物理

资源的管理。(类似 Vmware Workstation 的程序)

寄居虚拟化

优点:简单、易于实现

缺点:1.安装和运行应用程序依赖主机操作系统对设备的支持;

2.管理开销较大,性能损耗大

代表产品:VMware Workstation

 

 

2)裸金属虚拟化架构

裸金属虚拟化架构指直接在硬件上面安装虚拟化软件,再在其上安装操作系统和应用,依赖虚拟层内核和

服务器控制台进行管理。

裸金属虚拟化

优点:1.虚拟机不依赖操作系统

2.支持多种操作系统,多种应用

缺点:虚拟层内核开发难度大

代表产品:WNware ESXServer、Citrix XenServer

 

(三)操作系统虚拟化架构

操作系统虚拟化架构在操作系统层面增加虚拟服务器功能。操作系统虚拟化架构把单个的操作系统划分为

多个容器,使用容器管理器来进行管理。

宿主操作系统负责在多个虚拟服务器(即容器)之间分配硬件资源,并且让这些服务器彼此独立。

操作系统虚拟化

优点:1.简单、易于实现

2.管理开销非常低

缺点:隔离性查,多容器共享同一操作系统

代表产品:Docker

 

(四)混合虚拟化架构

混合虚拟化架构将一个内核级驱动器插入到宿主操作系统内核。这个驱动器作为虚拟硬件管理器来协调虚

拟机和宿主操作系统之间的硬件访问。

混合虚拟化

优点:1.相对于寄居虚拟化架构,没有冗余,性能高;

2.可支持多种操作系统

缺点:需底层硬件支持虚拟化拓展功能

代表产品:Redhat KVM

 

 

三、Xen架构简介

1Q~X45X(T2{UT1@E8GY{7NW

Domain U运行在Xen Hypervisor上的普通虚拟机

Domain 0运行在Xen Hypervisor上的特权虚拟机。它拥有访问物理I/O资源的权限,同时和系统上运

行的其他虚拟机进行交互。Domain 0必须要在其他Domain启动之前启动。

 

虚拟机复用有限的外设资源:

1)Hypervisor截获虚拟机对物理硬件的访问请求,然后通过软件的方式来模拟真实设备的效果;

2)前端设备驱动将数据通过VMM提供的接口转发到后端驱动

3)后端驱动VM的数据进行分时分通道的处理

 

 

四、CPU虚拟化原理介绍

(一)基于软件的CPU的虚拟化

基于软件的 CPU 虚拟化,故名思议,就是通过软件的形式来模拟每一条指令。通过前面的文章我们知道常

用的软件虚拟化技术有两种:优先级压缩和二进制代码翻译。这两种是通用技术,可以用在所有虚拟化类

型中。我们就结合 intercept 和 virtualize 来看看 CPU 软件虚拟化是怎么做的。

 

首先,一些必须的硬件知识要知道,X86 体系架构为了让上层的软件(操作系统、应用程序)能够访问硬

件,提供了四个 CPU 特权级别,Ring 0 是最高级别,Ring 1 次之,Ring 2 更次之,Ring 3 是最低级别。

 

一般,操作系统由于要直接访问硬件和内存,因此它的代码需要运行在最高级别 Ring 0 上,而应用程序的

代码运行在最低级别 Ring 3 上,如果要访问硬件和内存,比如设备访问,写文件等,就要执行相关的系统

调用,CPU 的运行级别发生从 Ring 3 到 Ring 0 的切换,当完成之后,再切换回去,我们熟悉的用户态和

内核态切换的本质就来自这里。

 

虚拟化的实现也是基于这个思想,VMM 本质上是个 Host OS,运行在 Ring 0 上,Guest OS 运行在 Ring 1

上,再往上是相应层次的应用程序运行在 Ring 2 和 Ring 3 上。

CPU软件虚拟化

 

(二)基于硬件的CPU虚拟化

上面的这种截获再模拟的纯软件的虚拟化方式,势必是性能非常低的。那怎么样提高性能呢,有一种改进

的方式是修改 Guest OS 中关于特权指令的相关操作,将其改为一种函数调用的方式,让 VMM 直接执

行,而不是截获和模拟,这样就能在一定程度上提高性能。

 

但这种方式并不通用,要去改 Guest OS 的代码,只能看作是一种定制。为了能够通用,又能够提高性

能,就只能从硬件上去做文章了。所以,后来,以 Intel 的 VT-x 和 AMD 的 AMD-V 为主的硬件辅助的

CPU 虚拟化就被提出来(Intel VT 包括 VT-x (支持 CPU 虚拟化)、EPT(支持内存虚拟化)和 VT-

d(支持 I/O 虚拟化)。

 

CPU 硬件辅助虚拟化在 Ring 模式的基础上引入了一种新的模式,叫 VMX 模式。它包括根操作模式

(VMX Root Operation)和非根操作模式(VMX Non-Root Operation)。

这两种模式都有 Ring 0 – Ring 3 的特权级。所以,在描述某个应用程序时,除了描述其属于哪个特权级,

还要指明其处于根模式还是非根模式。

 

引入这种模式的好处就在于,Guest OS 运行在 Ring 0 上,就意味着它的核心指令可以直接下达到硬件层

去执行,而特权指令等敏感指令的执行则是由硬件辅助,直接切换到 VMM 执行,这是自动执行的,应用

程序是感知不到的,性能自然就提高了。

CPU硬件虚拟化

KVM 是一种硬件辅助的虚拟化技术,支持 Intel VT-x 和 AMD-v 技术。

 

五、内存虚拟化原理介绍

通过各种内存复用技术(零页共享、内存气泡和内存交换)与合理的调度,使主机上的虚拟机对内存的

访问及时响应,减少内存复用开启情况下的虚拟机性能损耗

(一)零页共享

将主机上的多个虚拟机的零页内存在物理内存中进行合并,释放出更多的物理内存供虚拟机使用。

 

(二)内存气泡

Hypervisor通过内存气泡将较空闲虚拟机内存释放给内存使用率较高的虚拟机,用来提升内存利用率。

内存气泡技术对虚拟机性能影响较小,但是在内存减少时,用户能感知到

 

(三)内存交换

当虚拟机的内存压力较大时,将虚拟机内存页交换到磁盘中从而释放内存;

当虚拟机内存页交换到磁盘后,虚拟机的性能将下降比较明显

本文来自投稿,不代表Linux运维部落立场,如若转载,请注明出处:http://www.178linux.com/104073

(3)
wangxczwangxcz
上一篇 2018-07-27
下一篇 2018-07-28

相关推荐

  • hell脚本基础知识详细介绍

    Shell本身是一个用C语言编写的程序,它是用户使用Linux的桥梁。Shell既是一种命令语言,又是一种程序设计语言。作为命令语言,它交互式地解释和执行用户输入的命令;作为程序设计语言,它定义了各种变量和参数,并提供了许多在高级语言中才具有的控制结构,包括循环和分支。 它虽然不是Linux系统核心的一部分,但它调用了系统核心的大部分功能来执行程序、建立文件…

    Linux笔记 2018-05-14
  • 如何在Linux系统上获取命令的帮助信息

    (1)首先用type命令,来判断需要获取帮助的命令是内部命令,还是外部命令。 内部命令:help空格command   按q键退出 (2) 外部命令: 命令自带简要格式的使用帮助 Command –help例如ls –help ①NAME 命令的功能性简要说明 ②SYNOPSIS 简要使用语法格式 【】:可选内容。 <>:…

    2018-06-27
  • liunx笔记

    操作系统 :硬件驱动    进程管理    内存管理   网络管理   安全管理 文件管理 。 编程语言   :低级语言   机器语言  :0和1   中级语言:c    高级语言 :java  python       php . 服务器三大操作系统  :windows      liunx    unix. liunx 内核  :住版本号   次版本号 …

    Linux笔记 2018-04-01
  • 配置yum源

    配置yum源

    2018-04-23
  • 带你认识Linux中的通配符

    所谓的通配是指:显示以指定条件的文件,英文名为glob。通配符是一种特殊语句,用来模糊搜索文件。当查找文件夹时,可以使用它来代替一个或多个真正字符它使得文件管理更加快速,便捷,大大提升了工作效率。

    2018-04-01