虚拟化技术详解

虚拟化使用软件的方法从新定义划分IT资源,能够实现IT资源的动态分配、灵活调度、跨域共享,提升IT资源利用率,使IT资源可以真正成为社会基础设施,服务于各行各业中灵活多变的应用需求。java

虚拟化,你造吗?

1、什么是虚拟化?linux

虚拟化,是指经过虚拟化技术将一台计算机虚拟为多台逻辑计算机。在一台计算机上同时运行多个逻辑计算机,每一个逻辑计算机可运行不一样的操做系统,而且应用程序均可以在相互独立的空间内运行而互不影响,从而显著提升计算机的工做效率。ubuntu

虚拟化使用软件的方法从新定义划分IT资源,能够实现IT资源的动态分配、灵活调度、跨域共享,提升IT资源利用率,使IT资源可以真正成为社会基础设施,服务于各行各业中灵活多变的应用需求。跨域

2、Hypervisor是什么?安全

Hypervisor一种运行在基础物理服务器和操做系统之间的中间软件层,可容许多个操做系统和应用共享硬件。也可叫作VMM( virtual machine monitor ),即虚拟机监视器。服务器

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

3、虚拟化有哪些分类?架构

1. 彻底虚拟化oracle

最流行的虚拟化方法,使用Hypervisor这种中间层软件,在虚拟服务器和底层硬件之间创建一个抽象层。性能

Hypervisor能够捕获CPU指令,为指令访问硬件控制器和外设充当中介。于是,彻底虚拟化技术几乎能让任何一款操做系统不用改动就能安装到虚拟服务器上,而它们不知道本身运行在虚拟化环境下。主要缺点是,性能方面不如裸机,由于Hypervisor须要占用一些资源,给处理器带来开销。

在彻底虚拟化的环境下,Hypervisor运行在裸硬件上,充当主机操做系统,而由Hypervisor管理的虚拟服务器运行客户端操做系统(Guest OS)。

彻底虚拟化

2. 准虚拟化

彻底虚拟化是处理器密集型技术,由于它要求Hypervisor管理各个虚拟服务器,并让它们彼此独立。减轻这种负担的一种方法就是,改动客户操做系统,让它觉得本身运行在虚拟环境下,可以与Hypervisor协同工做,这种方法就叫准虚拟化。

准虚拟化技术的优势是性能高。通过准虚拟化处理的服务器可与Hypervisor协同工做,其响应能力几乎不亚于未通过虚拟化处理的服务器。它的客户操做系统(Guest OS)集成了虚拟化方面的代码。该方法无需从新编译或引发陷阱,由于操做系统自身可以与虚拟进程进行很好的协做。

准虚拟化

3. 操做系统层虚拟化

实现虚拟化还有一个方法,那就是在操做系统层面增添虚拟服务器功能。就操做系统层的虚拟化而言,没有独立的Hypervisor层。相反主机操做系统自己就负责在多个虚拟服务器之间分配硬件资源,而且让这些服务器彼此独立。一个明显的区别是,若是使用操做系统层虚拟化,全部虚拟服务器必须运行同一操做系统。

虽然操做系统层虚拟化的灵活性比较差,但本机速度性能比较高。此外,因为架构在全部虚拟服务器上使用单1、标准的操做系统,管理起来比异构环境要容易。

4. 桌面虚拟

服务器虚拟化主要针对服务器而言,而虚拟化最接近用户的仍是要算的上桌面虚拟化了,桌面虚拟化主要功能是将分散的桌面环境集中保存并管理起来,包括桌面环境的集中下发,集中更新,集中管理。桌面虚拟化使得桌面管理变得简单,不用每台终端单独进行维护,每台终端进行更新。终端数据能够集中存储在中心机房里,安全性相对传统桌面应用要高不少。桌面虚拟化可使得一我的拥有多个桌面环境,也能够把一个桌面环境供多人使用,节省了license。另外,桌面虚拟化依托于服务器虚拟化。没有服务器虚拟化,这个桌面虚拟化的优点将彻底没有了。不只如此,还浪费了许多管理资本。

5. 硬件虚拟化

英特尔虚拟化技术(IVT,Intel Virtualization Technology)是由英特尔开发的一种虚拟化技术,利用IVT能够对在系统上的客操做系统,经过虚拟机查看器(VMM,Virtual Machine Monitor)来虚拟一套硬件设备,以供客操做系统使用。这些技术以往在VMware与Virtual PC上都经过软件实现,而经过IVT的硬件支持能够加速此类软件的进行。

AMD虚拟化(AMD Virtualization),缩写为“AMD-V”,是AMD为64位的x86架构提供的虚拟化扩展的名称,但有时仍然会用“Pacifica”(AMD开发这项扩展时的内部项目代码)来指代它。

4、有哪些虚拟化技术?

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

Xen和KVM,是开源免费的虚拟化软件;WMware是付费的虚拟化软件;Hyper-V微软的收费虚拟化技术;Docker是一种容器技术,属于一种轻量级虚拟化技术。

虚拟化软件产品有不少,不管是开源仍是商业的,上面只是列举了不多的几款,每款软件产品有其优缺点以及应用场景,须要根据业务场景选择,下面简单介绍一下KVM和Xen。

1. KVM(Kernel-based Virtual Machine)基于内核的虚拟

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

KVM(Kernel-based Virtual Machine)基于内核的虚拟

2. Xen

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

Xen最重要的优点在于准虚拟化,此外未经修改的操做系统也能够直接在Xen上运行(如Windows),能让虚拟机有效运行而不须要仿真,所以虚拟机能感知到Hypervisor,而不须要模拟虚拟硬件,从而能实现高性能。

Xen

5、仍是不明白吗?

讲了那么多,你可能有点晕,由于概念比较接近,容易混淆。下面重点解释一下几个关键概念。

1. 虚拟化类型

虚拟化类型,好比彻底虚拟化、准虚拟化等指的是设计层面的实现虚拟化的方案和思想,而不涉及具体的虚拟化技术。

2. 虚拟化技术

虚拟化技术指的是软件层面的实现虚拟化的技术,总体上分为开源虚拟化和商业虚拟化两大阵营。部分商业虚拟化的技术也是在开源技术的基础之上发展而来的。

3. 虚拟机软件

基于虚拟化技术的单机版虚拟机管理软件,如:

  • KVM: Linux的虚拟机基于KVM虚拟技术的单机版虚拟机管理软件。
  • VirtualBox:oracle公司的直接基于Intel VT及AMD-V的虚拟机管理软件。
  • VMware Workstation:Wmware公司的基于Wmware虚拟技术的虚拟机管理软件。

4. 云计算

云计算中的虚拟化指的是IaaS层虚拟化解决方案,而不是虚拟机技术。IaaS层虚拟化解决方案,要符合IaaS层的基础特色,除了最基础的虚拟化软件以外,还包括,共享存储服务,镜像服务,身份认证服务,统一监控服务,以及收费管理等其余配套的服务。固然,既然是IaaS服务,必须支持对外API接口开放,支持定制开发。通常来讲不是一个软件,而是一组软件组成的整理解决方案。

VMware vSphere是基于VMware虚拟化技术的虚拟化管理软件,目前在行业内来讲算是最成熟,生产环境应用度最广的IaaS层虚拟化技术的解决方案。目前对整个集群的虚拟机监控管理也是最好的。(vSphere自己收费,并且监控软件还须要单独收费)。

Openstack是基于linux的IaaS层解决方案(支持多种虚拟化技术,好比KVM),是目前用户最多,影响最大的开源解决方案,获得了HP,IBM等知名厂商的大力支持,国内的虚拟化解决方案也大部分是基于Openstack开发定制。主要运行在cent os和ubuntu server操做系统上。

CloudStack是使用 java开发的基于linux的IaaS层解决方案(支持多种虚拟化技术,好比KVM),目前发展潜力很是不错,也获得了不少知名厂商的承认,不过相对起步比较晚,在国内的推广度也不如Openstack。

对比一下Openstack与VMware Workstation,咱们能够看出云计算与虚拟机软件之间的不一样。

Openstack与VMware Workstation

5. Docker等Container技术

Q1:Container技术和服务器虚拟化是同样的技术吗?

A:不是。二者虽然都属于虚拟化的技术,目标都是为了将一套应用程序所需的执行环境打包起来,创建一个孤立环境,方便在不一样的硬件中移动,但二者的运做思惟大相径庭。简单来讲,常见的传统虚拟化技术如vSphere或Hyper-V是以操做系统为中心,而Container技术则是一种以应用程序为中心的虚拟化技术。

传统虚拟化技术从操做系统层下手,目标是创建一个能够用来执行整套操做系统的沙盒独立执行环境,习惯以虚拟机(Virtual Machine)来称呼。而Container技术则是直接将一个应用程序所需的相关程序代码、函式库、环境配置文件都打包起来创建沙盒执行环境,为了和传统虚拟化技术产生的虚拟机区分,Container技术产生的环境就称为Container。

Q2:通常常见的虚拟机和Container有何不一样?

A:最明显的差异是,虚拟机须要安装操做系统(安装Guest OS)才能执行应用程序,而Container内不须要安装操做系统就能执行应用程序。Container技术不是在OS外来创建虚拟环境,而是在OS内的核心系统层来打造虚拟执行环境,透过共享Host OS的做法,取代一个一个Guest OS的功用。Container也所以被称为是OS层的虚拟化技术。

Q3:为什么Container是轻量级虚拟化技术?

A:由于Container技术采起共享Host OS的做法,而不需在每个Container内执行Guest OS,所以创建Container不须要等待操做系统开机时间,不用1分钟或几秒钟就能够启用,远比须要数分钟甚至数十分钟才能开启的传统虚拟机来的快。

Q4:Container技术是全新的技术吗?

A:不是,早在1982年,Unix系统内建的chroot机制也是一种Container技术。其余如1998年的FreeBSD jails、2005年出现的Solaris Zones和OpenVZ,或像是Windows系统2004年就有的Sandboxie机制都属于在操做系统内创建孤立虚拟执行环境的做法,均可称为是Container的技术。

直到2013年,dotCloud这家PaaS服务公司开源释出了一套将Container标准化的平台Docker,大受欢迎,因此,dotCloud决定以Docker为名成立新公司力推。

相关文章
相关标签/搜索