精华内容
下载资源
问答
  • 关于Linux虚拟化技术大致上可以分为六个不同的方式。在本文中,我们将讨论实现Linux虚拟化的这六种方式,以及Linux下的多种虚拟化解决方案。  当我们讨论虚拟化解决方案的时候,常常都要提到具体厂商的具体产品,...
  • 虚拟化技术详解

    万次阅读 多人点赞 2018-07-14 17:10:52
    windows下的常用的虚拟化技术有VmWare,VirtualBox等等,那么这篇文章将会介绍这些技术基本的实现原理,并普及虚拟化相关的术语描述。 目录 虚拟化技术简介 虚拟化分类 寄居虚拟化 裸机虚拟化 cpu虚拟化 内存...

    看到这篇文章的朋友,大部分应该都用过虚拟化软件,然后才会想知道虚拟化技术的。windows下的常用的虚拟化技术有VmWare,VirtualBox等等,那么这篇文章将会介绍这些技术基本的实现原理,并普及虚拟化相关的术语描述。

    目录

    虚拟化技术简介

    首先,什么是计算机?现在使用的计算机都离不开冯诺依曼体系结构,如图1所示,有输入设备、输出设备、存储器、cpu这就算是完整的计算机硬件环境了(当然还需要网卡、显卡等等)。虚拟化技术就是在一台机器上模拟出独立的cpu、存储器等使得同一台主机能虚拟为多台主机或者多台主机能虚拟为一台主机。本文只讨论第一种,让一台主机能够虚拟多台主机的环境。
    这里写图片描述
    图1 冯诺依曼体系结构

    现实生活中有各种各样的虚拟化技术,不同的虚拟化技术面对的应用场景也不一样。你可能用过VmVare或者VirtualBox来完成大学里面linux或者操作系统的学习,目的是为了在电脑上装上不同的操作系统。也有可能你是一名运维人员,你用过阿里云或者腾讯云,那么你作为租户,使用的其实是阿里云提供给你的一台虚拟机,阿里从大量的服务器集群中,分出了一定的cpu、内存等等资源给你,就成了一台完整的虚拟机。
    虚拟化使用软件的方法重新定义划分IT资源,可以实现IT资源的动态分配、灵活调度、跨域共享,提高IT资源利用率,使IT资源能够真正成为社会基础设施,服务于各行各业中灵活多变的应用需求。

    虚拟化分类

    在刘鹏的《云计算》书中,把虚拟化分为了两类,一类是建立在宿主机上的,也就是宿主机是有操作系统的,另一类是宿主机没有操作系统的,我们把前者称为寄居虚拟化,后者称为裸机虚拟化。

    寄居虚拟化

    寄居虚拟化如图2所示,最底层是物理硬件,物理硬件之上是主机的操作系统,操作系统之上是VMM(virtual machine monitor,虚拟机管理层),再往上就是客户的虚拟户了。
    这里写图片描述
    图2 寄居虚拟化

    在这种技术里面,虚拟机对各种物理设备(cpu、内存、硬盘等)的调用,都是通过VMM层和宿主机的操作系统一起协调才完成的。VMvare和VirtualBox都是基于这种方式实现的。

    裸机虚拟化

    裸机虚拟化指的是,直接将VMM安装在硬件设备与物理硬件之间,如图3所示。VMM在这种模式下又叫做Hypervisor,虚拟机有指令要执行时,Hypervisor会接管该指令,模拟相应的操作。
    这里写图片描述
    图3 裸机虚拟化

    Hypervisor是一种在虚拟环境中的“元”操作系统。他们可以访问服务器上包括磁盘和内存在内的所有物理设备。Hypervisor不但协调着这些硬件资源的访问,也同时在各个虚拟机之间施加防护。当服务器启动并执行Hypervisor时,它会加载所有虚拟机客户端的操作系统同时会分配给每一台虚拟机适量的内存,CPU,网络和磁盘。

    如果要进行虚拟化,必须要给虚拟机一个假的独立的环境,让他误以为自己处在一个独立的环境当中,于是就需要模拟cpu、内存、硬盘、网络等资源,模拟一个独立完整的硬件环境。

    cpu虚拟化

    cpu虚拟化指的就是把物理的cpu虚拟为多个虚拟cpu,从而实现一个cpu能被多台虚拟机共用,但是却相互隔离的场景。cpu的运转是以时间为单位的,cpu虚拟化要解决的问题主要是隔离和调度问题,隔离指的是让不同的虚拟机之间能够相互独立的执行命令,调度指的是VMM决定cpu当前在哪台虚拟机上执行。
    由于x86体系设计的cpu在虚拟化上具有一定的缺陷,所以我们有两种方法来实现cpu的虚拟化。其一是采用完全虚拟化的方式,利用动态指令转换或者硬件辅助来帮助实现cpu的虚拟化;其二是采用半虚拟化得方式,在客户的操作系统内核上进行一定的更改使得操作系统自己明白自己是虚拟机的角色,能够在VMM的管理下尽可能的访问硬件。
    如果某些同学对于cpu虚拟化想要有更加深入的了解,可以看一下这些博客:

    内存虚拟化

    内存提出的原因

    首先,内存存在的原因是cpu运转速度极快,超过了磁盘的读取速度,如果cpu直接读取硬盘的话,大部分的时间cpu都在等待。同时,程序访问又拥有局部性原理(80%的访问都在访问数据中20%的数据),于是乎就有牛人想到能不能用一小块儿读取速率快的存储设备来存放经常被读取的数据,这样cpu处理数据的速度就能和存储器读取设备的速度相匹配。系统性能达到最大化。

    虚拟内存

    虚拟内存是计算机OS经常要讲到的一块儿内容,为什么需要虚拟内存呢?,建议花几分钟时间读下面这篇博客,来帮助你理解我要说的内容。
    内存的发展
    通过上面这篇文章,你应该已经了解到一个内容,假设我们设定的虚拟内存是4G,虚拟内存就是给系统当中的每一个进程分配4G的虚拟地址,这样每个进程都感觉自己是独立的使用一块儿内存,具有良好的隔离性,同时,每个进程都是从0的虚拟地址开始的,这样就更有助于管理进程。但程序要运行,必须要运行在真实的内存上,所以会建立一种映射机制来帮助实现虚拟地址到物理地址之间的映射。
    通过虚拟内存的方式实现了进程之间的地址隔离。

    内存的虚拟化

    内存的虚拟化指的是把物理内存包装成若干虚拟内存来使用,把物理内存抽象出来,给每一台虚拟机都分配一个连续的内存空间。其具体的实现,可以参照下面的博文。
    内存虚拟化的实现

    硬盘虚拟化

    硬盘虚拟化相对简单一些,拿VMvare来举例,在VMvare当中,会使用物理硬盘上的一个文件来当做虚拟机当中的一个硬盘,如图4所示,虚拟机通过调用相关进程(如VMvare进程)访问相关的宿主机的文件系统,再通过文件系统调用windows内核,再调用驱动,然后在磁盘上进行读写。
    这里写图片描述
    图4 虚拟硬盘读写流程

    网络虚拟化

    网络虚拟化是让一个物理网络能够支持多个逻辑网络,虚拟化保留了网络设计中原有的层次结构、数据通道和所能提供的服务,使得最终用户的体验和独享物理网络一样,同时网络虚拟化技术还可以高效的利用网络资源如空间、能源、设备容量等。
    网络虚拟化的目的,是要节省物理主机的网卡设备资源。从资源这个角度去理解,可能会比较好理解一点。
    详情请参见这篇文章:网络虚拟化

    展开全文
  • VT虚拟化检测工具

    2019-04-23 00:32:08
    电脑VT测试工具可检测电脑是否...电脑的VT指的是CPU的虚拟化技术可以单CPU模拟多CPU并行,允许一个平台同时运行多个操作系统,并且应用程序都可以在相互独立的空间内运行而互不影响,从而显著提高计算机的工作效率。
  • 我从1993年学习计算机,有过短期的C语言开发经历,现在主要从事网络与系统集成的工作。我可以算是学习计算机比较"早"的一批人了。...3.1(中文版)开始,再到Windows3.11、Windows95、98一直到现在的Windows 10。
  • 所有的操作系统都有内核,无论是Windows还是Linux,都管理着三个重要的资源:计算,网络,存储。 计算指CPU和内存,网络即网络设备,存储即硬盘之类的。 内核是个大管家,想象你的机器上跑着很多的程序,有word...

    文章转载至网易云架构师刘超的个人微信号

    内核,是指的操作系统内核。

    所有的操作系统都有内核,无论是Windows还是Linux,都管理着三个重要的资源:计算,网络,存储。

    计算指CPU和内存,网络即网络设备,存储即硬盘之类的。
    这里写图片描述
    内核是个大管家,想象你的机器上跑着很多的程序,有word,有excel,看着视频,听着音乐,每个程序都要使用CPU和内存,都要上网,都要存硬盘,如果没有一个大管家管着,大家随便用,就乱了。所以需要管家来协调调度整个资源,谁先用,谁后用,谁用多少,谁放在这里,谁放在那里,都需要管家操心。

    所以在这个计算机大家庭里面,管家有着比普通的程序更高的权限,运行在内核态,而其他的普通程序运行在用户态,用户态的程序一旦要申请公共的资源,就需要向管家申请,管家帮它分配好,它才能用。

    为了区分内核态和用户态,CPU专门设置四个特权等级0,1,2,3 来做这个事情。

    这里写图片描述

    当时写Linux内核的时候,估计大牛们还不知道将来虚拟机会大放异彩,大牛们想,一共两级特权,一个内核态,一个用户态,却有四个等级,好奢侈,好富裕,就敞开了用,内核态运行在第0等级,用户态运行在第3等级,占了两头,太不会过日子了。

    大牛们在写Linux内核的时候,如果用户态程序做事情,就将扳手掰到第3等级,一旦要申请使用更多的资源,就需要申请将扳手掰到第0等级,内核才能在高权限访问这些资源,申请完资源,返回到用户态,扳手再掰回去。

    这个程序一直非常顺利的运行着,直到虚拟机的出现。

    如果大家用过Vmware桌面版,或者Virtualbox桌面版,你可以用这个虚拟化软件创建虚拟机,在虚拟机里面安装一个Linux或者windows,外面的操作系统也可以是Linux或者Windows。

    当你使用虚拟机软件的时候,和你的excel一样,都是在你的任务栏里面并排的放着,是一个普通的应用。

    当你进入虚拟机的时候,虚拟机里面的excel也是一个普通的应用。

    但是当你设身处地的站在虚拟机里面的内核的角度思考一下人生,你就困惑了,我到底个啥?

    在硬件上的操作系统来看,我是一个普通的应用,只能运行在用户态。可是大牛们生我的时候,我的每一行代码,都告诉我,我是个内核啊,应该运行在内核态,当虚拟机里面的excel要访问网络的时候,向我请求,我的代码就要努力的去操作网络资源,我努力,但是我做不到,我没有权限!

    我分裂了。

    虚拟化层,也就是Vmware或者Virtualbox需要帮我解决这个问题。

    第一种方式,完全虚拟化,其实就是骗我。虚拟化软件模拟假的CPU,内存,网络,硬盘给我,让我自我感觉良好,终于又像个内核了。

    真正的工作模式是这样的。

    虚拟机内核:我要在CPU上跑一个指令!
    虚拟化软件:没问题,你是内核嘛,可以跑
    虚拟化软件转过头去找物理机内核:报告管家,我管理的虚拟机里面的一个要执行一个CPU指令,帮忙来一小段时间空闲的CPU时间,让我代他跑个指令。
    物理机内核:你等着,另一个跑着呢。好嘞,他终于跑完了,该你了。
    虚拟化软件:我代他跑,终于跑完了,出来结果了
    虚拟化软件转头给虚拟机内核:哥们,跑完了,结果是这个,我说你是内核吧,绝对有权限,没问题,下次跑指令找我啊。
    虚拟机内核:看来我真的是内核呢。可是哥,好像这点指令跑的有点慢啊。
    虚拟化软件:这就不错啦,好几个排着队跑呢。

    内存的申请模式如下。

    虚拟机内核:我启动需要4G内存,我好分给我上面的应用。
    虚拟化软件:没问题,才4G,你是内核嘛,马上申请好。
    虚拟化软件转头给物理机内核:报告,管家,我启动了一个虚拟机,需要4G内存,给我4个房间呗。
    物理机内核:怎么又一个虚拟机啊,好吧,给你90,91,92,93四个房间。
    虚拟化软件转头给虚拟机内核:哥们,内存有了,0,1,2,3这个四个房间都是你的,你看,你是内核嘛,独占资源,从0编号的就是你的。
    虚拟机内核:看来我真的是内核啊,能从头开始用。那好,我就在房间2的第三个柜子里面放个东西吧。
    虚拟化软件:要放东西啊,没问题。心里想:我查查看,这个虚拟机是90号房间开头的,他要在房间2放东西,那就相当于在房间92放东西。
    虚拟化软件转头给物理机内核:报告,管家,我上面的虚拟机要在92号房间的第三个柜子里面放个东西。

    好了,说完了CPU和内存的例子,不细说网络和硬盘了,也是类似,都是虚拟化软件模拟一个给虚拟机内核看的,其实啥事儿都需要虚拟化软件转一遍。

    这种方式一个坏处,就是慢,往往慢到不能忍受。

    于是虚拟化软件想,我能不能不当传话筒,还是要让虚拟机内核正视自己的身份,别说你是内核,你还真喘上了,你不是物理机,你是虚拟机。

    但是怎么解决权限等级的问题呢?于是Intel的VT-x和AMD的AMD-V从硬件层面帮上了忙。当初谁让你们这些写内核的大牛用等级这么奢侈,用完了0,就是3,也不省着点用,没办法,只好另起炉灶弄一个新的标志位,表示当前是在虚拟机状态下,还是真正的物理机内核下。

    对于虚拟机内核来讲,只要将标志位设为虚拟机状态,则可以直接在CPU上执行大部分的指令,不需要虚拟化软件在中间转述,除非遇到特别敏感的指令,才需要将标志位设为物理机内核态运行,这样大大提高了效率。

    所以安装虚拟机的时候,务必要将物理CPU的这个标志位打开,是否打开对于Intel可以查看grep “vmx” /proc/cpuinfo,对于AMD可以查看grep “svm” /proc/cpuinfo

    这叫做硬件辅助虚拟化。

    另外就是访问网络或者硬盘的时候,为了取得更高的性能,也需要让虚拟机内核加载特殊的驱动,也是让虚拟机内核从代码层面就重新定位自己的身份,不能像访问物理机一样访问网络或者硬盘,而是用一种特殊的方式:我知道我不是物理机内核,我知道我是虚拟机,我没那么高的权限,我很可能和很多虚拟机共享物理资源,所以我要学会排队,我写硬盘其实写的是一个物理机上的文件,那我的写文件的缓存方式是不是可以变一下,我发送网络包,根本就不是发给真正的网络设备,而是给虚拟的设备,我可不可以直接在内存里面拷贝给他,等等等等。

    一旦我知道我不是物理机内核,痛定思痛,只好重新认识自己,反而能找出很多方式来优化我的资源访问。

    这叫做类虚拟化或者半虚拟化。

    展开全文
  • 虚拟化技术

    千次阅读 2018-08-30 20:31:51
    1、hypervisor Hypervisor是一种运行在物理服务器和操作系统之间的中间软件层,可允许多个操作系统和应用共享一套基础物理硬件...Hypervisor是所有虚拟化技术的核心。非中断地支持多工作负载迁移的能力是Hypervisor...

    1、hypervisor
    Hypervisor是一种运行在物理服务器和操作系统之间的中间软件层,可允许多个操作系统和应用共享一套基础物理硬件,因此也可以看作是虚拟环境中的“元”操作系统,它可以协调访问服务器上的所有物理设备和虚拟机,也叫虚拟机监视器(Virtual Machine Monitor)。Hypervisor是所有虚拟化技术的核心。非中断地支持多工作负载迁移的能力是Hypervisor的基本功能。Hypervisors不但协调着这些硬件资源的访问,也同时在各个虚拟机之间施加防护。当服务器启动并执行Hypervisor时,它会给每一台虚拟机分配适量的内存、CPU、网络和磁盘,并加载所有虚拟机的客户操作系统。
    这里写图片描述

    目前市场上各种x86 管理程序(hypervisor)的架构存在差异,三个最主要的架构类别包括:
    I型:虚拟机直接运行在系统硬件上,创建硬件全仿真实例,被称为“裸机”型。裸机型在虚拟化中Hypervisor直接管理调用硬件资源,不需要底层操作系统,也可以将Hypervisor看作一个很薄的操作系统。这种方案的性能处于主机虚拟化与操作系统虚拟化之间。
    II型:虚拟机运行在传统操作系统上,同样创建的是硬件全仿真实例,被称为“托管(宿主)”型。托管型/主机型Hypervisor运行在基础操作系统上,构建出一整套虚拟硬件平台(CPU/Memory/Storage/Adapter),使用者根据需要安装新的操作系统和应用软件,底层和上层的操作系统可以完全无关化,如Windows运行Linux操作系统。主机虚拟化中VM的应用程序调用硬件资源时需要经过:VM内核->Hypervisor->主机内核,因此相对来说,性能是三种虚拟化技术中最差的。
    Ⅲ型:虚拟机运行在传统操作系统上,创建一个独立的虚拟化实例(容器),指向底层托管操作系统,被称为“操作系统虚拟化”。图 1 三种主要的虚拟化架构类型操作系统虚拟化是在操作系统中模拟出运行应用程序的容器,所有虚拟机共享内核空间,性能最好,耗费资源最少。但是缺点是底层和上层必须使用同一种操作系统,如
    底层操作系统运行的是Windows系统,则VPS/VE就必须运行Windows。
    常见的Hypervisor有两类: 裸机型与宿主型
    裸机型的Hypervisor最为常见,直接安装在硬件计算资源上,操作系统安装并且运行在Hypervisor之上。
    这里写图片描述

    2、虚拟化技术
    虚拟化技术指的是软件层面的实现虚拟化的技术,整体上分为开源虚拟化和商业虚拟化两大阵营。典型的代表有:Xen,KVM,WMware,Hyper-V、Docker容器等。

    KVM
    Kernel-based Virtual Machine的简称,是一个开源的系统虚拟化模块,是Linux内核的一个可加载模块,通过调用Linux本身内核功能,实现对CPU的底层虚拟化和内存的虚拟化,使Linux内核成为虚拟化层,需要x86架构的,支持虚拟化功能的硬件支持(比如Intel-VT,AMD-V),是一种全虚拟化架构。自Linux 2.6.20之后集成在Linux的各个主要发行版本中。它使用Linux自身的调度器进行管理,所以相对于Xen,其核心源码很少。KVM目前已成为学术界的主流VMM之一。
    KVM的虚拟化需要硬件支持(如Intel VT技术或者AMD V技术)。是基于硬件的完全虚拟化。而Xen早期则是基于软件模拟的Para-Virtualization,新版本则是基于硬件支持的完全虚拟化。但Xen本身有自己的进程调度器,存储管理模块等,所以代码较为庞大。广为流传的商业系统虚拟化软件VMware ESX系列是基于软件模拟的Full-Virtualization。
    KVM是集成到Linux内核的Hypervisor,是X86架构且硬件支持虚拟化技术(IntelVT或AMD-V)的Linux的全虚拟化解决方案。它是Linux的一个很小的模块,利用Linux做大量的事,如任务调度、内存管理与硬件设备交互等。准确来说,KVM是Linuxkernel的一个模块。可以用命令modprobe去加载KVM模块。加载了模块后,才能进一步通过其他工具创建虚拟机。但仅有KVM模块是远远不够的,因为用户无法直接控制内核模块去作事情,你还必须有一个运行在用户空间的工具才行。这个用户空间的工具,kvm开发者选择了已经成型的开源虚拟化软件QEMU。说起来QEMU也是一个虚拟化软件。它的特点是可虚拟不同的CPU。比如说在x86的CPU上可虚拟一个Power的CPU,并可利用它编译出可运行在Power上的程序。KVM使用了QEMU的一部分,并稍加改造,就成了可控制KVM的用户空间工具了。所以你会看到,官方提供的KVM下载有两大部分(qemu和kvm)三个文件(KVM模块、QEMU工具以及二者的合集)。也就是说,你可以只升级KVM模块,也可以只升级QEMU工具。这就是KVM和QEMU的关系。
    这里写图片描述

    QEMU
    QEMU:是一套由Fabrice Bellard编写的模拟处理器的自由软件,它是一个完整的可以单独运行的软件,可以独立模拟出整台计算机,包括CPU,内存,IO设备,通过一个特殊的“重编译器”对特定的处理器的二进制代码进行翻译,从而具有了跨平台的通用性。QEMU有两种工作模式:系统模式,可以模拟出整个电脑系统,另一种是用户模式,可以运行不同与当前硬件平台的其他平台上的程序(比如在x86平台上运行跑在ARM平台上的程序);其代码地址 http://git.qemu.org/qemu.git ,有兴趣的同学可以自己去看看,目前最新的版本是2.7.0,在0.9.1及之前版本还可以使用kqemu加速器(可以理解为QEMU的一个插件,用来提高QEMU的翻译性能,支持Windows平台),但1.0以后版本就只能使用qemu-kvm(只支持Linux)进行加速了,1.3版本后QEMU和QEMU-KVM合二为一了。
    这里写图片描述

    QEMU-KVM
    QEMU-KVM:从前面对KVM内核模块的介绍知道,它只负责CPU和内存的虚拟化,加载了它以后,用户就可以进一步通过工具创建虚拟机(KVM提供接口),但仅有KVM还是不够的,用户无法直接控制内核去做事情(KVM只提供接口,怎么创建虚拟机,分配vCPU等并不在它上面进行),还必须有个运行在用户空间的工具才行,KVM的开发者选择了比较成熟的开源虚拟化软件QEMU来作为这个工具,并对其进行了修改,最后形成了QEMU-KVM。

    在QEMU-KVM中,KVM运行在内核空间,QEMU运行在用户空间,实际模拟创建,管理各种虚拟硬件,QEMU将KVM整合了进来,通过/ioctl 调用 /dev/kvm,从而将CPU指令的部分交给内核模块来做,KVM实现了CPU和内存的虚拟化,但kvm不能虚拟其他硬件设备,因此qemu还有模拟IO设备(磁盘,网卡,显卡等)的作用,KVM加上QEMU后就是完整意义上的服务器虚拟化。当然,由于qemu模拟io设备效率不高的原因,现在常常采用半虚拟化的virtio方式来虚拟IO设备。
    综上所述,QEMU-KVM具有两大作用:
    1.提供对cpu,内存(KVM负责),IO设备(QEMU负责)的虚拟
    2.对各种虚拟设备的创建,调用进行管理(QEMU负责)

    Xen
    Xen是第一类运行在裸机上的虚拟化管理程序(Hypervisor)。它支持全虚拟化和准虚拟化,Xen支持hypervisor和虚拟机互相通讯,而且提供在所有Linux版本上的免费产品,包括Red Hat Enterprise Linux和SUSE Linux Enterprise Server。

    Xen最重要的优势在于准虚拟化,此外未经修改的操作系统也可以直接在Xen上运行(如Windows),能让虚拟机有效运行而不需要仿真,因此虚拟机能感知到Hypervisor,而不需要模拟虚拟硬件,从而能实现高性能。
    这里写图片描述

    虚拟化技术学习视频:包括CPU虚拟化、内存虚拟化和IO虚拟化等
    https://edu.aliyun.com/course/38?spm=5176.10731542.0.0.EWlpvC

    展开全文
  • VMware ESXI虚拟化实验报告虚拟化linux和windows server2008R2
  • 云计算之虚拟化技术

    千次阅读 2019-07-16 15:01:35
    云叔和云计算关注 0.12017.12.10 13:32*字数 3194阅读 7608评论 0喜欢 5 通过前几篇文章的阅读,相信大家对云计算概念、架构和技术有了一定的认识。...在讲虚拟化技术前,我们先来学习几个概念: ...

    转载:https://www.jianshu.com/p/312056e70387?from=timeline

    96 云叔和云计算 关注

     0.1 2017.12.10 13:32* 字数 3194 阅读 7608评论 0喜欢 5

    通过前几篇文章的阅读,相信大家对云计算概念、架构和技术有了一定的认识。那么,我们这里来谈谈云计算的核心技术之一:虚拟化。

    在讲虚拟化技术前,我们先来学习几个概念:

    (1)物理平台----实现虚拟技术的真实物理硬件和操作系统平台。

    (2)虚拟平台----在物理平台上,虚拟出来的运行不同操作系统的各种虚拟机。

    (3)VMM----虚拟机监视器,一种监控和管理虚拟机运行的核心软件层,也叫Hypervisor。

    (4)宿主机----真实的物理服务器,上面可以运行虚拟出来的虚拟机。

    (5)客户机----就是指从宿主机上虚拟出来的虚拟机。

     

    1 什么是虚拟化?

    云计算的核心技术之一就是虚拟化技术。所谓虚拟化,是指通过虚拟化技术将一台计算机虚拟为多台逻辑计算机。在一台计算机上同时运行多个逻辑计算机,每个逻辑计算机可运行不同的操作系统,并且应用程序都可以在相互独立的空间内运行而互不影响,从而显著提高计算机的工作效率。

    虚拟化的核心软件VMM,是一种运行在物理服务器和操作系统之间的中间层软件。VMM是一种在虚拟环境中的“元”操作系统。他们可以访问服务器上包括CPU、内存、磁盘、网卡在内的所有物理设备。VMM不但协调着这些硬件资源的访问,也同时在各个虚拟机之间施加防护。当服务器启动并执行VMM时,它会加载所有虚拟机客户端的操作系统同时会分配给每一台虚拟机适量的内存,CPU,网络和磁盘。

    2 虚拟化方式

    虚拟化技术有很多实现方式,比如根据虚拟化的程度和级别,有软件虚拟化和硬件虚拟化,全虚拟化和半虚拟化。

    2.1软件虚拟化

    软件虚拟化,顾名思义,就是采用纯软件的方法在在现有的物理平台上实现物理平台访问的截获和模拟,该物理平台往往不支持硬件虚拟化。

    常见的软件虚拟化技术QEMU,是通过纯软件来仿真X86平台处理器的指令,然后解码和执行,该过程并不在物理平台上直接执行,而是通过软件模拟实现,因此往往性能比较差,但是可以在同一平台上模拟出不同架构平台的虚拟机。

    VMware则采用了动态二进制翻译技术。VMM在可控的范围内,允许客户机的指令在可控的范围内直接运行。客户机指令在运行前会被VMM扫描,其中突破VMM限制的指令被动态替换为可以在物理平台上直接运行的安全指令,或者替换为对VMM的软件调用。因此其性能上比QEMU有大幅提升,但是其失去了跨平台虚拟化的能力。

    2.2硬件虚拟化

    硬件虚拟化,简单来说,就是物理平台本身提供了对特殊指令的截获和重定向的硬件支持,新的硬件会提供额外的资源来帮助软件实现对关键硬件资源的虚拟化,从而提升性能。

    比如X86平台,CPU带有特别优化过的指令集来控制虚拟过程,通过这些指令集,VMM会将客户机置于一种受限模式下运行,一旦客户机试图访问硬件资源,硬件会暂停客户机的运行,将控制权交回给VMM处理。同时,VMM还可以利用硬件的虚拟化增强技术,将客户机对硬件资源的访问,完全由硬件重定向到VMM指定的虚拟资源。

    由于硬件虚拟化可提供全新的架构,支持操作系统直接在上面运行,无需进行二进制翻译转换,减少的性能开销,极大地简化了VMM的设计,从而使VMM可以按标准编写,通用性更好,性能更强。

    需要说明的是,硬件虚拟化技术是一套解决方案,完整的情况需要CPU、主板芯片组、BIOS和软件的支持。Intel在其处理器产品线中实现了Intel VT虚拟化技术(包括Intel VT-x/d/c)。AMD也同样实现了其芯片级的虚拟化技术AMD-V。

    2.3全虚拟化

    完全虚拟化技术又叫硬件辅助虚拟化技术,最初所使用的虚拟化技术就是全虚拟化(Full Virtualization)技术,它在虚拟机(VM)和硬件之间加了一个软件层Hypervisor,或者叫做虚拟机管理程序或虚拟机监视器(VMM)。

    完全虚拟化技术几乎能让任何一款操作系统不用改动就能安装到虚拟服务器上,而它们不知道自己运行在虚拟化环境下。主要缺点是,性能方面不如裸机,因为VMM需要占用一些资源,给处理器带来开销。

    2.4半虚拟化

    半虚拟化技术是后来才出现的技术,也叫做准虚拟化技术,现在比较热门,它就是在全虚拟化的基础上,把客户操作系统进行了修改,增加了一个专门的API,这个API可以将客户操作系统发出的指令进行最优化,即不需要VMM耗费一定的资源进行翻译操作。因此VMM的工作负担变得非常的小,因此整体的性能也有很大的提高。不过缺点就是,要修改包含该API的操作系统,但是对于某些不含该API的操作系统(主要是Windows)来说,就不行能用这种方法。

    半虚拟化技术的优点是性能高。经过半虚拟化处理的服务器可与VMM协同工作,其响应能力几乎不亚于未经过虚拟化处理的服务器。它的客户操作系统(Guest OS)集成了虚拟化方面的代码。该方法无需重新编译或引起陷阱,因为操作系统自身能够与虚拟进程进行很好的协作。

    3 虚拟化实现

    虚拟化技术指的是软件层面的实现虚拟化的技术,整体上分为开源虚拟化和商业虚拟化两大阵营。典型的代表有:Xen,KVM,WMware,Hyper-V、Docker容器等。

    这里介绍一下开源的KVM和Xen以及微软的Hyper-V技术。

    3.1 KVM

     

    KVM(Kernel-based Virtual Machine)是基于内核的虚拟机,KVM是集成到Linux内核的VMM,是X86架构且硬件支持虚拟化技术(Intel VT或AMD-V)的Linux的全虚拟化解决方案。它是Linux的一个很小的模块,利用Linux做大量的事,如任务调度、内存管理与硬件设备交互等。

    KVM本身不执行任何模拟,需要用户控件程序通过/dev/kvm接口设置一个客户机的虚拟虚拟地址空间,向它提供模拟的I/O,并将其视频显示映射回宿主机的显示屏。

    KVM继承了Linux系统管理内存的诸多特性,比如,分配给虚拟使用的内存可以被交换至交换空间、能够使用大内存页以实现更好的性能,以及对NUMA的支持能够让虚拟机高效访问更大的内存空间等。

    KVM基于Intel的EPT(ExtendedPage Table)或AMD的RVI(Rapid Virtualization Indexing)技术可以支持更新的内存虚拟功能,这可以降低CPU的占用率,并提供较好的吞吐量。此外,KVM还借助于KSM(Kernel Same-pageMerging)这个内核特性实现了内存页面共享。KSM通过扫描每个虚拟机的内存查找各虚拟机间相同的内存页,并将这些内存页合并为一个被各相关虚拟机共享的单独页面。在某虚拟机试图修改此页面中的数据时,KSM会重新为其提供一个新的页面副本。实践中,运行于同一台物理主机上的具有相同GuestOS的虚拟机之间出现相同内存页面的概率是很的,比如共享库、内核或其它内存对象等都有可能表现为相同的内存页,因此,KSM技术可以降低内存占用进而提高整体性能。

    3.2 Xen

     

    Xen是一个基于X86架构、发展最快、性能最稳定、占用资源最少的开源虚拟化技术。在Xen使用的方法中,没有指令翻译。这是通过两种方法之一实现的。第一,使用一个能理解和翻译虚拟操作系统发出的未修改指令的CPU(此方法称作完全虚拟化)。另一种,修改操作系统,从而使它发出的指令最优化,便于在虚拟化环境中执行(此方法称作准虚拟化)。

    在Xen环境中,主要有两个组成部分。一个是虚拟机监控器(VMM)。VMM层在硬件与虚拟机之间,是必须最先载入到硬件的第一层。Hypervisor载入后,就可以部署虚拟机了。在Xen中,虚拟机叫做“domain”。在这些虚拟机中,其中一个扮演着很重要的角色,就是domain0,具有很高的特权。通常,在任何虚拟机之前安装的操作系统才有这种特权。

    Domain0要负责一些专门的工作。由于hypervisor中不包含任何与硬件对话的驱动,也没有与管理员对话的接口,这些驱动就由domain0来提供了。通过domain0,管理员可以利用一些Xen工具来创建其它虚拟机(Xen术语叫domainU)。这些domainU也叫无特权domain。这是因为在基于i386的CPU架构中,它们绝不会享有最高优先级,只有domain0才可以。

    3.3 Hyper-V

    Hyper-V采用微内核的架构,兼顾了安全性和性能的要求。Hyper-V底层的VMM运行在最高的特权级别下,微软将其称为ring -1(而Intel则将其称为root mode),而虚拟机的OS内核和驱动运行在ring 0,应用程序运行在ring 3下,这种架构就不需要采用复杂的BT(二进制特权指令翻译)技术,可以进一步提高安全性。

    由于Hyper-V底层的VMM代码量很小,不包含任何第三方的驱动,非常精简,所以安全性更高。Hyper-V采用基于VMbus的高速内存总线架构,来自虚机的硬件请求(显卡、鼠标、磁盘、网络),可以直接经过VSC,通过VMbus总线发送到根分区的VSP,VSP调用对应的设备驱动,直接访问硬件,中间不需要Hypervisor的帮助。

    这种架构效率很高,不再像以前的Virtual Server,每个硬件请求,都需要经过用户模式、内核模式的多次切换转移。更何况Hyper-V现在可以支持Virtual SMP,Windows Server 2008虚机最多可以支持4个虚拟CPU;而Windows Server 2003最多可以支持2个虚拟CPU。每个虚机最多可以使用64GB内存,而且还可以支持X64操作系统。

    展开全文
  • 微软基于windows server2012的虚拟化技术产品,HYPER-V 是微软的一款虚拟化产品,是微软第一个采用类似 Vmware 和 Citrix 开源 Xen 一样的基于 hypervisor 的技术。这也意味着微软会更加直接地与市场先行者 VMware ...
  • 那本本节就来说一说常见的虚拟化技术! 概述 上节提到,以笔者为例,平时在PC上使用比较多的虚拟化是Vmwear(一个桌面软件,当然偶尔也会使用Virtual Box,后者是一个开源软件功能依旧很强大),这类软件可以在...
  • 浅谈虚拟化技术分类认识

    千次阅读 2019-08-07 23:38:47
        虚拟化技术已经在信息化产业领域产生了深刻的影响,被认为是支持云计算发展炙手可热的关键技术。广义的虚拟化意味着将不存在的事物或现象“虚拟”成为存在的事物或现象的方法;侠义的虚拟化虚拟化技术专指一台...
  • 云计算之服务器虚拟化技术

    千次阅读 2019-06-17 21:32:28
    服务器虚拟化技术 1.历史发展 萌芽期–上世纪60年代 1959年6月,Christopher Strachey在国际信息处理大会上发表了一篇名为《大型高速计算机的 时间共享》的学术报告,第一次提 出了“虚拟化”的概念 1965年8月...
  • 虚拟化技术原理

    千次阅读 2017-07-11 17:22:44
    随着云计算技术的发展及其应用的普及和深入,云平台资源的高效利用成为越来越重要的问题,而服务器虚拟化技术是云计算实现资源有效利用的关键技术。 云计算的云端系统, 其实质上就是一个大型的分布式系统。 虚拟...
  • 1、有的电脑查看自己的虚拟化技术是否开启了,大多数人都是以下这种情况 【情况一】 到任务管理器–>性能–>查看自己的虚拟化是否显示已启用 还有以下这种情况可以查看 【情况二】:在运行窗口输入cmd,或在...
  • 虚拟化技术的分类及介绍

    万次阅读 多人点赞 2019-01-03 19:45:06
    虚拟化技术的分类及介绍   摘要 虚拟化是云计算系统中的一种基础技术,可以说当前一个云计算服务必定是构建在虚拟化的基础上的。本文首先介绍了不同抽象层次的虚拟化技术,之后对应用广泛的系统级虚拟化和操作...
  • 硬件环境:DELL R710 CPU须支持虚拟化技术(可cat /proc/cpuinfo |grep vmx查看), BIOS开启VT全虚拟化功能。。 系统环境:物理机centos5.6 x86_64 ,xen。需安装的虚拟机windows2003 一、物理机准备环境: 1. ...
  • 虚拟化技术概述介绍

    千次阅读 2020-04-11 17:22:01
    虚拟化技术 一、虚拟化技术概述 1.1、什么是虚拟化 虚拟化,是指通过虚拟化技术将一台计算机虚拟为多台逻辑计算机(对计算机物理资源的抽象,实现资源的模拟、隔离和共享)。在一台计算机上同时运行多个逻辑计算机,...
  • 虚拟化技术基础知识全面了解

    千次阅读 2017-04-25 18:11:47
     虚拟化,是指通过虚拟化技术将一台计算机虚拟为多台逻辑计算机(对计算机物理资源的抽象,实现资源的模拟、隔离和共享)。在一台计算机上同时运行多个逻辑计算机,每个逻辑计算机可运行不同的操作系统,并且应用...
  • virtualization technology虚拟化技术可以让一个CPU工作起来就像多个CPU并行运行,从而使得在一部电脑内同时运行多个操作系统,但是很多win10系统用户不知道要怎么开启virtualization technology虚拟化技术,方法很...
  • Docker技术( 容器虚拟化技术 )

    万次阅读 多人点赞 2019-10-18 19:59:21
    Docker虚拟化容器技术 第一章 Docker简介诞生背景Docker 介绍虚拟机技术容器虚拟化技术官方网址第二章 Docker安装前提条件安装DockerDocker底层原理Docker结构图工作原理Docker为什么比VM快第三章 Docker常用命令...
  • 虚拟化技术总结

    千次阅读 2020-11-04 00:28:05
    1 虚拟化的定义 虚拟化是云计算的基础。简单的说,虚拟化使得在一台物理的服务器上可以跑多台虚拟机,虚拟机共享物理机的 CPU、内存、IO 硬件资源,但逻辑上虚拟机之间是相互隔离的。宿主机通过Hypervisor 的程序...
  • 设置BIOS 安装 Ubuntu 时报错: 此主机支持 Intel VT-x,但 Intel VT-x 处于禁用状态 PS: 报错需要设置 BIOS 的情况会有很多, 可以按照报错提示来在网上搜索如何设置 BIOS,这里只是列举其中一种例子。...
  • 五种主流的虚拟化技术

    千次阅读 2019-11-23 20:03:17
    随着虚拟化技术的窜红,打着它的旗号的“衍生品”层出不穷。然而尽管到现在各种虚拟化技术还没能泾渭分明,但随着时间的发展,五种主流的虚拟化技术逐步展露。这五种虚拟化技术分别是:CPU虚拟化、网络虚拟化、...
  • 虚拟化技术发展历史

    千次阅读 2017-10-26 13:27:09
    虚拟化技术发展历史
  • bios开启虚拟化技术

    千次阅读 2019-01-22 11:07:49
    通过securable.exe工具检测是否支持虚拟化技术和虚拟化是否开启。 已开启: 支持,但是未开启: 什么是BIOS: BIOS 是一个内置于个人计算机的程序,当您打开计算机时该程序启动操作系统。也称为系统固件。BIOS 是...
  • 安装和配置 Windows Server 2019 Hyper-V Tech...
  • 虚拟化技术原理(CPU、内存、IO)

    万次阅读 2019-08-27 10:10:52
    云计算现在已经非常成熟了,而虚拟化是构建云计算基础架构不可或缺的关键技术之一。 云计算的云端系统, 其实质上就是一个大型的分布式系统。 虚拟化通过在一个物理平台上虚拟出更多的虚拟平台, 而其中的每一个虚拟...
  • 浅析openstack虚拟化技术

    万次阅读 2017-06-28 22:05:13
    是所有虚拟化技术的核心 。非中断地支持多工作负载迁移的能力是 Hypervisor 的基本功能。当服务器启动并执行 Hypervisor 时,它会给每一台虚拟机分配适量的内存、 CPU 、网络和磁盘,并加载所有虚拟机的客户操作系统...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 126,920
精华内容 50,768
关键字:

windows虚拟化技术