虚拟化概述

来自CloudWiki
跳转至: 导航搜索

生活中的虚拟化

出租房屋(群租)

O2-1.jpg

出租办公场所(众创空间)

O2-2.jpg

什么是虚拟化

维基百科中虚拟化的描述:

“在计算机技术中,虚拟化(Virtualization)是将计算机物理资源如服务器、网络、内存及存储等予以抽象、转换后呈现出来,使用户可以以比原本的组态更好的方式来应用这些资源。这些资源的新虚拟部分是不受现有资源的架设方式、地域或物理组态所限制的”。

  • 管理物理计算资源
  • 以更好的方式呈现
  • 使用更加灵活

虚拟化的发展历史

一开始IBM公司做虚拟化,后来是VMWARE公司进行了虚拟化的普及。(vmware vsphere企业级虚拟化产品,认证)

IBM

为使昂贵的硬件资源得到充分利用,IBM最早发明了一种操作系统虚拟机技术,能够让用户在一台主机上运行多个操作系统,IBM 7044和Model 67计算机就是典型的代表。

Model 67 通过 VMM(Virtual Machine Monitor)对所有的硬件接口都进行了虚拟化。在早期计算中,操作系统被称为 supervisor。能够在其他操作系统上运行的操作系统被称为 hypervisor(这个术语是在 20 世纪70 年代出现的)。

VMM 可以直接在底层硬件上运行,允许运行多个虚拟机(VM)。每个 VM 都可以运行一个自己私有操作系统的实例 —— 在早些时候,这称为 CMS(或 Conversational Monitor System)。之后 VM 继续发展,现在您可以在 System z9™ 大型机上发现 VM。这提供了很好的向后兼容性,甚至是对 System/360 产品线的兼容性。

O1-24.png

VMware

从20世纪90年代末开始,x86计算机由于其成本低廉渐渐代替大型机,为了抢占市场的份额,VMware就在考虑如何节省客户的开支,来提高自己产品的竞争力。这时就有了虚拟化技术的再次发展。以VMware为代表的虚拟化软件产商率先实施了以虚拟机监视器为中心的软件解决方案,为虚拟化技术在x86计算机环境的发展开辟了道路。

O1-25.png

微软Hyper-V

Hyper-V是微软的一款虚拟化产品,是微软第一个采用类似Vmware和Citrix开源Xen一样的基于hypervisor的技术。这也意味着微软会更加直接地与市场先行者VMware展开竞争,但竞争的方式会有所不同。

Linux KVM

Kernel-based Virtual Machine的简称,是一个开源的系统虚拟化模块,自Linux 2.6.20之后集成在Linux的各个主要发行版本中。它使用Linux自身的调度器进行管理,所以相对于Xen,其核心源码很少。KVM目前已成为学术界的主流VMM之一。

KVM的虚拟化需要硬件支持(如Intel VT技术或者AMD V技术)。是基于硬件的完全虚拟化。

虚拟化的优势

课堂总结:

  • 提高利用率
  • 降低成本
  • 减少热量
  • 系统更稳定
  • 支持异构系统的整合
  • 快速迁移和备份
  • 快速投入生产

参考文档: http://blog.sina.com.cn/s/blog_5dd82f370102wvu8.html

可以提高资源利用率

传统的IT企业为每一项业务分配一台单独的服务器,服务器的实际处理能力往往远超服务器的平均负载,使得服务器大部分时间都处于空闲状态,造成资源的浪费;而虚拟化技术可以减少必须进行管理的物理资源的数量,隐藏了物理资源的部分复杂性。为了达到资源的最大利用率,虚拟化还把一组硬件资源虚拟化为多组硬件资源,并动态地调整空闲资源,减小服务器的规模。

例如,VMware的用户在使用VMware的虚拟基础架构解决方案之后服务器的利用率通常可由原先的5%~15%提升到60%~80%

O1-26.png

提供相互隔离、高效的应用执行环境

虚拟化技术能够实现较简单的共享机制无法实现的隔离和划分,从而对数据和服务进行可控和安全的访问。

例如,用户可以在一台计算机上模拟多个不同、相互之间独立的操作系统,这些虚拟的操作系统可以是Windows或Linux系统。其中的一个或多个子系统遭受攻击而崩溃时,不会对其他系统造成影响。在使用备份机制后,受到攻击的子系统可以快速恢复。

O1-27.png

可以简化资源和资源的管理

计算机有硬盘、磁盘等硬件资源和Web服务等软件资源。用户对计算机资源进行访问是通过标准接口来进行的。

使用标准接口的好处是用户不用知道虚拟资源的具体实现。底层的基础设施发生变化时,只要标准接口没有发生变化,用户基本上感受不到这种变化。这是因为,与用户直接接触的是标准接口,虽然底层的具体实现发生改变,但是用户与虚拟资源进行交互的方式并没有改变。

O1-28.png

虚拟化分类

计算、网络、存储

计算(CPU),网络(网络的带宽、通道) 存储(内部存储:内存;外部存储:硬盘)

计算虚拟化

计算虚拟化(Intel VT-X,AMD,AMD-V)

所谓的计算虚拟化,就是把同一个物理CPU,虚拟成一个或多个CPU

O2-3.jpg

CPU虚拟化技术是把物理CPU抽象成虚拟CPU,任意时刻一个物理CPU只能运行一个虚拟CPU指令。每个客户操作系统可以使用一个或多个虚拟CPU。在这些客户操作系统之间,虚拟CPU的运行相互隔离,互不影响。

原来的x86 CPU 不能有效地支持虚拟化,那时,CPU虚拟化只能在软件层面上进行。随着硬件技术的发展,硬件的性能有了很大的提高,现在主流的x86 CPU开始在硬件层面上支持CPU虚拟化,从而就有了CPU的硬件辅助虚拟化。

CPU的硬件辅助虚拟化是在CPU中加入新的指令集和处理器运行模式来支持CPU虚拟化,使得系统软件能更加容易、高效地实现虚拟化功能。

CPU的硬件辅助虚拟化主要有Intel VT-x和AMD。

以VT-x为例,VT-x的原理是:首先,其引入了根(VMX root operation)和非根(VMX non-root operation)两种操作模式,这两种模式统称为VMX操作模式。

根操作模式是VMM运行所处的模式,其行为和早期的没有VT-x技术的x86 CPU相同。
非根操作模式是客户机运行时所处的模式,提供了一个支撑虚拟机运行所需的CPU环境。

网络虚拟化

网络虚拟化(VT-d,SDN)

网络虚拟化是一种重要的网络技术,该技术可在物理网络上虚拟多个相互隔离的虚拟网络,从而使得不同用户之间使用独立的网络资源切片,从而提高网络资源利用率,实现弹性的网络。SDN的出现使得网络虚拟化的实现更加灵活和高效,同时网络虚拟化也成为SDN应用中的重量级应用。

由于早期成功的的SDN方案中网络虚拟化案例较多,有的读者可能会认为SDN和网络虚拟化是同一个层面的,然而这是一个错误的说法。SDN不是网络虚拟化,网络虚拟化也不是SDN。SDN是一种集中控制的网络架构,可将网络划分为数据层面和控制层面。而网络虚拟化是一种网络技术,可以在物理拓扑上创建虚拟网络。传统的网络虚拟化部署需要手动逐跳部署,其效率低下,人力成本很高。而在数据中心等场景中,为实现快速部署和动态调整,必须使用自动化的业务部署。SDN的出现给网络虚拟化业务部署提供了新的解决方案。通过集中控制的方式,网络管理员可以通过控制器的API来编写程序,从而实现自动化的业务部署,大大缩短业务部署周期,同时也实现随需动态调整。

O1-111.jpg

参考文档: https://www.sdnlab.com/15475.html

I/O虚拟化

运用VT-d技术,虚拟机得以使用直接I/O设备分配方式或者I/O设备共享方式来代替传统的设备模拟/额外设备接口方式,从而大大提升了虚拟化的I/O性能。

现在的I/O设备虚拟化主要是采用模拟方式或者软件接口方式,因此性能上很容易成为瓶颈——毕竟传统的机器上,I/O设备都很容易成为瓶颈,因 此Intel就适时提出了Intel Virtualization Technology for Directed I/O,简称为Intel VT-d。

O1-110.jpeg

左边是传统的I/O模拟虚拟化,右边是直接I/O设备分配

  • 模拟I/O设备:VMM对客户机摸拟一个I/O设 备,通过完全模拟设备的功能,客户机可以使用对应真实的驱动程序,这个方式可以提供完美的兼容性(而不管这个设备事实上存不存在),但是显然这种模拟会影 响到性能。作为例子,各种虚拟机在使用软盘映像提供虚拟软驱的时候,就运行在这样的方式,以及Virtual PC的模拟的真实的S3 Virge 3D显卡,VMware系列模拟的Sound Blaster 16声卡,都属于这种方式。
  • 直接I/O设备分配:虚拟机直接分配物理I/O设 备给虚拟机,这个模型下,虚拟机内部的驱动程序直接和硬件设备直接通信,只需要经过少量,或者不经过VMM的管理。为了系统的健壮性,需要硬件的虚拟化支 持,以隔离和保护硬件资源只给指定的虚拟机使用,硬件同时还需要具备多个I/O容器分区来同时为多个虚拟机服务,这个模型几乎完全消除了在VMM中运行驱 动程序的需求。例如CPU,虽然CPU不算是通常意义的I/O设备——不过它确实就是通过这种方式分配给虚拟机,当然CPU的资源还处在VMM的管理之 下。

I/O设备共享:这个模型是I/O分配模型的一个扩展,对硬件具有很高的要求,需要设备支持多个功能接口,每个接口可以单独分配给一个虚拟机,这个模型无疑可以提供非常高的虚拟化性能表现。

运用VT-d技术,虚拟机得以使用直接I/O设备分配方式或者I/O设备共享方式来代替传统的设备模拟/额外设备接口方式,从而大大提升了虚拟化的I/O性能。

参考文档:http://virtual.51cto.com/art/201102/245920.htm

存储虚拟化

存储虚拟化(LVM,RAID,iscsi,IOMMU)

存储虚拟化使得一个环境中的物理存储可在多个应用服务器间共享,虚拟层后的超大容量的物理设备对其加以管理。存储虚拟化将所有存储设备综合在一个设备中进行使用,从而隐藏了一个组织内有多个独立存储设备的事实,也隐藏了寻找数据存储位置、获取数据、向用户提供数据的复杂过程。

通常情况下,存储虚拟化适用于大型的存储区域网(SAN)阵列,但也非常适合于本地桌面硬盘驱动器上的逻辑分区和独立冗余磁盘阵列(RAID)。长期以来,大型企业已经从SAN技术中获益,在SAN中,存储与服务器解耦,直接连接到网络上。通过在网络上共享存储,SAN可以实现可伸缩且灵活的存储资源分配、支持高效的备份解决方案、实现更高的存储利用率。

应用目标的虚拟化

应用目标的虚拟化:服务器虚拟化、桌面虚拟化、应用虚拟化

  • 什么是服务器虚拟化?

服务器虚拟化是将服务器物理资源抽象成逻辑资源,让一台服务器变成几台甚至上百台相互隔离的虚拟服务器,我们不再受限于物理上的界限,而是让CPU、内存、磁盘、I/O等硬件变成可以动态管理的“资源池”,从而提高资源的利用率,简化系统管理,实现服务器整合,让IT对业务的变化更具适应力。

小编告诉大家,VMWare vSphere是目前使用最为广泛的服务器虚拟化技术。

  • 什么是桌面虚拟化?

官方解释是这么说的,将计算机的终端系统(也称作桌面)进行虚拟化,以达到桌面使用的安全性和灵活性。可以通过任何设备,在任何地点,任何时间通过网络访问属于我们个人的桌面系统。

小编通俗地讲一下,你可以看这个桌面是从哪里提供的,如果我们把电脑自带的操作系统所生成的桌面理解为物理桌面的话,那么虚拟桌面就是非本地操作系统提供的桌面,这个操作系统在哪?不在你的电脑上,而是在后台的数据中心里,推送给最终用户的。关于桌面虚拟化,小编首推Citrix的XenDesktop。


  • 什么是应用程序虚拟化?

官方解释是这么说的,应用程序虚拟化是将应用程序与操作系统解耦合,为应用程序提供了一个虚拟的运行环境。在这个环境中,不仅包括应用程序的可执行文件,还包括它所需要的运行时环境。从本质上说,应用虚拟化是把应用对低层的系统和硬件的依赖抽象出来,可以解决版本不兼容的问题。

小编也BalaBala几句,和桌面虚拟化技术一样,应用程序不是存在本地电脑上,也是在后台的数据中心里,只是桌面虚拟化推送的是整个桌面,而应用程序虚拟化推送的是某个应用程序,用户只能看到应用程序。

参考文档:https://www.easthome.com/front/teacherReportInfo/reportInfo/detial?tid=442

云计算与虚拟化的关系

云计算与虚拟化的关系——云计算的五个特征依赖虚拟化

按需自助服务

降低成本的核心秘诀就是四个字——『按需付费』。

O1-9.jpg

按需自助服务依赖虚拟化,虚拟化技术将服务器资源以更细的粒度整合好了之后,实现了计算资源的虚拟化、存储资源的虚拟化、网络资源的虚拟化,就能实现客户需要多少资源就调用多少资源,实现按需自助。

O1-43.png

参考文档:http://cloud.51cto.com/art/201601/503441.htm

自动化网络

网络自动化是指一个网络中的物理和虚拟设备的自动配置、管理、测试、部署和操作的过程。网络虚拟化之后,不仅有原先的物理网络,更有虚拟机和虚拟机之间的网络,虚拟的网桥和交换机,这样一来,更加便于实现自动化网络。

O1-10.jpg


参考文档:http://www.elecfans.com/tongxin/20180809725367.html

资源池化

O1-2.jpg

资源池化是个很时髦的名词,它也是由云计算引申出来的概念。在云计算中,计算资源--CPU、存储、网络等等--有了新的组织结构,也就是资源池。所有设备的运算能力都被放到一个池内,再进行统一分配。

资源池化的概念也依赖于虚拟化,正是虚拟化技术将服务器资源以更细的粒度整理好了之后,计算资源、存储资源、网络资源分别形成了一个个的资源池,使得用户不再关心计算资源的物理位置和存在形式,IT部门也得以更加灵活地对资源进行配置。

参考文档:http://book.51cto.com/art/201303/384831.htm

快速伸缩

O1-44.png

虚拟化技术将服务器资源以更细的粒度整理好了之后,计算资源、存储资源、网络资源分别形成了一个个的资源池,客户需要资源时就从资源池里拿资源,不需要时就把资源放回去,实现了云计算资源的快速伸缩。

可计量

(celometer )

O1-11.jpg

云计算的可计量有两重含义。首先云计算服务商必须能够对自己提供的服务有精确的计量,产生业务收入。另外一方面就是使用云计算的客户,知道自己在使用何种资源,以及如何产生的服务费用。

可计量也依赖于虚拟化,正是虚拟化技术将服务器资源以更细的粒度整理好了之后,计算资源、存储资源、网络资源分别以更细的粒度出现,可计量才变为一种现实。

参考文档:http://blog.sina.com.cn/s/blog_55a7f67301010jfl.html

虚拟化技术应用

现在市场上主流的虚拟化技术: IBM虚拟化(PowerVM),Vmware,Hyper-V(微软),XenServer(思杰桌面协议),KVM(Redhat),OracleVM(开源,跨平台的虚拟化软件)

OrachleVM:唯一的一个既开源又跨平台的软件,华三模拟器等用的都是它。

Vmvare

XenServer(思杰桌面协议)

https://www.citrix.com.cn/products/xenapp-xendesktop/?utm_campaign=WWWB0613CXDTRDIYDR&utm_medium=Paid+Search+(SEM)&utm_source=sem-wss-xd-apcn-sc-sea-ba&utm_term=%E6%80%9D%E6%9D%B0%E8%99%9A%E6%8B%9F%E5%8C%96&utm_content=Do%7CWSS%7CXA%7CNone%7CBaidu%7CSearch%7CGeneric%7CSC%7CAPCN&ctm_programid=wwwb0613cxdtrdiydr

KVM

https://blog.csdn.net/cheng1804/article/details/82153362

学习小任务

安装和使用一款虚拟化软件(Vmware,OracleVM,KVM)

假设你租用一所住房,三室一厅,120平,可划分为多少床位对外出租 ?

假设你租用一台服务器,16核 160内存,可用来制作多少台虚拟机 对外出售才能盈利 ?