服务器虚拟化能够帮助对抗服务器消耗过多资源, 更好地利用计算机能力, 控制能源费用, 以及提供数据中心敏捷性和灵活性.
有这样一些技术, 一方面它们在概念上是十分简单的, 但另一方面却对企业数据中心的影响十分深远. 服务器虚拟化就是这样一种技术.
想象一下, 如果可以添加一层软件 (超管理程序) 来在一个物理服务器上运行多个操作系统实例和相关工作负载, 而不是在一个服务器上运行一个操作系统实例和一个应用程序, 情况会是什么样?
这就是服务器虚拟化的理念所在. 该理念可追溯到二十世纪 60 年代 IBM 的大型主机, 后来又由 VMware 发扬光大, 后者在 21 世纪初为 x86 系列服务器引入了虚拟化软件这个概念. 自那以后, 其他供应商便开发了属于其自己的服务器虚拟化平台, 同时整个行业也创建了高级管理, 自动化和编排工具来使部署, 移动和管理虚拟机 (VM) 工作负载变得更轻松.
在服务器虚拟化出现之前, 企业需要处理其数据中心环境中服务器消耗过多资源的问题, 处理计算能力未得到充分使用的问题, 处理能源费用不断飙升的问题, 处理手动流程的问题, 以及处理总体效率低下和系统不灵活的问题.
服务器虚拟化改变了所有这一切, 并已经得到了广泛采用. 事实上, 要找到一家企业没有在 VM 环境中运行大多数工作负载, 这是很困难的.
但是, 正如我们所知, 任何技术都会被下一个大事件所取代. 而在服务器虚拟化的例子中, 下一个大事件就是变小.
服务器虚拟化将物理设备进行了分割, 从而让多个操作系统和成熟的应用程序都能利用底层计算能力.
在下一波云计算浪潮中, 开发人员将会把应用程序切分成较小的, 在轻量容器中运行的微服务, 同时也会使用无服务器计算(也被称为功能即服务(FaaS)).
两种情形都会绕过 VM, 同时代码会运行在裸机金属上.
服务器虚拟化的好处
从基本的服务器整合开始, 服务器虚拟化有诸多好处. 你可以在单个硬件上将多个应用程序联合起来, 从而减少数据中心所需的服务器的总的数量. 服务器越少, 框架和网络设备就会更少; 从物理空间到空调的维修费用, 所有这些都会帮助节省事物的开支.
服务器虚拟化降低了新硬件对资本支出的需求, 从而让你不用再对这些硬件进行更新. 你可以重新部署那些突然释放出来的服务器.
还记得数据中心管理员必须手动提供服务器的那些日子吗? 自从服务器虚拟化出现之后, 自动化就有了较大进步, 从而用户就可以在几秒时间内把 VM 运行起来, 并且还能通过仅点击几下鼠标来迁移多个工作负载, 以便应对业务变化需求.
服务器虚拟化也能够提供当下基于 web 的, 高连接性业务所需的高可用性, 失效备援, 可扩展性, 敏捷性, 高性能和灵活性. 服务器虚拟化是支持云计算供应商提供其服务的底层技术. 当客户从云服务提供商那里购买了基础设施即服务 (IaaS) 时, 他们就会购买 VM, 然后再添加完成任务所需的相关存储, 管理和安全功能.
服务器虚拟化的不同类型
在服务器虚拟化的世界中, 物理服务器被称为主机, 它运行着一个主机操作系统. 每个 VM 都是一个客户, 会运行一个客户操作系统. 客户会彼此隔离开.
有了基于超管理程序的虚拟化, 超级监督程序或虚拟机监控器 (VMM) 就能处于主机 OS 和底层硬件层之间, 向客户操作系统提供必需的资源.
半虚拟化和全虚拟化能够在客户操作系统安装进虚拟机之前对它进行修改. 这可以提高性能, 因为被修改的客户操作系统可以直接与超管理程序进行通讯, 从而减少模拟开销.
借助硬件的虚拟化还试图减少管理程序的开销, 但是是通过硬件扩展而不是软件修改来实现的.
通过使用内核级虚拟化, 而不是超管理程序, 你就可以运行一个单独的 Linux 内核版本. 这能够使在单个主机上运行多个虚拟机变得十分容易, 因为其中的设备驱动程序可以用于主 Linux 内核和虚拟机之间的通信.
最后, 通过系统级或 OS 虚拟化, 你就可以在操作系统内核的单个实例上运行多个但逻辑上截然不同的环境. 在系统级虚拟化中, 所有 VM 都必须共享相同的操作系统副本, 而服务器虚拟化能够允许不同的 VM 拥有不同的操作系统.
虚拟机 vs. 容器
容器化运动的两个主要的促成者是 Docker, 这是一个广受欢迎的用于启动容器的工具, 还有谷歌的 Kubernetes, 它可以帮助管理多个容器. 容器是独立的代码执行环境, 它们共享着主机操作系统的内核.
容器比 VM 更高效, 更轻量, 因为它们绕过了冗余的客户操作系统, 削减了相关的启动开销. 相比 VM, 开发人员可以在相同的硬件上运行多达 6 到 8 倍的容器.
容器确实有它们自己的缺点. 作为一种相对较新的方法, 他们没有成熟技术所拥有的大量管理工具, 因此需要做大量的设置和维护工作. 此外, 人们还担心安全问题.
有了 VM, 你就可以使用来宾图像轻松地在主机之间移动工作负载, 但裸机更难以升级或移动. 使用裸金属服务器, 回滚机器状态就会成为一项具有挑战性的任务.
虚拟机 vs. 无服务器计算
在传统的 IaaS 云环境中, 客户会首先提供 VM, 存储, 数据库和相关的安全和管理工具, 然后再将应用程序上传到 VM 中.
而有了无服务器计算, 开发人员就可以先编写代码, 然后让云服务提供商处理所有其他事情. 开发人员永远不需要考虑服务器, 操作系统, 供应或管理. 当然, 需要有一个物理服务器来运行代码, 但这是云服务提供商的责任.
系统会将代码分解成特定的功能, 而不是单一的应用程序. 当发生触发该功能的事件时, 无服务器服务 -- 例如 Amazon 的 Lambda-- 就会运行该功能. 无服务器供应商按功能向客户收费.
与微服务 / 容器场景一样, 无服务器计算绕过了虚拟机层和运行在裸金属上的功能. 在这一点上, 无服务器计算相对不成熟, 使用案例有限.
服务器虚拟化的未来
虽然当下容器炙手可热, 人们对无服务器计算的兴趣也在不断增长, 但现实情况是, 服务器虚拟化才是一种坚若磐石的技术, 因为它为绝大多数企业应用提供了动力 -- 据一些人估计, 虚拟机的饱和率高达 90%.
将平稳地运行在 VM 上的关键的应用程序移动到容器或无服务器平台上, 这是很难进行想象的. 异构环境的用户可能仍然会使用 VM, 因为容器需要在相同的操作系统上运行, 并且不能在 Linux 和 Windows 之间进行混合.
但是, 对于正在使用最新的 DevOps 和敏捷方法构建的新应用程序, 开发人员现在有了不同的选择. 展望未来, 开发人员将根据是否在传统的 VM, 容器或无服务器环境中运行新的工作负载来进行具体的决策.
来源: http://virtual.51cto.com/art/201807/579068.htm