zoukankan      html  css  js  c++  java
  • 虚拟机发展依然强劲,但会被容器取代吗?

      虚拟机发展依然强劲,但会被容器取代吗?

      现在,许多IT创新都源于虚拟机(VM)以及软硬件的分离,比如云计算,边缘计算和微服务等领先技术概念都源于虚拟机,将操作系统和软件实例与物理计算机分离。

      什么是虚拟机?

      从根本上讲,VM是运行程序而无需绑定到物理机的软件。在VM实例中,一台或多台客户机可以在物理主机上运行。

      每个VM都有自己的操作系统,并且与其他VM分开运行,即使它们位于同一物理主机上也是如此。VM通常在服务器上运行,但也可以在PC系统甚至嵌入式平台上运行。多个VM可以共享来自物理主机的资源,包括CPU,网络带宽和内存。

      虚拟机起源于1960年代早期的计算,当时大型机用户的共享是将软件与物理主机系统分离的一种方式。虚拟机在1970年代初被定义为“真实计算机的高效隔离副本”。

      虚拟机在过去15年中获得了发展,因为企业采用服务器虚拟化以更有效地利用其物理服务器的计算能力,从而减少了对物理服务器的需求,从而节省了数据中心的空间。由于具有不同操作系统要求的应用程序可以在单个物理主机上运行,?因此不需要为每个服务器配备不同的服务器硬件。

      通常,有两种类型的VM:进程VM(将单个进程分开)和系统VM(将操作系统和应用程序与物理计算机完全分开)。进程VM的示例包括Java虚拟机,.NET Framework和Parrot虚拟机。

      系统VM依赖虚拟机管理程序,作为使软件可以访问硬件资源的中介。知名的虚拟机管理程序包括VMware(ESX/ESXi),英特尔/Linux基金会(Xen),Oracle(用于SPARC的MV Server和用于x86的Oracle VM Server)和微软(Hyper-V)。

      PC系统也可以利用虚拟机。比如Mac用户在其物理Mac上运行虚拟Windows 10实例。

      虚拟机的优势

      由于软件与物理主机是分开的,因此用户可以在单个硬件上运行多个实例,从而节省了公司时间,管理成本和物理空间。VM的另一个优点是,VM可以支持旧版应用程序,从而减少或消除了将较旧的应用程序迁移到更新的,或不同操作系统的需求和成本。

      此外,开发人员使用VM可以在安全的沙盒环境中测试应用程序。也可以帮助隔离可能感染给定VM实例的恶意软件。由于VM内的软件无法篡改主机,因此恶意软件无法传播导致尽可能多的损害。

      虚拟机的缺点

      虚拟机确实有一些缺点。在一台物理主机上运行多个VM可能会导致性能不稳定,尤其是在不满足特定应用程序的基础结构要求的情况下。与物理服务器相比,这也使它们在许多情况下效率较低。大多数IT运营都在物理系统和虚拟系统之间寻求平衡。

      虚拟化的扩展

      虚拟机在服务器虚拟化方面的成功导致将虚拟化应用于其他领域,包括存储,网络和桌面。

      在网络虚拟化中,企业探索网络即服务选项和网络功能虚拟化(NFV),这项功能使用商用服务器代替专用的网络设备,来实现更灵活和可扩展的服务。

      这与软件定义的网络有所不同,软件定义的网络将网络控制平面与转发平面分开,来实现对网络资源的更多自动配置和基于策略的管理。第三种技术,虚拟网络功能,是可以在NFV环境中运行的基于软件的服务,包括路由,防火墙,负载均衡,WAN加速和加密等过程。

      虚拟机和容器

      VM的增长导致了容器等技术的进一步发展,使得VM更迈进了一步,并在Web应用程序开发人员中赢得了吸引力。在容器设置中,可以将单个应用程序及其依赖项虚拟化。与VM相比,容器的开销要少得多,它仅包含二进制文件,库和应用程序。

      尽管有些人认为容器的开发可能会杀死虚拟机,但VM具有足够的功能和优势,可以使技术不断发展。例如,当一起运行多个应用程序或在较旧的操作系统上运行旧版应用程序时,VM仍然有用。

      另外,有些人认为容器不如VM虚拟机管理程序安全,因为容器只有一个应用程序共享的OS,而VM可以隔离应用程序和OS。

      所以,即使企业探索云架构和容器,VM软件市场仍然是一项基础技术。在IDC的《2019-2022年全球虚拟机软件预测》提及,尽管虚拟机软件市场已经高度成熟并且已经接近饱和,但在未来五年中将一直保持强劲的增长势头,并且将继续保持正增长。

      此外,虚拟机被看做5G和边缘计算等新技术的一部分。例如,微软,VMware和Citrix等虚拟桌面基础结构(VDI)供应商进一步将VDI系统扩展到远程桌面。

  • 相关阅读:
    Linux基础(14)进程通信 IPCs
    Linux基础(13)进程基础
    Linux基础(10)AIO项目设计与POSIX文件操作和目录管理
    Linux基础(09)aio高级编程
    Linux基础(08)信号通信机制
    Linux基础(06)IO复用
    Linux基础(05)socket编程
    LInux基础(04)项目设计一(理解链表管理协议的代码架构)
    C#关于一个程序,只可以有一种实例的方法
    C#application.exit()和environment.Exit(0)比较
  • 原文地址:https://www.cnblogs.com/jinsexiaomifeng/p/13751083.html
Copyright © 2011-2022 走看看