我在 ServerFault 上发现了一些暗示这个主题的问题,虽然它可能有点基于意见,但我认为它可以根据以下内容属于“良好的主观”类别:
建设性主观问题:
* tend to have long, not short, answers
* have a constructive, fair, and impartial tone
* invite sharing experiences over opinions
* insist that opinion be backed up with facts and references
* are more than just mindless social fun
所以不碍事。
我正在帮助一位正在更换运行 Windows 2003 的旧物理服务器的系统管理员同事,他不仅希望更换硬件,而且希望在此过程中“升级”到 2012 R2。
在我们关于他的替换硬件的讨论中,我们讨论了他安装 ESXi,然后将 2012 年“服务器”作为 VM 并将旧应用程序/文件/角色从 2003 年服务器迁移到 VM 而不是非 VM 安装的可能性在新硬件上。
在接下来的几年里,他认为不需要将其他任何东西转移到 VM 或创建额外的 VM,因此最终这将是运行正常安装的新硬件或在 ESXi 上运行单个 VM 的新硬件。
我自己的经验仍然倾向于使用虚拟机,除了创建额外虚拟机的可能性之外,没有真正令人信服的理由这样做。但是现在虚拟机管理程序有额外的开销和管理方面,尽管我已经体验了更好的管理功能和虚拟机报告功能。
因此,在希望这可以保留在“良好的主观”类别中以在未来帮助他人的前提下,您必须提供哪些经验/事实/参考/建设性答案来帮助支持任一结果(虚拟化或不是单个“服务器”) ?
在一般情况下,将独立服务器放在管理程序上的优势是面向未来。它使未来的扩展或升级更容易、更快,因此更便宜。主要缺点是额外的复杂性和成本(不一定是财务上的,而是从工时和时间的角度来看)。
因此,为了做出决定,我问自己三个问题(通常更喜欢将服务器放在管理程序上,因为它的价值)。
我认为被虚拟化的操作系统以及性能要求和扩展/增长潜力是一个重要因素。今天的服务器对于我们使用的应用程序和操作系统来说通常过于强大。根据我的经验,大多数标准 Windows 系统无法有效利用现代双路服务器中的可用资源。在 Linux 中,我利用了一些精细的资源管理工具 ( cgroups ) 和容器 ( LXC ) 来更好地利用物理系统。但市场绝对是面向虚拟化优化硬件的。
也就是说,我在少数情况下虚拟化了单一系统而不是裸机安装。常见的原因有:
许可- 基于严格的核心、插槽或内存限制(不考虑现代计算的趋势)许可的应用程序数量正在减少。请参阅:在 BIOS 中禁用 CPU 内核?
可移植性——虚拟化服务器将虚拟机从硬件中抽象出来。这使得平台更改的破坏性更小,并允许 VM 引用标准虚拟化设备/组件。使用这种方法,我已经能够维持陈旧(但很重要)的 Windows 2000 系统的生命支持。
未来扩展——我现在有一个客户,他有一个在 2001 时代硬件上运行的 Windows 2003 域控制器。我正在为他们构建一个新的单主机 ESXi 系统,该系统将临时容纳一个 2012 R2 新域控制器。但更多的虚拟机将随之而来。在这种配置中,我可以提供可靠的资源扩展,而无需额外的硬件成本。
使用单个主机/单个 VM 执行此操作的缺点是管理。我是从 VMware 的角度来的,但在过去,ESXi 对这种安排更友好一些。如今,vSphere Web Client 的要求和对基本功能的访问受限,使得运行单主机(和单虚拟机)解决方案的吸引力降低。
其他考虑因素是削弱硬件监控以及与常见外部外围设备(USB 设备/磁带驱动器/备份/ UPS 解决方案)相关的更多复杂性。今天的管理程序确实希望成为更大的管理套件的一部分。
虚拟化单个服务器有一些好处。首先想到的几件事是
我认为其中最重要的是快照功能。我们在整个公司都使用 VMWare,所以对我们来说,当需要更多 VM 时让服务器“准备好”是有意义的。
这不是一个长答案,但无论如何:
将管理程序用于单个服务器的最令人信服的原因是,尤其是对于像 Windows Server 这样的东西,您拥有生产操作系统的全部硬件抽象,并且可以在需要时将其移动到全新的服务器硬件而没有任何问题。我认为这是一个真正有价值的特性,它远远超过了在后台运行一个实际的不必要的虚拟机管理程序的缺点。
我不会像其他人那样在这里提供详细的答案,所以我只想说,这些天我发现越来越难证明在裸机上安装服务器操作系统而不是安装管理程序(你的选择)和虚拟化工作负载。在我看来,这样做的好处是:
成本效益。从长远来看,如果我需要部署额外的工作负载,我不必为这些额外的工作负载购买更多硬件。在某些情况下,使用 Hyper-V 时,我什至可以节省许可费用。
易于部署和重新部署。
易于实施高可用性和故障转移。
可移植性。如果我需要停用或外包当前主机,我可以将虚拟机移动到几乎任何地方。
未来的证明。您的系统管理员同事目前可能看不到未来对基于虚拟机管理程序的基础架构的任何需求,但我的猜测是,在 12 到 24 个月内,他会并且他会很高兴他选择走虚拟化路线,如果他确实选择了那条路线.
灾难恢复。我可以在几分钟内备份整个 VM 并将其还原或复制到另一台主机。
等等等等...
以下是我说 VM 更好的几个原因:
内置“KVM over IP”(有点)——您可以在控制台上远程访问您的服务器,而无需 KVM over IP。有时您只是不想通过 RDP 做某事而需要控制台访问。使用虚拟机,您可以启动选择的管理工具(XenCenter、vSphere Client 等),然后您就在虚拟机的控制台上。
使用虚拟机(对于非虚拟机服务器,使用基于 IP 的 KVM),我不再需要在寒冷的服务器机房里呆上几个小时。
迁移到新硬件 - 除了操作系统升级,要安装新硬件,您必须迁移系统、移动设备等。使用虚拟机,您(通常)不需要做任何事情。您升级硬件,将 VM 文件放在新硬件上并启动。
虽然人们无法预见未来的虚拟机,但“如果你构建它,它们就会出现”。你会想要启动一个新的虚拟机来测试一些东西并尝试新的东西等等。还有更多的可能性。
虚拟机使您能够使用快照恢复、复制它、克隆虚拟机(在运行时)然后启动它——无论是在投入使用之前测试某些东西,还是仅仅拥有一秒钟的第一的。您可以使用 VM 快照等做很多事情。
冗余——如果你加入第二台虚拟机服务器,你可以拥有冗余硬件,虽然我不知道当前的 VMWare 许可方案,但 XenServer 现在有 XenMotion 显然是免费包的一部分,因此成本开销可能不适用。
我不会使用虚拟机的原因:
开销 - 几乎没有,但显然有一些开销。
管理更复杂 - 稍微复杂一点,但很容易学习。如果您不打算使用大型虚拟化环境,那么培训是微不足道的。
我来晚了,感觉人们已经提出了一些我想提出的观点,但我将简要回顾一下:
但是,目前还没有人提到并且可能应该提到的事情:如果您所在的商店可能需要测试服务器,并且可能会通过获取备用桌面和拍打服务器操作系统来解决该需求在它上面,能够为他们提供虚拟机可能会更好地满足您和他们的需求。虚拟化新服务器可能是允许未来虚拟扩展的“原因”。(而且,坦率地说,如果你不在那种商店里,你可能已经有了虚拟化。)
当然,并非所有东西都虚拟化。我通过向他们描述他们需要做什么来关闭 TCP 段卸载(PXE 在 TSO 开启的情况下像一只独腿狗一样运行,但他们不得不将其关闭,从而为包括 PXE 的管理软件的物理硬件打分)对于整个虚拟 VLAN,他们不愿意这样做)。因此,如果新服务器的专业性足以不适合,那么,没关系。
但是,除非是那种类型的专业化,否则现在或将来摆脱一堆(可能不受管理的)运行服务器操作系统的 PC 级机器对我来说是值得的。
当然,我会尽可能地进行虚拟化。这使我可以为将来做以下事情做准备:
简而言之,除非服务器将运行有限制的特定软件,禁止它被虚拟化(通常严格的网络或磁盘 IO 延迟要求,并且使用正确的硬件,即使是那些可以通过虚拟化实现的)我尽量保留尽可能虚拟。
我认为支持将单个服务器虚拟化为单个主机上的 VM 的一个原因是,它使您能够为该“服务器”处理测试环境。
如果硬件功能强大,您可以克隆服务器虚拟机并删除其 NIC/网络功能,并将该克隆隔离为“测试平台”,然后在“生产”服务器上尝试相同的操作。例如,如果服务器正在运行 ERP 软件,并且您想测试如果您针对 ERP 软件/数据库运行特定脚本会发生什么。您可以先在克隆的 VM 上进行测试。这可以在部署之前与实时 VM 的快照一起完成,另外还有一个好处是知道它应该可以正常工作。
可以使用现有物理服务器的 P2V 创建相同的克隆“测试”环境,但是您需要额外的物理主机来放置新的测试虚拟机……在上面的所有内容都可以驻留在同一个物理服务器上硬件(如今对于单个 VM 来说几乎总是矫枉过正)
如果您的用例不需要 100% 的专用硬件功率,那么我每次都会虚拟化。它提供了灵活性、快照功能和内置的控制台访问(即使您也应该使用带外管理)