虚拟化技能漫谈

打印 上一主题 下一主题

主题 890|帖子 890|积分 2670

1、概述
          虚拟化技能源于提升盘算机硬件资源使用效率的需求,发展出了Xen、KVM等浩繁硬件虚拟化方式的虚拟机技能、以Docker容器为代表的软件虚拟化技能,虚拟化技能实质上在差别层级上对于盘算机的软硬件资源进行了模拟封装,使得这些资源可按需分配、配置和调度,也为云盘算的发展奠定了结实的底子,甚至可以说没有虚拟化技能的发展就没有云盘算发展。
           “虚拟化”的概念最早于1959年6月提出,牛津大学的盘算机教授克里斯·托弗在国际信息处理大会上发表了一篇名为《大型高速盘算机中的时间共享》的学术报告,文中首次提出了 “虚拟化” 的基本概念,并论述了什么是虚拟化技能。上个世纪60年代,IBM公司最先辈行了虚拟化技能的实践探索,发明白一种操纵系统虚拟机技能,允许用户在一台主机上运行多个操纵系统,让用户尽大概地充实使用昂贵的大型机资源。最初主要运用于大型服务器上,但随着硬件技能突飞猛进的发展,普通PC的性能越来越强,也可用来运行虚拟机,构建云服务平台。
     2、题目提出及解决思绪
           最初发展虚拟机技能具有强烈的目标性,就是要尽大概提升盘算的资源使用率。要探索这个题目,我们先来看看传统的盘算机架构,如下图所示:
  

           这是一个分层布局,处于最底层的是CPU、内存、硬盘、网卡等盘算机主机的硬件设施,在硬件设施之上运行操纵系统,与用户业务相关的应用步伐则运行在操纵系统之上。操纵系统向用户屏蔽了硬件的细节,实现了与用户业务的隔离与解耦,操纵系统与盘算机主机硬件是逐一映射的关系,一个操纵系统独占整个硬件资源。在这种情况下,要提高资源的使用率是存在一个辩证的矛盾关系的:一方面,我们必要在操纵系统中部署尽量多的应用系统才气尽大概多的把硬件用起来;另一方面,在一个操纵系统中不允许运行过多的应用系统,由于应用系统部署的越多,在运行情况存在冲突(如软件库版本、通信端口等)的大概性就越大,管理运维就越复杂,系统就越不稳固。
          导致这一矛盾存在的很大一个缘故原由就是,操纵系统与盘算机主机硬件这种逐一映射关系的存在。试想,盘算机主机硬件上不是只能运行一个操纵系统,而是可以按需运行多个操纵系统即逻辑上运行多个客户机,每个客户机占用多少比例的硬件资源可按需配置,且可动态控制客户机的启停,在客户机中运行相应的应用系统。这样既保证了硬件资源的按需分配,又保证了各应用系统运行情况的互相隔离,制止冲突。其体系布局如下图所示:
  

            例如,大概配置客户机1占用整个主机硬件的10%,配置客户机2占用整个主机硬件的15%,大概是其他比例。然而,盘算机的硬件只是为操纵系统的调用提供了驱动接口,不具备恣意分割的能力,要到达效果该怎么办呢?实在,并不难。只必要到场一个对于硬件的逻辑封装层即可,这就是虚拟机技能的本质。
    3、虚拟机技能
          在虚拟机技能中,这个逻辑封装层被称为VMM(Virtual Machine Monitor, 虚拟机监视器),其逻辑架构如下图所示: 
  

           VMM的主要功能是:
          1)完整模拟底层硬件特性;
          2)管理调度虚拟机,支持配置虚拟机的硬件资源,支持动态的创建、销毁虚拟机。
          3)映射虚拟机的Guest操纵系统中的指令和IO操纵比及现实硬件。
          让运行于虚拟机中的Guest操纵系统无法区分是运行在现实的硬件上照旧VMM封装的这个逻辑层上。
          讲到这里,各人应该很清晰了,只要将VMM的各项功能实现并部署运行,理想就实现了。VMM的实现方式实在并不唯一,正是VMM实现方式的多样性,使得我们能够看到多种多样的虚拟机技能发展,典型包括vmware ESXI、Xen、KVM、Vmware Workstation、Hyper-V等等,虽然虚拟机技能浩繁,但总结起来实在也就典型三类:监控模式类、混淆模式类和主机模式类。下面分别就这三类模式进行解说。
          1)监控模式。VMM直接部署于盘算机裸机之上,不必要在盘算机硬件上单独安装操纵系统。典型的像Vmware ESXI、Xen、Hyper-V等虚拟机技能都是这种模式。其体系架构如下图所示:
  

           2)混淆模式。VMM融于操纵系统之中,通常操纵系统中已经包含了对于底层硬件的基本管理能力,只是缺乏了对VMM功能的支持,混淆模式的思绪就是修改操纵系统,扩充操纵系统的能力,既保留原有操纵系统能力又具备VMM 功能,其典型代表就是KVM虚拟机,通过在Linux内核中增加KVM驱动实现,混淆模式的体系架构如下图所示:
  

           3)主机模式。VMM运行于操纵系统之上,这种模式下VMM不直接与硬件打交道,而是像普通应用步伐一样安装到操纵系统之中,主机模式是最早实现的虚拟机技能之一,其典型代表是Vmware Workstation,我们在windows操纵系统中像安装普通应用软件一样,安装上Vmware Workstation我们便可以创建我们的虚拟机。主机模式的体系布局如下图所示:
  

           正是由于不管VMM咋们实现?怎么部署?它的本质都是要对底层硬件特性模拟,所以我们通常都把各类虚拟机技能归类为硬件虚拟化技能
     4、容器技能
  
          我们可以发现不管什么虚拟机技能,总是要在虚拟机中运行操纵系统,而操纵系统自己就会占用不少资源,于是人们又开始探索有没有更加节约的办法。从某种程度上来说,现实上操纵系统就是划分了应用软件的边界,起到的是运行情况隔离的作用,如果尚有代价更小的隔离方案,那么不运行操纵系统完全是有大概的。幸运的是,人们找到了这种方案,那就是容器技能。
          容器技能是一种全新意义上的虚拟化技能,按分类大概实现方式来说,其属于操纵系统虚拟化的范畴,由操纵系统提供进程级的虚拟化支持。由于应用步伐的运行被隔离在了一个独立的运行情况之中,这个独立的运行情况就好似一个容器,包裹住了应用步伐,这就是容器技能名字的由来。容器虚拟化体系布局如下图所示:
  

           容器打包了应用步伐全部的运行情况,通过容器引擎构建独立的运行空间,保证互不干扰,容器的运行和操纵系统共用资源,这也束缚了容器中运行的步伐必须是兼容操纵系统的,目前容器技能都是基于Linux的,所以运行于容器中的应用也必要是Linux的。
          容器虚拟化的方案中,在容器引擎中并没有去模拟硬件特性,而是使用操纵系统的软件特性去实现容器间的隔离和调度,所以这类虚拟化我们将其归类为软件虚拟化技能。
    5、小结 
  
          关于硬件虚拟化技能和软件虚拟化技能各自的优劣本文不作论述,感兴趣的可以进一步研究。本文的观点是,这两类虚拟化技能不是替代关系,两者的应用场景也有一定差异,是互为增补的关系,比如,一个云平台的构建完全可以接纳在物理主机上部署虚拟机,而在虚拟机中使用容器部署运行应用系统的方式来构建集群。
          最后,用一个生存中的例子来类比我们的虚拟化技能,我们的盘算机硬件就好比一栋毛坯房,在虚拟化技能出现之前,这一栋就是一个单元,应用步伐都可以住进去,住进去的人越多使用率就越高,然而人越多生存上互相干扰就越多无法正常生存。虚拟机技能出现后,支持人们按需隔断成多套房(虚拟机),供家庭(操纵系统) 去居住,保证各个家庭互不干扰的生存;容器技能的出现,是为了进一步提升使用率,将这栋楼改造为一个酒店,直接隔断为一个个房间(容器),应用步伐按需部署到各个房间中去。         
          

免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!更多信息从访问主页:qidao123.com:ToB企服之家,中国第一个企服评测及商务社交产业平台。
回复

使用道具 举报

0 个回复

倒序浏览

快速回复

您需要登录后才可以回帖 登录 or 立即注册

本版积分规则

干翻全岛蛙蛙

金牌会员
这个人很懒什么都没写!
快速回复 返回顶部 返回列表