一 、虚拟化

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

虚拟化的类型:

  全虚拟化

  半虚拟化(涉及修改guestos内核,因此仅支持开源kernel的系统)

  硬件辅助虚拟化(主板上开启虚拟化支持)

几种虚拟化软件简介

KVM

完全虚拟化

架构:寄居架构(linux内核);祼金属架构RHEV-H

特点:祼金属架构RHEV-H或在关键的硬盘和网卡上支持半虚拟化VirtIO,达到最佳性能。

I/O协议栈:KVM重用了整个Linux I/O协议栈,所以KVM的用户就自然就获得了最新的驱动和I/O协议栈的改进。

VmWare ESX

完全虚拟化

架构:裸金属架构

I/O协议栈:VMware选择性能,但是把I/O协议栈放到了hypervisor里面。不幸的是,VMware kernel是专有的,那就意味着VMware不得不开发和维护整个协议栈,会导致开发速度会减慢,你的硬件可能要等一段时间才会得到VMware的支持。

Citrix XenServer

半虚拟化(linux安装linux);全虚拟化(linux安装windows),硬件辅助虚拟化

架构:裸金属架构

I/O协议栈:Xen选择了可维护这条道路,它将所有的I/O操作放到了Linux guest里面,也就是所谓的domain-0里面。重用Linux来做I/O, Xen的维护者就不用重写整个I/O协议栈了。但不幸的是,这样就牺牲了性能:每一个中断都必需经过Xen的调度,才能切换到domain 0, 并且所有的东西都不得不经过一个附加层的映射。

硬件虚拟化

CPU的虚拟化技术是一种硬件方案,支持虚拟技术的CPU带有经特别优化过的指令集来控制虚拟过程,通过这些指令集,虚拟机可以很容易提高性能,相比纯软件的虚拟化技术会在很大程度上提高性能。

纯软件的虚拟化技术

在纯软件虚拟化解决方案中,虚拟机中的操作系统其实是真是操作系统下的一个应用程序,因此,虚拟操作系统上的应用程序到实际操作系统就要比通常应用程序多经过一个通信层。

虚拟化技术分为:

  平台虚拟化(Platform Virtualization)

    针对计算机和操作系统的虚拟化。

  资源虚拟化(Resource Virtualization)

    针对特定的系统资源的虚拟化,比如内存、存储、网络资源等。

  应用程序虚拟化(Application Virtualization)

      包括仿真、模拟、解释技术等。

纯软件虚拟化:

通过模拟完整的硬件环境来虚拟化guestos

效率较低

QEMU

虚拟化层翻译:

多数的虚拟化采用虚拟机管理程序Hypervisor

Hypervisor是一个软件层或者子系统(也称为VMM--Virtual Machine Monitor)

允许多种OS在相同的物理OS中运行

控制硬件并向GuestOS提供访问底层硬件的途径

向GuestOS提供虚拟化的硬件

x86 CPU环

核心指令直接调用运行Ring 0

应用程序运行调用Ring 3

在使用虚拟化时,GuestOS也要有指令运行在Ring 0,为解决此问题采用:

①全虚拟化:

基于二进制翻译

Hypervisor运行在Ring 0(翻译指令)

GuestOS运行在Ring 1

通过异常捕获机制

例如:VM QEMU

②半虚拟化

Hpervisor运行在Ring 0

GusetOS不能直接运行在Ring 0,需要对kernel进行修改,将运行在Ring 0上的指令转为调用Hypervisor

GuestOS上的应用运行在Ring 3

例如:Xen

③硬件辅助虚拟化

Intel-VT和AMD-V创建了一个新的Ring -1单独给Hypervisor使用

GuestOS可以直接使用Ring 0而无需修改

主流例如:KVM VM.ESXi Xen-3.0

Hypervisor分类

类型一:裸金属型(直接安装在硬件设备)

类型二:宿主型(安装的有OS的设备上)

KVM虚拟化技术(一)虚拟化简介的更多相关文章

  1. 虚拟化技术xen的简介和安装

    虚拟化技术的分类: 1,模拟:Emulation ​ Qemu,PearPC,Bochs 2,完全虚拟化:Full Virtualization,Native Virtualization ​ HVM ...

  2. 虚拟化技术实现 — KVM 的 CPU 虚拟化

    目录 文章目录 目录 前文列表 x86 体系结构的虚拟化 硬件辅助的 CPU 虚拟化 由 VMX 切换支撑的 CPU 虚拟化技术 KVM 的 CPU 虚拟化实现 vCPU 的调度方式 客户机 CPU ...

  3. 虚拟化技术实现 — QEMU-KVM

    目录 文章目录 目录 前文列表 KVM QEMU QEMU-KVM QEMU-KVM 调用 KVM 内核模块启动虚拟机的流程概要 前文列表 <虚拟化技术实现 - 虚拟化技术发展编年史> K ...

  4. KVM虚拟化技术

    KVM虚拟化技术 Qemu-kvm kvm virt-manager VNC Qemu-kvm创建和管理虚拟机 一.KVM简介 KVM(名称来自英语:Kernel-basedVirtual Machi ...

  5. 云计算大数据:Xen、KVM、VMware、hyper-v等虚拟化技术的比较

    1.Xen.KVM.VMware.hyper-v等虚拟化技术的比较,xen和kvm,是开源免费的虚拟化软件. vmware是付费的虚拟化软件. hyper-v比较特别,是微软windows 2008 ...

  6. 《KVM虚拟化技术实战和原理解析》读书笔记(十几篇)

    第一章和第二章 第一章 虚拟化和云计算 Saas(软件即服务):将已经部署好的软件作为一种服务来提供,比如:Google Docs, Google Apps Paas(平台即服务):将开发环境作为一种 ...

  7. 虚拟化技术之kvm基础

    一.KVM简介 KVM的全称是kernel base virtual machine(基于内核的虚拟机)是一个开源的系统虚拟化模块,自Linux 2.6.20之后集成在Linux的各个主要发行版本中. ...

  8. KVM虚拟化技术(七)虚拟机配置文件

    KVM虚拟机的配置文件在/etc/libvirt/qemu/下,为xml文件 整体结构如下: <domain type='kvm'> 虚拟机整体信息 系统信息 硬件资源特性 突发事件处理 ...

  9. VPS的虚拟化技术—-XEN,KVM,OPENVZ

    市场上的VPS商家主要有 Xen ,KVM 和 OpenVZ 三种开源的虚拟化技术 Xen 是一个开放源代码虚拟机监视器,由剑桥大学开发.它打算在单个计算机上运行多达 100个满特征的操作系统.操作系 ...

随机推荐

  1. vue事件深入

    事件对象: @click="show($event)" ev.clientX---接收 事件冒泡: 阻止冒泡: 1. ev.cancelBubble=true; 2.@click. ...

  2. sed初学者实用说明

     转自:http://www.codeweblog.com/sed%E5%88%9D%E5%AD%A6%E8%80%85%E5%AE%9E%E7%94%A8%E8%AF%B4%E6%98%8E/ ...

  3. 1449 - The user specified as a definer ('test'@'%') does not exist

    最近在做一个项目,由于服务器切换,所以需要将原有服务器的mysql数据表以及存储过程导入到另一个服务器的mysql数据库中.导入完成之后以为一切是那么的简单,却没有想到总还是出现了一些莫名其妙的问题. ...

  4. 过滤器Filter的四种拦截方式

    过滤器有四种拦截方式!分别是:REQUEST.FORWARD.INCLUDE.ERROR. REQUEST: 直接访问目标资源时执行过滤器.包括:在地址栏中直接访问.表单提交.超链接.重定向,只要在地 ...

  5. 自动化工具gulp搭建环境(详解)

    src:读取文件和文件夹       dest:生成文件(写文件)       watch:监控文件       task:定制任务         pipe:以流的方式处理文件 bower的安装和使 ...

  6. 连接Hive的客户端界面工具–SQuirrel SQL Client

    关键字:Hive客户端.界面.SQuirrel SQL Client 刚看到一个可以连接Hive的客户端界面工具–SQuirrel SQL Client,试了一下,用起来还行,在这里记录一下安装及使用 ...

  7. <spark> ~/spark/conf/spark-default.conf 配置文件

    因为看到我参考的Hadoop/spark集群搭建的文档中的都没有对 /spark-default.conf 的配置 合理地对 /spark-default.conf  进行配置,能够提高执行效率 -- ...

  8. PHP微信关注自动回复文本消息。

    服务器配置URL默认接受 $_GET["echostr"] 配置成功. public function GetShow(){ $token = $this->token; / ...

  9. leetcode1024

    class Solution(object): def videoStitching(self, clips: 'List[List[int]]', T: int) -> int: li = s ...

  10. oracle数据库启动流程及登录认证方式详解

    转自:https://www.2cto.com/database/201803/726644.html ■  oracle启动流程-windows下 1) lsnrctl start  (启动监听) ...