最近,虚拟化的热潮已经到达我的工作场所,开发人员在他们的计算机上尝试虚拟机.早些时候我听过几个不同的开发人员关于在他们的桌面计算机中设置虚拟机的问题,以保持他们的开发环境清洁.
市场上有很多虚拟机软件产品:
Microsoft Virtual PC
Sun VirtualBox
VMWare 工作站或播放器
Parallell Inc的Parallells桌面
我很想知道如何在工作中有效地使用虚拟化.我的问题是你如何使用虚拟机进行日常开发以及出于什么原因?
我刚刚在家里建造了一台真正强大的机器,这样我就可以同时运行多个虚拟机.我的情况可能是极端的,但这是我这样做的逻辑.
测试
当我测试时,特别是桌面应用程序时,我通常会创建多个虚拟机,每个虚拟机应运行一个平台(Windows 2000/XP/Vista等).如果有32位和64位的风格,我也建立了一个.我也玩VM硬件设置(例如大量RAM,小RAM,1核,2核等).我发现这种方式存在很多小错误,如果我没有使用这种方法,那肯定会让它变成野外.
这种方法也可以很容易地使用不同的软件场景(如果安装程序的用户没有.NET 3.5 sp1会发生什么?如果他没有XXX组件会怎么样?等等?
发展
当我开发时,我有一个运行我的数据库服务器的VM(SQL2000/2005/2008).这有两个原因.首先,它更现实.在生产环境中,您的应用程序可能与db不在同一个框中运行.你开发时为什么不复制它?另外,当我不开发时(记住这也是我的家用机器),我真的需要运行所有这些数据库服务吗?是的,我可以手动打开和关闭它们,但是更容易切换VM.
客户端
如果我想向客户展示我已完成的一些网络工作,我可以只将一个虚拟机放入DMZ,他可以登录虚拟机并使用网络项目,而我的网络/计算机的其余部分是安全的.
兼容性
Vista64现在是我的主机.我拥有的任何旧硬件/软件都无法与该操作系统很好地配合使用.我的解决方案是将Windows XP 32作为所有这些项目的VM.
这是尚未提及的内容.
每当项目进入维护模式(也就是放弃)时,我都会创建一个包含构建项目所需的所有工具,库和源代码的VM.这样,如果一年后我不得不回到它,我不会在工作站上的任何升级工具或库中打赌.
当我开始在我现在的公司工作时,大多数支持/开发/工作人员都会在桌面上运行带有1-3个虚拟机的Virtual PC进行测试.
几个月后,我整理了一份提案,现在我们使用运行虚拟机池(全天候全天候)的VMware ESXi服务器,具有不同的环境,以便我们的支持人员测试客户问题并重现问题.我们安装了Windows 2000/XP/Vista的虚拟机,每个安装了Office 2000/2002/2003/2007(这是12个虚拟机)以及一些更通用的测试虚拟机,一些运行Citrix的Server 2003/2008计算机,终端服务等.基本上大多数情况下,当我们遇到需要调试的新客户配置时,可能其他客户也有这种配置,我会为它设置一个VM.(例如,我们目前只使用三个64位虚拟机 - 大多数是32位)
最重要的是,同一台服务器运行的XP VM用于构建安装程序(InstallShield,WiX)调试(VS 2005)和本地化(Lingobit)以及我们的开发人员用于自动化测试的第二个VM(TestComplete).
已为开发和安装程序VM分配了更高的优先级,并且它们都配置为具有1Gb内存的双CPU VM.其余VM具有相同的优先级和256-1Gb RAM.
一切都在双四核Xeon上运行,其中8Gb RAM运行ESXi和硬件raid(4x1Tb RAID10)
投资仅略高于2.5万美元,我们将生产力提高了10倍(想象一下停机时间,而支持缺乏在桌面上安装旧版办公室以复制客户问题,或者我无法使用桌面的时间,因为我们正在建立安装程序).下一步是将RAM加倍到16Gb,因为我们增加了更多内存饥渴的Server 2008和Vista VM.
我们的桌面上仍然有奇怪的虚拟机(例如,我已经在VMware Workstation下运行了本地化版本的Windows,Ubuntu和Windows 7)但是常用/大量使用的配置已经卸载到我们可以远程连接的专用服务器上成.更容易,更容易.
虚拟化(使用快照或非永久性磁盘)对于在已知的干净配置中测试软件安装非常有用(即,以前的软件安装过程中没有遗留任何内容).
将开发框放在单个文件(使用虚拟机)上可以在出现问题时更轻松地进行备份和恢复.
除此之外,您还可以将便携式开发盒放在不同的机器上,因为您不会受限于您经常使用的那台特定机器.
不仅如此,您还可以同时在不同的操作系统上进行测试,在每个虚拟机文件上安装一个操作系统.
相信我,这将在我上面提到的工作时节省相当麻烦.
VM的另一个好用例是创建虚拟机器网络.例如,您可以启动运行应用程序堆栈不同层的计算机,每个计算机都运行在自己的VM中.把它想象成一个穷人的数据中心.
这些虚拟机也可以在您的物理网络上显示,因此您可以使用RDP或类似虚拟机与它们进行远程终端会话.
你可以拥有一台运行这些虚拟机的强大机器(大量内存),同时从另一台机器(如笔记本电脑)远程访问它们,或者使用最佳屏幕的任何一台机器.