什么是虚拟化技术?什么是虚拟化
在计算机技术中,虚拟化 () 是一种资源管理技术。它是将计算机的各种物理资源,如服务器、网络、内存和存储等抽象和转换,以打破物理结构之间不可分割的壁垒,以便用户更好地使用这些资源。
虚拟化的目的是在同一台主机上运行多个系统或应用程序,从而提高系统资源的利用率,并带来降低成本、易于管理、容错和容灾等好处。
虚拟化技术的分类
在实施方面,虚拟化技术可分为基于硬件的虚拟化和基于软件的虚拟化。
硬件虚拟化
硬件虚拟化是硬件,物理平台本身为特殊指令的拦截和重定向提供支持。支持虚拟化的硬件也是某些基于硬件的软件虚拟化技术的关键。在基于硬件的软件虚拟化技术中,硬件是虚拟化的基础,硬件(主要是CPU)会为虚拟化软件提供支持,从而实现硬件资源的虚拟化。
支持虚拟化的硬件是:
软件虚拟化
软件虚拟化是指使用软件技术在现有物理平台上拦截和模拟对物理平台的访问。在软件虚拟化技术中,有些技术不需要硬件支持,例如:QEMU;一些软件虚拟化技术依赖于硬件支持,例如 KVM。
软件虚拟化可细分为以下几类:
多种虚拟化技术
虚拟化是通过软件对物理服务器进行模拟,其初衷是解决因“一应用占用一台服务器”模式导致服务器数量增加的问题,从而降低数据中心的复杂性,简化管理难度。在虚拟化的发展过程中,出现了以下主要的虚拟化技术或产品:
什么是虚拟化?
是一个开源应用程序容器引擎,允许开发人员将其应用程序和依赖项打包到可移植容器中,然后将其发布到安装了任何发行版的计算机上。基于 LXC,可以实现类似 VM 的功能,在更有限的硬件资源上为用户提供更多的计算资源。与 VM 等虚拟化方法不同,LXC 不属于完全虚拟化、部分虚拟化或半虚拟化的任何分类,而是作系统级虚拟化。
它是一个直接运行在主机作系统上的容器,并使用沙箱机制将一个完整的作完全虚拟化,容器之间不会有接口,使得容器与主机之间、容器与容器之间的隔离更加彻底。每个容器都会有自己的权限管理、独立的网络和存储栈,以及自己的资源管理能力,使得多个容器可以友好地共存于同一主机上。
借助内核功能,如:控制组( )、命名空间 () 等,直接调用作系统的系统调用接口。这减少了每个容器的系统开销,并降低了容器复杂性、快速启动和少量资源使用。
您能做什么?
这是该公司宣传的主要用例。虚拟机的最大好处是它可以在硬件基础架构上运行具有不同配置的各种平台 (软件、系统),从而以更少的开销提供相同的功能。它允许您将运行环境和配置放在代码中,然后进行部署,相同的配置可以在不同的环境中使用,从而减少硬件需求和应用程序环境之间的耦合。
前一种方案对管理代码管道有很大帮助。有许多中介通过代码从开发人员的计算机到生产环境中的最终部署。每个中间环境都有其自身的细微差异,为应用程序提供了一个从开发到上线始终一致的环境,从而使代码管道变得更加容易。
这还有一些额外的好处:它可以提高开发人员的工作效率。有关更详细的示例,您可以参考 2014 年会议或会议上的演示文稿。
在不同的开发环境中,我们都希望做好两件事。一是我们希望开发环境尽可能接近生产环境,二是我们希望快速搭建开发环境。
理想情况下,为了实现第一个目标,我们需要在单独的虚拟机中运行每个服务,以便监控生产中服务的运行状况。但是,我们不想每次都需要互联网连接,而且每次重新编译时都要远程连接很麻烦。这就是开发环境机器通常比较小的地方,以前我们用虚拟化的时候,经常需要给开发机器增加内存,但现在我们可以轻松地在里面运行几十个服务。选择
在同一台机器上运行不同应用程序的原因有很多,例如上述提高开发效率的场景。
我们经常需要考虑服务器整合以降低成本,以及将整体式应用程序拆分为松散耦合的单个服务的需求。如果您想了解为什么松散耦合的应用程序如此重要,请查看 Yege 的这篇论文,该论文将其与 进行了比较。
有很多工具不一定适用于容器,但它们适用于容器。它们提供了许多功能,包括为容器设置检查点、设置版本以及查看两个容器之间的差异的能力,这有助于调试错误。您可以在文章 “Save the ” 中找到这方面的插图。
另一个有趣的用例是多租户应用程序,它可以避免重写关键应用程序。此方案的一个示例是为 IoT(物联网)应用程序开发快速、易于使用的多租户环境。这种多租户代码库复杂且难以处理,重新设计这样的应用程序不仅耗时,而且浪费金钱。由于
环境启动的速度及其高效的 diff 命令,为每个租户的应用程序层的多个实例创建隔离环境既简单又便宜。
在虚拟机出现之前,引入新的硬件资源需要几天时间。的虚拟化技术将此时间缩短到几分钟,无需启动作系统即可创建容器进程,这只需几秒钟。这正是两者都受到重视的特点。
您可以在数据中心创建销毁资源,而无需担心重启的开销。通常,数据中心的资源利用率仅为 30%,通过有效使用和配置资源可以提高资源利用率。
虚拟机和虚拟机有什么区别?
虚拟机和容器化技术(代表)都是虚拟化技术,两者的区别在于虚拟化的程度不同。
基本对比度
器皿
虚拟机在物理资源级别进行隔离,相对于虚拟机来说,就是在你的 APP 级别实现的隔离,省略了虚拟机的作系统(OS),从而节省了一部分系统资源;守护进程可以直接与主作系统通信,以将资源分配给每个容器;它还将容器与主作系统隔离,并将容器彼此隔离。虚拟机需要几分钟才能启动,而容器可以在几毫秒内启动。由于作系统没有臃肿,因此您可以节省大量磁盘空间以及其他系统资源。
虚拟机和容器的区别在于,虚拟机多了一层作系统,虚拟机也会虚拟化硬件资源,而容器会直接使用主机的硬件资源。
让我们用图像的比喻来区分两者之间的隔离程度:
虚拟技术比较
在隔离方面,因为 VM 也对作系统进行了虚拟化,所以隔离更加彻底。但是,共享主机的作系统隔离程度较低。
由于 VM 的隔离作,虚拟机的生成速度比容器慢很多,因为主机的系统内核被直接利用。例如,能够以 10 个 VM/分钟的速度创建 VM,同时能够在几秒钟内创建大量容器,这在启动速度上是一个数量级的差异。
由于虚拟机添加了一层虚拟硬件,因此在执行数值计算时,虚拟机上运行的应用程序将在虚拟 CPU 上运行。另一方面,由于计算程序本身的特性,存在差异。虚拟机虚拟机的 CPU 架构与实际的 CPU 架构不同,数值计算程序一般针对特定的 CPU 架构都有一定的优化措施,而虚拟化使这些措施无效甚至适得其反。
在资源利用率方面,虚拟机会相对较低,因为它们的隔离更加彻底。
由于虚拟机添加了一层虚拟硬件,因此在执行数值计算时,虚拟机上运行的应用程序将在虚拟 CPU 上运行。另一方面,由于计算程序本身的特性,存在差异。虚拟机虚拟机的 CPU 架构与实际的 CPU 架构不同,数值计算程序一般针对特定的 CPU 架构都有一定的优化措施,而虚拟化使这些措施无效甚至适得其反。例如,对于本实验中的平台,实际的 CPU 架构是 2 个物理 CPU。
请参阅文章