虚拟化技术漫谈

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、小结 

        关于硬件虚拟化技术和软件虚拟化技术各自的优劣本文不作阐述,感兴趣的可以进一步研究。本文的观点是,这两类虚拟化技术不是替代关系,两者的应用场景也有一定差异,是互为补充的关系,比如,一个云平台的构建完全可以采用在物理主机上部署虚拟机,而在虚拟机中利用容器部署运行应用系统的方式来构建集群。

        最后,用一个生活中的例子来类比我们的虚拟化技术,我们的计算机硬件就好比一栋毛坯房,在虚拟化技术出现之前,这一栋就是一个单位,应用程序都可以住进去,住进去的人越多利用率就越高,然而人越多生活上互相干扰就越多无法正常生活。虚拟机技术出现后,支持人们按需隔断成多套房(虚拟机),供家庭(操作系统) 去居住,保证各个家庭互不干扰的生活;容器技术的出现,是为了进一步提升利用率,将这栋楼改造为一个酒店,直接隔断为一个个房间(容器),应用程序按需部署到各个房间中去。         

        

  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 1
    评论
Java安全漫谈是一本关于Java安全的书籍,深入探讨了Java应用程序在网络环境中的安全性和相关的安全漏洞。该书内容涵盖了Java安全基础、Java虚拟机的安全机制、Java安全管理、Java安全开发等方面的知识。 首先,Java安全基础部分介绍了Java安全模型的原理和特点,包括Java类库的安全特性、权限管理和访问控制、安全策略配置等。这部分内容可帮助开发人员了解Java应用程序的安全需求,并提供相应的解决方案。 其次,Java虚拟机的安全机制是Java应用程序的基石。该书介绍了Java虚拟机的安全沙箱和类加载机制,并讨论了如何利用这些安全机制避免恶意代码的执行和隐患的防范。 此外,Java安全管理部分从用户角度出发,介绍了Java应用程序的安全管理工具和技术,如Java安全策略文件、权限管理和安全认证等。开发人员可以通过合理配置和使用这些工具来提高Java应用程序的安全性。 最后,该书还涉及了Java安全开发过程中的一些最佳实践和常见安全漏洞,如输入验证、跨站脚本攻击(XSS)、SQL注入、跨站请求伪造(CSRF)等。通过学习和掌握这些知识,开发人员可以编写出更加安全的Java应用程序。 总而言之,Java安全漫谈是一本全面讨论Java安全的书籍,内容涵盖了Java安全基础、Java虚拟机的安全机制、Java安全管理和Java安全开发等方面的知识。它对于开发人员和安全从业人员来说,都是一本重要的参考书,有助于提高Java应用程序的安全性。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

saint198

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值