假设一台机器(双四核 Xeon(2.26 GHz),24 GB RAM)运行 Windows Server 2008 和 Hyper-V。我可以预期同时运行多少台虚拟机并获得良好的性能?
这是否有点过分?内存真的会太多吗?
假设每个虚拟机有 2 GB。这意味着虚拟机大约有 16 GB,剩余 8 GB 用于主操作系统和 Hyper-V。
听起来对吗?
编辑:
我试图让这个问题听起来不那么像吹牛。这不是我的本意。这个问题很难写。
答案1
“我想使用 Hyper-V 一次运行大约 8 台虚拟机。”
你究竟为什么要做这样的事?
由于您不太可能在开发期间同时加载所有 8 个(也许除了短暂的负载测试),因此您可能可以在 2Gb 中运行所有 8 个VM,并且仍然可以充分利用所有这些核心。
答案2
我有几台运行 VMware 的商用机器,我们用它们进行测试、持续集成等。
这些机器每台都有一个四核处理器和 16 GB 的 RAM - 在我们当前的设置中,我们观察到:
- 我们首先受 I/O 限制,其次受 CPU 限制,而内存不是问题。
- 使用 iSCSI 和 OpenFiler 通过双千兆以太网在单独的专用文件服务器上托管虚拟硬盘,有助于降低成本并提高与本地磁盘相比的性能。
- 每台机器的 16 GB 内存都未得到充分利用,大多数实例仅分配了 512 MB 到 2 GB 的 RAM,而操作系统有 5 或 6 GB 的可用内存。
- 一台配备 24 GB RAM 的双四核 Xeon 机器的成本可以购买 2 台或更多台 4+ 台商品机器,每台机器配备 16 GB RAM 和一个四核 CPU(避免使用 FBDIMM 可以节省大量现金) - 特别是因为冗余对于测试/开发机器来说不是问题。
- 在测试复杂的应用程序/环境时,将不同的虚拟机置于不同的物理环境中通常会有所帮助,这样您就可以获得各种服务之间实际的网络延迟水平。
至于使用你的设备进行开发 - 我主要关心的是 I/O - 如果你运行那么多虚拟机,你将看到在开发过程中对磁盘访问时间产生负面影响,从而减慢编译速度等。我倾向于将尽可能多的虚拟机转移到一个单独的盒子上,让你的开发机器不承担负担,这样编译和其他与开发相关的任务就会快速完成。
答案3
这取决于您使用的 Windows 版本。以下是一些信息: http://msdn.microsoft.com/en-us/library/aa366778.aspx
64 位 Windows Vista Business 及以上版本以及 64 位 Windows 2008 Server Standard 及以上版本应该能够寻址 RAM。
答案4
我也有类似的问题,但我没有从理论上进行争论,而是决定购买,因为我认为必要时可以更换/升级。我最终选择了 Core i7 920,配备 12 GB RAM、2 个英特尔 80 GB SSD(RAID 0)、两个 1 TB SATA HDD(RAID 1)和一个一次性 1 TB SATA。
我使用 Windows Server 2008 x64 并在 SSD 上托管了几个虚拟机。响应速度非常非常快。(我有一些使用虚拟机的经验,并且知道磁盘 I/O 会让我在虚拟机中托管开发人员环境时吃尽苦头,尤其是在将 SQL Server 添加到相同主轴时。
我确实很喜欢这个设置,但后来出现了一个虚拟机游乐场(一台配备 32 GB RAM 和一个漂亮的小型 SAN 的戴尔 1950)。我把这些虚拟机和其他一些虚拟机一起扔到它上面,并在我的 SSD 上加载了 Windows 7。(我觉得我可以玩弄我的系统,因为我现在独立于我的新工作站托管一些虚拟机。)
我注意到的最大事情是,在非 VM 机器上开发要好得多。速度不是最重要的,而是视觉效果、字体抗锯齿等。SSD 确实让 I/O 不再是问题,但它们让一切都变得即时。(此外,Windows 7 也很棒。)
我知道 RTM 发布后我必须重建它,但我有可以在重建期间工作的虚拟机。我需要使用 VPC 而不是 Hyper-V 来构建虚拟机,以确保没有其他人干扰,但我认为这是合理的权衡。
简而言之,我赞同其他人的说法,将虚拟机托管在单独的服务器上,但我想补充一点,英特尔的固态硬盘非常快。单独的机器为您提供了更大的灵活性。您的驱动器听起来足够快,可以进行测试,但对于开发工作来说,即时速度很快。