虚拟化技术介绍

虚拟化技术介绍,第1张

虚拟化(Virtualization)技术最早出现在20世纪60年代的IBM大型机系统,在70年代的System 370系列中逐渐流行起来。这些机器通过一种叫虚拟机监控器(Virtual Machine Monitor,VMM)的程序在物理硬件之上生成许多可以运行独立操作系统软件的虚拟机(Virtual Machine)实例。

随着近年计算机技术的进步,无论是服务器市场、桌面市场,还是嵌入式市场,处理器的频率和核心数目都出现了巨大的进步,从而带来了处理能力的迅速增长,使得虚拟化技术再次迅速发展起来,并从最初的的 裸机虚拟化 技术开始,演化出 主机虚拟化 混合虚拟化 等更复杂的虚拟化模型,并在此基础山发展出了当下最热门的 云虚拟化 技术,极大地降低了IT成本,增强了系统的安全性,可靠性和扩展性。

在计算机领域,虚拟化是一个广义的概念。简而言之,虚拟化是指对计算机资源的抽象。虚拟机最初被Popek和Goldberg定义为物理机器的一个或多个隔离的有效复制[16]。J.E. Smith和RaviNair给出了一个更具体化的定义:虚拟机是通过在物理平台上添加的软件给出的一个或多个不同的平台。一个虚拟机可以有一个操作系统和指令集,或者两者都有,可以不同于底下的真实的硬件。

虚拟化技术的本质在于对计算机系统软硬件资源的划分和抽象。计算机系统的高度复杂性是通过各种层次的抽象来控制,每一层都通过层与层之间的接口对底层进行抽象,隐藏底层具体实现而向上层提供较简单的接口。

计算机系统包括五个抽象层:硬件抽象层,指令集架构层,操作系统层,库函数层和应用程序层。相应地,虚拟化可以在每个抽象层来实现。无论是在哪个抽象层实现,其本质都是一样的,那就是它使用某些手段来管理分配底层资源,并将底层资源反映给上层。操作系统上传统的进程模型就利用了虚拟化的思想,操作系统通过对物理内存的划分和抽象,给每个进程呈现出远超出物理内存空间的4G空间,并且使得每个进程实现了有效的隔离,从而一个进程的崩溃不会影响到其它进程的正常运行。

虚拟化平台是操作系统层虚拟化的实现。在系统虚拟化中,虚拟机(VM)是在一个硬件平台上模拟一个或者多个独立的和实际底层硬件相同的执行环境。每个虚拟的执行环境里面可以运行不同的操作系统,即客户机操作系统(Guest OS)。Guest OS通过虚拟机监控器提供的抽象层来实现对物理资源的访问和操作。目前存在各种各样的虚拟机,但基本上所有虚拟机都基于"计算机硬件 + 虚拟机监视器(VMM)+ 客户机操作系统(Guest OS)"的模型。

虚拟机监控器是计算机硬件和Guest OS之间的一个抽象层,它运行在最高特权级,负责将底层硬件资源加以抽象,提供给上层运行的多个虚拟机使用,并且为上层的虚拟机提供多个隔离的执行环境,使得每个虚拟机都以为自己在独占整个计算机资源。虚拟机监控器可以将运行在不同物理机器上的操作系统和应用程序合并到同一台物理机器上运行,减少了管理成本和能源损耗,并且便于系统的迁移。

根据虚拟机监视器在虚拟化平台中的位置,可以将其分为以下3种模型:

虚拟机监视器采用的虚拟化技术分为以下4种:

嵌入式系统是虚拟化技术的新方向和重要分支。

嵌入式处理器的迅速发展使得嵌入式系统在更多方面得到了广泛的应用。而嵌入式设备应用的普及导致其对软硬件的需求也越来越高。硬件体现在不断增强的计算能力和多种多样的外部设备,软件体现在愈加复杂的新功能特性。这些问题导致嵌入式开发变得复杂和软件维护成本的增加。原来的SMP和AMP等多核操作系统方案无法满足安全隔离、硬件资源分配和复用等日益复杂的要求。因此,服务器和桌面系统上的虚拟化技术被引入了嵌入式操作系统领域,并借助于硬件辅助虚拟化技术,解决了虚拟化技术带来的便利性与嵌入式系统得实时性要求之间的矛盾,使得以Linux KVM、Xen等嵌入式虚拟化平台得到了迅速发展。

虚拟化平台在硬件和操作系统之间引入了一个新的抽象层次,称为虚拟机监控器(Virtual Machine Monitor,简称VMM),由它接管所有的硬件,并管理运行其上的所有虚拟机(Virtual Machine,简称VM),而每个虚拟机中可以运行各自的操作系统。

虚拟化的优点在于实现了资源的重用,使得一个物理平台上面可以同时运行多个不同的操作系统。通过利用系统虚拟化技术,可以在嵌入式设备中同时运行实时操作系统和通用操作系统,分别发挥各自的优势——实时操作系统处理实时任务,通用操作系统提供丰富的应用程序,它们彼此分工协作,发挥各自的优势,同时满足各种不同的需求。

但与此同时,虚拟化平台技术也引入了新问题。不少嵌入式系统对实时性能都有比较高的要求,而虚拟机与虚拟机监控器间的切换导致处理器操作模式的切换和上下文的切换,会增加系统的响应时间,从而增加实时系统的时间不确定性,影响了实时系统的性能。虚拟机对运行于其上的应用程序的隔离又增加了虚拟机监控器的精确调度的难度,目前的虚拟机监控器也只能基于虚拟机的优先级或者时间片分配而进行粗粒度的调度。此外,现存的虚拟化平台技术主要基于X86等通用计算机平台,对ARM、MIPS等嵌入式处理器支持不够,在功能性和稳定性上都有所缺失。

综上所述,虚拟化可以解决嵌入式系统目前面临的不少问题,带来很多方便,但由于现存虚拟化解决方案(如KVM和XEN)在设计之初并没有考虑嵌入式系统的特殊需求,从导致功能性、实时性、稳定性都有所缺失。

服务器虚拟化最常见的有KVM-QEMU(OpenStack就用这个最多),有VMWare的ESX,还有Citrix的Xen,微软的Hyper-V等,现在还流行用Docker,轻量化容器技术。【感兴趣的话点击此处,免费了解一下】

“云计算是下一代计算的基础之一。 它是一个 ‘网络即所有计算的平台’ 的世界,其中我们现在视为计算机的一切东西都只是一个连接到我们所构建的大型计算机的设备。云计算是一种思考我们将来如何提供计算服务的奇妙方法。”

云服务器的业内名称其实叫做计算单元。所谓计算单元,就是说这个服务器只能算是一个人的大脑,相当于普通电脑的CPU,里面的资源都是有限的。你要获得更好的性能,解决办法一是升级云服务器,二是将其它耗费计算单元资源的软件部署在对应的云服务上。例如数据库有专门的云数据库服务、静态网页和图片有专门的文件存储服务。

亿万克是民族高科技制造企业领导品牌,自主研发,自主可控,为党政、金融、医疗、教育、电信、电力、交通和制造等行业的信息化发展和数字化转型提供安全可靠的自主创新解决方案。亿万克服务器真正做到了自主研发、能力内化、安全可信、安全可控。

一.什么是虚拟化?

简单来讲,虚拟化就是为一些组件创建虚拟(而不是物理)版本的过程。虚拟化可以应用到计算机、操作系统、存储设备、应用或网络。但是,服务器虚拟化才是虚拟化的核心。 现如今的 x86 服务器的设计存在局限性,每次只能运行一个操作系统和应用,这为 IT 部门带来了挑战。因此,即使是小型数据中心也必须部署大量服务器,而每台服务器的容量利用率只有 5% 到 15%,无论以哪种标准来衡量,都十分的低效。

虚拟化使用软件来模拟硬件并创建虚拟计算机系统。这样一来,企业便可以在单台服务器上运行多个虚拟系统,也就是运行多个操作系统和应用,而这可以实现规模经济以及提高效益。

二.为什么要虚拟化?

虚拟化技术能为我们解决很多以前解决不了的技术:

1、服务器整合技术:这个技术在没有虚拟化技术之前是很难完成的。因为什么东西都是实际存在的,想把两个工作相对较少的服务器整合到一起是很困难的。然而当有了虚拟化技术以后使这种服务器整合技术变得非常容易。而这个技术需要借助我下面介绍的2、3条技术。

2、负载均衡技术:

负载均衡技术是只在每台服务器上安装一个负载均衡器,然后设置很多的调度算法及临界值。来判断此时此刻服务器的压力是轻还是重。然后根据轻重来完成服务器的合并,而合并又依据了第三条技术。

3、动态迁移技术:这个技术是前两个技术的根基,但是却不只仅仅限于前两个技术。它的目的是可以在服务器开启的状态下,把其上面的虚拟机迁移到其他的服务器上面。工作原理大体是先将目标服务器上模拟出此服务器的硬件状态,然后迁移数据,最后释放此服务器的信息。

4、克隆技术:这个技术说起来和上面那个技术很像,但是却不一样。克隆技术是把一台服务器的环境配置好了后可以通过克隆技术使其他的机子都达到和这台机子一样的效果,假如要配置100台甚至1000台服务器的话这种克隆技术是非常可观的。它和动态迁移的区别是在服务器不停机的状态下,动态迁移要求迁移的彼此必须是共享内存的,但是克隆并没有这个限制。

5、灾难恢复技术:灾难恢复是所有大型公司必须考虑的问题,因为当一些意外发生时,比如:突然断电,硬件损坏,洪水,地震,等一系列情况是,如何把灾难所造成的数据损失降到最低甚至是不损失。这要依靠第六条技术。

6、虚拟快照技术:虚拟快照技术是将虚拟机此时的状态像照片一样保存下来,当然我说的很容易,其实现原理需要非常复杂,包括cpu运行状态,内存中的数据等等。这样保存下这些虚拟技术当发生灾难或者某些失误导致虚拟机出问题时,可以很快恢复。

7、改善系统可用性。这里的可用性只得是零 down机,在这种情况下我们才可以使得效率最大化。而零down机的前提是每台服务器必须要有一个镜像,在主虚拟机和次虚拟机之间有一条心跳线来维持两者之间的关系,当心跳线停止时,次虚拟机立马启动,代替主虚拟机。

8、安全性:我们直到虚拟化在硬件层上都有一层VMM来时时刻刻侦测每台虚拟机的动向,包括捕获异常,解决门事件,完成调度等等。所以当一些危险因素来临时由于VMM的存在使得我们可以非常快的侦测到这个问题并解决它。这能比以前的硬件层上面直接是操作系统快速很多。

看了一些虚拟化的博客,还有文章,发现很多人对于虚拟化技术到底是什么,为什么要使用虚拟化技术还不是很明白。绝大多数人目前理解的虚拟化技术就是把操作系统和硬件分离,一个硬件能够同时运行多个操作系统认为就是虚拟化技术,其实这只是虚拟化技术中很小的一个部分,和很初级的阶段。

什么是虚拟化技术?

百度百科中给出的解释其实也是相对片面的:

“ 虚拟化是一个广义的术语,在计算机方面通常是指计算元件在虚拟的基础上而不是真实的基础上运行。虚拟化技术可以扩大硬件的容量,简化软件的重新配置过程。CPU的虚拟化技术可以单CPU模拟多CPU并行,允许一个平台同时运行多个操作系统,并且应用程序都可以在相互独立的空间内运行而互不影响,从而显著提高计算机的工作效率。

虚拟化技术与多任务以及超线程技术是完全不同的。多任务是指在一个操作系统中多个程序同时并行运行,而在虚拟化技术中,则可以同时运行多个操作系统,而且每一个操作系统中都有多个程序运行,每一个操作系统都运行在一个虚拟的CPU或者是虚拟主机上;而超线程技术只是单CPU模拟双CPU来平衡程序运行性能,这两个模拟出来的CPU是不能分离的,只能协同工作。”

虽然其强调广义概念,但是在后面的描述上也都是在强调操作系统与硬件的隔离。

gartner给过一个相对简单但是很准确的定义(记不住原文,大概含义):将不同的资源和逻辑单元剥离,形成松耦合的关系的技术。

其实根据计算过程中的逻辑组成部分,将他们的紧耦合,变为松耦合(耦合大家学过软件工程的都应该懂什么意思了吧)。其实“耦合”的概念是计算机领域一直研究的内容:

面向对象的设计讲,不同的类应该是松耦合的,而类内部的信息应该是紧耦合的,这样可以更好地应对需求变化,快速动态地调整,构建新的系统;

web service其实也是将传统的紧耦合功能,转变为可以灵活组织的,像搭积木一样的松耦合关系,使得我们可以将很多大家都需要的功能通用化,我们可以利用不同的服务组合构建我们的应用。

而虚拟化,只是对计算环境这个更高层次的概念进行“松耦合化”,让我们的IT应用就像我们攒机器一样,几个通用的标准模块搭起来就能够成一个满足特定需求的计算环境。

我们可以看到,“松耦合化”是很多很热的技术的主线,之所以它是计算机研究中的重要元素之一,就是因为它会给我们提供更多的灵活性!

举个简单的比喻:计划经济时代,我们都是每个工厂有自己的食堂,自己的澡堂,托儿所,幼儿园,学校等等,这就好比我们的计算环境,或者是一个软件,所有的组成部分都紧紧的配合在一起,是比较全,对于自己工厂的员工来说很方便;但是对于工厂来说,这个很不经济,成本很高,因为什么都要做,什么都做不好,而且没有规模经济,自然就不好,对于社会来说,浪费非常多。后来市场经济,所有的都专业化了,于是我们一个写字楼的所有人都可以去楼下的食堂吃饭,也可以去别的地方吃饭;洗澡也有专业澡堂了,托儿所与学校也分出去了。这样我们的选择性多了,可以选好的地方或者合适的地方,另外专业化也提高了效率,社会浪费也少了,这就跟我们的web service或者虚拟化一样,每个公司或者个体都是提供一个专业服务,效率高,成本低;而你要做一种事情,可以有多种选择,选择最合适你的,也让你整体成本地,而且更好地完成任务。对于社会来说,浪费少了,而且更灵活了。

世间诸多事情都一脉相通,而诸多厂商所谓的“敏捷IT”,本质上就是利用“松耦合”带来的灵活性来实现的,实现“IT系统的计划经济向市场经济的过渡!”。而这就是为什么,在计算环境层面,我们需要“虚拟化”技术的原因。

但是,计算环境的虚拟化可不仅仅指的是 硬件与操作系统的松耦合,它是更大的一个概念,包含更广泛的内容。


欢迎分享,转载请注明来源:夏雨云

原文地址:https://www.xiayuyun.com/zonghe/737942.html

(0)
打赏 微信扫一扫微信扫一扫 支付宝扫一扫支付宝扫一扫
上一篇 2023-08-13
下一篇2023-08-13

发表评论

登录后才能评论

评论列表(0条)

    保存