我在ServerFault上发现了一些关于这个主题的问题,虽然它可能有点基于观点,但我认为它可以归结为基于以下内容的“良好的主观”类别:
build设性的主观问题:
* 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
所以,这样的方式。
我正在帮助一个正在replace运行Windows 2003的老式物理服务器的系统pipe理员,他正在寻求不仅replace硬件,而且在升级过程中升级到2012 R2。
在我们讨论关于更换硬件的讨论中,我们讨论了他安装ESXi,然后将2012服务器作为虚拟机,将旧的应用程序/文件/angular色从2003服务器迁移到虚拟机而不是非虚拟机安装的可能性在新的硬件上。
在未来几年内,他并没有意识到需要将其他任何东西移动到虚拟机或创build额外的虚拟机,因此最终这将是运行正常安装的新硬件或在ESXi上运行单个虚拟机的新硬件。
我自己的经验还是会依赖虚拟机,除了创造更多虚拟机的可能性之外,没有真正有说服力的理由这样做。 但现在pipe理程序还有额外的开销和pipe理方面的问题,尽pipe我已经体验了更好的虚拟机pipe理function和报告function。
因此,希望在今后能保持“好的主观”类别以帮助其他人的前提下, 您需要什么样的经验/事实/参考/build设性的答案来支持任何一个结果(虚拟化或不是单一的“服务器”) ?
在一般情况下,将独立服务器放在虚拟机pipe理程序上的好处是有前瞻性的。 这使得未来的扩展或升级更容易,更快,因此更便宜。 主要缺点是额外的复杂性和成本(不一定在经济上,但从工时和时间的angular度来看)。
所以,为了做出决定,我问了自己三个问题(通常更喜欢将服务器放在虚拟机pipe理程序上,这是值得的)。
我认为虚拟化的操作系统是一个很重要的因素,还有性能要求和扩展/增长潜力。 今天的服务器对于我们使用的应用程序和操作系统通常过于强大。 根据我的经验,大多数标准Windows系统无法有效利用现代双路服务器中的可用资源。 在Linux中,我利用了一些细粒度的资源pipe理工具( cgroups )和容器( LXC )来更好地利用物理系统。 但市场肯定是针对虚拟化优化的硬件。
也就是说,在一些情况下,我已经虚拟化了单一系统而不是裸机安装。 常见原因有:
许可 – 基于严格的核心,套接字或内存限制( 不考虑现代计算趋势 )许可的应用程序数量减less。 请参阅: 在BIOS中禁用CPU核心?
可移植性 – 虚拟化服务器从硬件抽象出虚拟机。 这使得平台更改更less破坏性,并允许VM引用标准的虚拟化设备/组件。 我已经能够使用这种方法保持老旧的( 但关键的 )Windows 2000系统的生命支持。
未来的扩展 – 我现在拥有一台运行在2001年代硬件上的Windows 2003域控制器的客户端。 我正在为他们构build一个新的单主机ESXi系统,这个系统将安装一个2012 R2新的域控制器。 但是更多的虚拟机将会跟随。 在这种configuration下,我可以提供可靠的资源扩展而无需额外的硬件成本。
使用单个主机/单个虚拟机执行此操作的缺点是pipe理。 我从VMware的angular度来看,但是在过去,ESXi对于这个安排有点友善。 今天,vSphere Web Client的要求和基本function的受限访问使得单主机( 和单个VM )解决scheme的运行性能下降。
其他考虑因素包括:硬件监控function受损,以及与通用外设(USB设备/磁带驱动器/备份/ UPS解决scheme )相关的更多复杂性。 今天的pipe理程序真的想成为更大的pipe理套件的一部分。
虚拟化单个服务器有几个好处。 头几个想到的事情是
我认为其中最重要的是快照function。 我们全公司都使用VMWare,所以对于我们来说,当需要更多的虚拟机时,让服务器“准备好”是有意义的。
这不是一个长的答案,但无论如何:
将虚拟机pipe理程序用于单个服务器(尤其是Windows Server)最引人注目的原因是,您可以对生产操作系统进行全面的硬件抽象,只要有需要,就可以将其全部移植到全新的服务器硬件中。 我认为这是一个真正有价值的function,远远超过了在后台运行一个实际的不必要的虚拟机pipe理程序的缺点。
我不打算在其他地方提供详细的答案,所以我只想说,现在我发现,在裸机上安装服务器操作系统而不是安装pipe理程序(您的select)和虚拟化工作负载。 在我看来,这样做的好处是:
成本效益。 从长远来看,如果我需要部署额外的工作负载,那么我不必为这些额外的工作负载提供更多的硬件。 在某些情况下,使用Hyper-V时,我甚至可以节省许可成本。
易于部署和重新部署。
易于实现高可用性和故障转移。
可移植性。 如果我需要停用或外包当前的主机,我可能会在任何地方移动虚拟机。
未来的certificate。 你的系统pipe理员目前可能还没有看到任何对基于虚拟机pipe理程序的基础设施的需求,但是我的猜测是,如果他真的select了这个路线的话,在12到24个月内,他会和他会很高兴他select了虚拟化路线。
灾难恢复。 我可以备份整个虚拟机,并在几分钟内恢复或复制到另一台主机。
等等等等…
这里有几个原因,我会说虚拟机是更好的:
内置的“基于IP的KVM”(有点) – 您可以在控制台上远程访问您的服务器,而不需要KVM over IP。 有时候你只是不想通过RDP做一些事情,需要控制台访问。 使用虚拟机,您启动了select的pipe理工具(XenCenter,vSphere Client等),并且位于虚拟机的控制台上。
使用虚拟机(以及非虚拟机服务器,使用我的KVM over IP),我不必再呆在冷的服务器机房里几个小时。
迁移到新的硬件 – 操作系统升级放在一边,把你的新硬件,你必须迁移系统,移动的东西等。有了虚拟机,你不(通常)必须做任何事情。 您升级硬件,将虚拟机文件放在新硬件上,然后启动。
虽然没有预见到未来的虚拟机,“ 如果你build立它,他们会来 ”。 你会想要启动一个新的虚拟机来testing一些东西,并尝试新的东西,等等。有更多的可能性。
虚拟机让你能够恢复快照,获取副本,制作虚拟机的克隆(在运行时),然后旋转它 – 无论是在放置它之前testing一些东西,还是只有一秒钟第一。 有很多事情可以用VM快照和类似的东西来做。
冗余 – 如果您投入第二台虚拟机服务器,则可以使用冗余硬件,但是我不知道当前的VMWare许可scheme,XenServer现在显然已将XenMotion作为免费软件包的一部分,因此成本开销可能不适用。
我不会使用虚拟机的原因是:
开销 – 几乎没有,但显然有一些开销。
更复杂的pipe理 – 更复杂一点,但很容易学习。 如果你不想要一个大规模的虚拟化环境,培训是微不足道的。
我迟到了,觉得人们已经提出了一些我想做的事情,但我会简要回顾一下:
但是,现在还没有人提到过,可能应该提到:如果你在那种需要testing服务器的商店里,并且很可能通过抓取一个备用桌面和一台服务器OS来解决这个需求就可以为他们提供虚拟机,可能会更适合你和他们的需求。 虚拟化新服务器可以成为未来虚拟扩展的“理由”。 (坦率地说,如果你不在那种商店,你可能已经有虚拟化了。)
当然,并不是所有的东西都是虚拟的 我为包含PXE的pipe理软件评估了物理硬件,向他们描述了他们需要做什么来closuresTCP Segment Offloading( PXE像一只带有TSO的单脚狗一样运行 ,但是他们必须closures它对于整个虚拟VLAN,他们不愿意这样做)。 所以,如果新的服务器是不够专业的东西,那么没关系。
但是,除了这种专业化之外,现在或将来摆脱运行服务器操作系统的一大堆(可能不受pipe理的)PC级机器是值得的。
当然,我可以随时虚拟化。 这让我准备在将来做以下事情:
简而言之,除非服务器要运行具有限制的特定软件,禁止它被虚拟化(严格的networking或磁盘IO延迟通常要求,并且使用正确的硬件,甚至可以通过虚拟化来实现)尽可能虚拟。
我能想到的一个理由是将单个服务器虚拟化到单个主机上的虚拟机上,这个能力可以让你随意篡改这个“服务器”的testing环境。
如果硬件function强大,则可以克隆服务器虚拟机,并删除其NIC /networkingfunction,并在“生产”服务器上尝试相同之前,将该克隆作为“testing平台”进行分离。 例如,如果服务器正在运行ERP软件,并且您想testing如果您针对ERP软件/数据库运行特定脚本会发生什么情况。 您可以在克隆的虚拟机上首先进行testing。 这可以在部署之前结合活动虚拟机的快照来完成,而且知道它应该可以正常工作。
创build相同的克隆“testing”环境可以使用现有物理服务器的P2V来完成,但是您需要一个额外的物理主机来将新的testingVM放在…上面的所有内容都可以驻留在同一物理硬件(现在几乎总是为单个虚拟机矫枉过正)
如果你的用例不需要专用硬件的100%的功率,那么我就会每次都去虚拟化。 它提供了灵活性,快照function和内置的控制台访问(即使您也应该使用带外pipe理)
与主要问题相对的一点是:
我最近有个虚拟机,磁盘不够大。 它运行的是在关系数据库中生成大量数据,出于性能原因必须在同一台机器上。
在两次扩展磁盘映像后,我到了主机上没有足够空间来安全复制和再次扩展映像的阶段。 即使它是一台便宜的个人电脑,而不是一台高性能的服务器,我本来可以在一台专用机器上为我节省几天的时间。
使用专用机器,您可以将其closures,并添加更多的磁盘。 如果它是运行其他虚拟机的服务器,除非有备用的热插拔托架,否则可能会出现问题,请closures此function。