据我所知,虚拟机和客户操作系统将用户界面和硬件的纯功能之间的抽象层(与计算相关)数量增加了一倍。其中一些抽象层是(模拟的)硬件、驱动程序、IO 接口等。
像 Xen 这样的顶级虚拟化解决方案可能会消除其中的一些复杂性,但我仍然想知道在这些环境中如何实现效率;以及可管理的云服务器是否真的值得付出性能代价。
答案1
您的问题的答案很简单:虚拟化效率不高(目前还不是)。虚拟机运行良好(尤其是在类似的硬件上)并且是一种解决方案,但它们永远不会达到与真实物理机相同的性能。在我的公司,我们多次需要向客户解释何时需要将虚拟机迁移到物理机。
如果多个虚拟操作系统都不知道它是虚拟的,您如何期望它们高效地协同工作?如果驱动程序甚至看不到其他虚拟机中的匹配队列,您如何期望它们对队列和优先级做出明智的决定。见鬼,它们甚至看不到实际的物理硬件,所有决定都基于虚拟幻象。
例如,每个无害的虚拟机每秒都会中断 CPU 至少 1000 次,以便提高其时钟。将n
虚拟机放在一个物理机上,您(n + 1) * 1000
每秒都会遇到中断!更不用说中断是迄今为止 CPU 最慢的操作。
我相信,未来我们将看到新的操作系统,它们可以作为客户机与主机高效地协同工作。目前的趋势是发明具有小型简单驱动程序的虚拟硬件设备,将所有决定权留给真正的物理机器。但我们还没有做到这一点。
John T 已经解释了虚拟化的所有优势和便利性。我只想总结一下,人们使用虚拟化只是因为方便和经济。它们很容易移动,在一家 IT 中心散落着大量不常用的服务器的公司中,将其中几台服务器塞进一台物理机器中,然后忘掉它们,这是非常诱人的。更不用说减少物理机箱确实简化了维护。
答案2
虚拟化有很多优点,效率则取决于你如何定义它。
您无需在服务器机房中安装多台机器,而是可以使用虚拟化来执行以下操作:
- 节省空间
- 节省电力
- 更高效地使用硬件
- 降低硬件成本
- 整合管理
- 简化备份(取决于您的设置)
- 减少停机时间(再次取决于您的设置-高可用性功能等)
- 简化软件升级和快照功能可能出现的问题
- 通过虚拟模板显著减少项目时间
诸如此类。当然,虚拟化确实有其缺点,但从个人经验来看,优点远远大于缺点。在企业环境中,您肯定会希望采用抽象程度尽可能低的虚拟化平台,以便让您的软件更接近硬件运行。虚拟化(就目前而言)是未来的发展方向。
答案3
虚拟化之所以高效,主要是因为在大多数服务器环境中,很多硬件都处于闲置状态。虚拟化允许您在每台物理主机上拥有多个虚拟客户机,以利用这种闲置能力。这在功率、性能、成本和人员配置方面具有诸多效率优势:
- 将多台服务器整合到一台机器上可以消除为每台额外机器的核心硬件供电而产生的能源浪费。现在需要保持旋转的风扇和磁盘等设备更少了。
- 您的采购策略现在可以考虑到这一点,因为您会寻找更少、更大、更强大的通用服务器,而不是更小、一次性的服务器。这允许您进一步整合服务器,从而进一步节省成本。随着时间的推移,它还将有助于推动规模经济走向这些曾经被认为是高端的服务器,使它们对每个人都更实惠,并节省制造和运输开销等方面的费用。
- 硬件和操作系统制造商现在在其设计中考虑虚拟化(主要通过实施和支持VT-x),允许您在机器之间共享资源。例如,如果您有 3 个完全相同的操作系统实例作为虚拟客户机加载到同一物理主机的 RAM 中,则每个操作系统中保持不变的某些部分可能可以在这三个实例之间共享,从而使您可以从同一硬件中获得更多工作并进一步整合。
- 虚拟机更易于管理和维护,因为您拥有标准的虚拟硬件环境。需要淘汰旧服务器并迁移到新服务器吗?没什么大不了的 - 只需复制虚拟硬盘,更改一些设置以指向新位置,就可以开始了。操作系统本身并不知道它们已被移动,从而省去了一半的工作量。这种好处有可能在 IT 人员配置方面创造巨大的效率。
- 所有这些整合都进一步减少了对 IT 人员的需求,因为现在需要管理的物理服务器少了很多。
我知道这听起来似乎只对拥有大量服务器的商店有用,但举个小例子,去年年初我工作时有 14 台物理服务器,到明年年底我希望将服务器数量减少到 5 台。这包括 3 个虚拟化效果不佳的实例:网关设备、SQL 服务器和域控制器。这意味着我将把过去必须管理的 11 台服务器合并到 2 台(并计划添加第三台以提供更多空间和冗余)。
几乎任何需要至少 3 台服务器的人(以及域控制器/身份验证/基本网络服务、文件、打印、电子邮件、数据库和应用程序,大多数规模的企业都需要)都应该从合并到 2 台服务器中看到一些好处 - 尽管出于冗余原因我始终保留至少 2 台服务器 - 如果一台服务器发生故障,剩下的服务器可以缓慢地承载全部负载,直到您可以使另一台服务器重新上线。
更新:
我把其中一个要点加粗了,因为我认为 OP 忽略了这一点,并且解释了虚拟机如何提高性能。
答案4
到目前为止,有两个答案说它是高效的,适用于公司规模的虚拟化。对于个人使用来说,它也是高效的(就某些高效的定义而言)。我有一台笔记本电脑,但有 5 个操作系统。我可以在“干净”的操作系统上测试我的软件,知道没有悬空的注册表项或以前安装的任何其他东西等。
当然,对于CPU效率的严格定义,它是不如专用硬件的。