虚拟化如何提高服务器利用率?

虚拟化的最大好处通常被认为是提高了服务器利用率。

但为什么我需要虚拟化呢?

假设我有N台物理服务器被轻度使用。 为什么我不把这些N台服务器上的所有应用程序合并到一台物理服务器上? 这样我就不会招致虚拟化的性能损失。

在这种情况下,虚拟化会给我带来什么?

在这种情况下,虚拟化会给我带来什么?

运行具有不同需求和依赖关系的两个独立事物的能力。 当这些需求冲突时,这是特别有价值的。 例如,假设你有一个只能在Windows 2000服务器上运行的老企业应用程序,但你也有一个新的shiny的应用程序,需要Windows 2008的.Net框架等,这两个应用程序不能在同一个操作系统内运行,但是使用虚拟机,他们可以在同一个硬件上运行。

如果您的各种服务具有不同的维护周期,这是有用的。 有了大量的虚拟机,您可以更新/重新启动您的辅助DNS服务器虚拟机,没有太大的影响 但是,如果该DNS服务器也是您的文件服务器,打印服务器,邮件服务器等,那么安排该更新将变得更加困难。

虚拟化对于分离这些应用程序非常有用。

也许你的应用程序不能全部安装在同一台服务器上,或者出于安全目的,你不希望它们在同一台服务器上 – 如果被黑客入侵,只有那个被黑客入侵。

也许你为他人托pipe应用程序,并想给每个人自己的个人“机器”。

也许你有10台同一台服务器,大部分时间只需要一台服务器,但是有时当你的负载变得更高时,你需要更多的服务器。 通过这种方式,您不需要启动另外9台服务器,就可以在一台(或几台虚拟服务器)上进行整合和运行。

使用虚拟化有很多原因(可能还有很多不使用虚拟化)。

恕我直言,虚拟化的最大好处是隔离

你把所有N套应用程序放在一起的想法有各种各样的风险。 如果突然之间需要一个需要重启的补丁呢? 你打补丁,然后重启所有其他的; 与多个虚拟机,你重新启动只是一个。 如果一个应用程序在RHEL 5.2上运行得最好,而另一个则喜欢Suse 10.0呢? 如果一个应用程序绝对需要Oracle的X版本,而另一个绝对不能使用版本X呢? (我们都看过这种东西!)。

能够使用一个物理系统来运行N个应用程序集合,其中所述应用程序不可能(或至less不太可能)相互干扰的机会通常是巨大的胜利。

在过去的应用程序被孤立,因为如果说应用程序“A”需要服务器重新启动应用程序“B”不会受到处罚。 随着越来越多的应用程序越来越多的弹性/隔离,因此服务器重新启动是不太可能被要求。 它是一个难以克服的心态问题。

运行虚拟化环境可以带来安全上的益处。

有一种看法认为,自从二十世纪六十年代以来,我们已经失败了创build一个安全的操作系统,我们可以突然创build安全的虚拟机,其中一个虚拟化环境不能干扰另一个。 当然,这是无稽之谈。 我们甚至不能创build完全保护两个正在运行的进程的CPU。

更复杂的代码和更多的代码只是意味着更多的错误。

当你想要一个干净的环境进行编译/testing时,虚拟机可以方便地避免额外的硬件购买,但这确实是它的范围。 在许多情况下,正确devise的应用程序可以像您所描述的那样运行,每个应用程序都在自己的用户标识中运行,操作系统决定哪些资源可以访问。