![虚拟化如何提高服务器利用率?](https://linux22.com/image/512522/%E8%99%9A%E6%8B%9F%E5%8C%96%E5%A6%82%E4%BD%95%E6%8F%90%E9%AB%98%E6%9C%8D%E5%8A%A1%E5%99%A8%E5%88%A9%E7%94%A8%E7%8E%87%EF%BC%9F.png)
通常说虚拟化的最大好处是提高服务器的利用率。
但是为什么我需要虚拟化呢?
假设我有 N 台使用率不高的物理服务器。我为什么不把这 N 台服务器上的所有应用程序合并到 1 台物理服务器上呢?这样我就不会遭受虚拟化带来的性能损失。
在这种情况下,虚拟化能给我带来什么?
答案1
在这种情况下,虚拟化能给我带来什么?
能够运行具有不同要求和依赖关系的两个独立事物。当这些要求发生冲突时,这一点尤其有价值。例如,假设您有一些旧的企业应用程序只能在 Windows 2000 服务器上运行,但您还有一个需要 Windows 2008 .Net 框架等的新应用程序,这两个应用程序不能在同一操作系统中运行,但使用虚拟机,它们可以在相同的硬件上运行。
如果您的各种服务有不同的维护周期,那么它很有用。使用大量虚拟机,您可以更新/重新启动辅助 DNS 服务器虚拟机而不会产生太大影响。但如果该 DNS 服务器也是您的文件服务器、打印服务器、邮件服务器等,那么安排该更新将困难得多。
答案2
虚拟化可以很好地分离这些应用程序。
也许您的应用程序不能全部安装在同一台服务器上,或者出于安全目的,您不希望它们安装在同一台服务器上 - 如果一个服务器被黑客入侵,那么只有那个服务器会被黑客入侵。
也许您为其他人托管应用程序并希望为每个人提供他们自己的“机器”。
也许您有 10 台相同的服务器,大多数时候只需要一台,但有时当您的负载增加时,您需要多几台。这样,您就不需要启动另外 9 台服务器,您可以将所有内容整合并运行在一台(或几台虚拟服务器)上。
使用虚拟化的原因有很多(而不使用虚拟化的原因可能也有很多)。
答案3
我认为,虚拟化最大的好处是隔离。
将所有 N 组应用程序放在一起的想法存在各种风险。如果突然需要一个需要重新启动的补丁怎么办?您修补并重新启动所有其他应用程序;使用多台虚拟机时,您只需重新启动一个。如果一个应用程序在 RHEL 5.2 上运行效果最佳,而另一个应用程序喜欢 Suse 10.0,该怎么办?如果一个应用程序绝对需要 Oracle 的 X 版本,而另一个应用程序绝对不能使用 X 版本,该怎么办?(我们都见过这种事情!)。
能够使用一个物理系统来运行 N 个应用程序集,其中所述应用程序不可能(或至少极不可能)互相干扰,这通常是一个巨大的优势。
答案4
运行虚拟化环境可以带来明显的安全优势。
有人认为,自 20 世纪 60 年代以来,我们一直未能创建安全的操作系统,但我们突然可以创建安全的虚拟机,其中一个虚拟化环境不会干扰另一个虚拟化环境。当然,这是无稽之谈。我们甚至无法创建完全保护两个正在运行的进程不受彼此干扰的 CPU。
更多的复杂性和更多的代码行意味着更多的错误。
当您想要一个干净的环境来进行编译/测试时,虚拟机可以方便地避免购买额外的硬件,但这确实是它的全部。在许多情况下,经过正确设计的应用程序可以完全按照您描述的方式运行,每个应用程序都在自己的用户 ID 中运行,操作系统决定可以访问哪些资源。