在PC上开发VM的优缺点

时间:2008-10-03 15:46:31

标签: development-environment virtual-machine environment

我最近建立了自己的半充电PC(Q9450,8GB DDR2 1066,1TB HDD,双8600GT,Vista Ultimate和双22'监视器),我正在评估我是否应该在VPC / VMWare会话上进行开发或不是Vista?

我可以看到的一个好处是我可以在我的Vista笔记本电脑上运行相同的VM,因此我的任何机器上的开发环境都是相同的。我还计划在今年年底之前购买MBP。

在线发现了一些半帮助Here

的文章

任何其他想法都会非常感激吗?

14 个答案:

答案 0 :(得分:5)

对于webdevelopment,我喜欢将serverpart分配到VM中。我目前的设置是Macbook Pro,里面有几个Debian VM。我喜欢它的隔离方面。我可以在服务器上尝试新的软件,并且如果出现问题,我们可以将它们还原。

我通过主机系统上的Textmate中的network-share(samba)进行编程。

答案 1 :(得分:5)

VM的另一个优点是拥有干净的安装基础。除了开发之外,我还使用台式机和笔记本电脑做很多事情。你永远都不知道你安装的软件什么时候会发生冲突,或者你的小调整以及你不玩的东西会破坏你的操作系统。重新安装/配置所有工具,使它们完全符合您的需要,可能需要相当长的时间。如果您拥有开发虚拟机映像的备份,则可以根据需要尽可能地弄乱您的PC,但仍然可以在没有停机的情况下进行编码。它还允许您在一个您不喜欢Linux或MacOS的盒子上运行Win / Visual Studio / Etc。

您还可以制作同一图像的多个副本,并将每个副本用于单独的项目。

能够在笔记本电脑/台式机/服务器/远程连接之间进行转换,并始终处于相同的环境中也非常有帮助。

答案 2 :(得分:3)

我发现的一个问题(至少在使用VMWare服务器时)是,无论您的机器有多快,屏幕刷新率仍然在~30hz左右。在使用它一段时间后,这会产生一种轻微不愉快的体验。

答案 3 :(得分:3)

我现在正在工作的地方,我使用VM进行所有开发,因为我没有XP基本副本的管理员权限。

优点: 我喜欢使用虚拟机,因为它为您提供了一些灵活性 - 您可以在机器之间切换 - 在两者上运行程序并且有一个很酷的环境可以使用。

缺点:
您必须启动多个操作系统。这需要时间,记忆和资源。

VM上的剪贴板操作有时会很有趣。有时复制到剪贴板不起作用或在VM之间混淆。 (使用VMWare)。

插入USB驱动器和其他外部设备时,文件操作会很有趣。 VM有时看不到设备,有时也看不到。

如果您的VM映像损坏 - 您可以轻松地丢失其中的所有内容....除非它已备份.....

答案 4 :(得分:2)

非常适合展示开发讲座,您可以恢复快照,并在每次完全相同的起点上发表演讲。

答案 5 :(得分:1)

如果将使用VMWare,则在未来的MacBookPro上填充RAM。我还没有(还)和其他几个(mac-side)应用程序的性能开放真的开始变得迟钝。

一切顺利。

答案 6 :(得分:1)

我最近在Visual Studio上使用Windows XP vm在Linux上做了一些工作,不知怎样,制作vm(vmware)的人让Windows机器运行得更快。我们做了一些时间测试以确保并且它不是主要的,但是一些事情(例如自动完成)确实弹出得更快。

答案 7 :(得分:1)

如果您使用的是Windows,Virtual PC对于开发工作来说非常不错。 VMWare虚拟服务器并非真正设计用作桌面,任何长时间使用都会让您感到厌倦。 Sun的VirtualBox是另一个与Virtual PC竞争的选择。 VMWare有一个工作站产品,但它不是免费的。

通常,我在真实桌面(非虚拟)上进行开发,然后部署或测试虚拟机,我可以轻松快照和回滚。

答案 8 :(得分:1)

很长一段时间以来,我们一直在开发Visual Studio 2005的早期版本以及随之而来的相关.Net位。为了保护我们的真机免受与预发布软件相关的各种问题的影响,我们在虚拟机内完成了所有开发工作。它运作得非常好。我一直在考虑回到那个模型,因为它使物理硬件升级变得轻而易举(更不用说只需更换整个机器就可以更轻松地处理硬件故障):你只需复制VM映像。

在我当前的计算机(具有4GB RAM的Core2Duo)上,运行一个VM时性能下降几乎不明显。但是,运行两个虚拟机很痛苦。

我也无法弄清楚如何让VMWare Server更好地在两台显示器上工作。

答案 9 :(得分:1)

我不想在虚拟机中开发虚拟机中的测试内容。例如,设置一个VM来模拟n层架构,或者客户端 - 服务器设置或者最后只是在多个操作系统上测试代码可能会很不错

答案 10 :(得分:0)

这取决于你正在开发什么,用什么语言。

VM在磁盘访问方面受到了相当大的打击,因此编译可能会显着减慢,特别是对于大型C / C ++项目。不确定这是否会成为.NET / Java的问题。

如果你正在做任何图形密集型的事情(3D,视频等),那么我也会避开虚拟机。

答案 11 :(得分:0)

我不知道它是否像开发平台那么有用,除非你做的事情与你不希望在常规工作机器上安装的软件有关,或者需要解决某个特定事件的问题需要能够定期重置。当您使用可能导致计算机崩溃的代码时,它也会非常方便,因为它至少会使您的VM崩溃。

测试不同的配置和设置 - 使用安装程序等等,这是非常出色的,就我所关注的虚拟化而言,能够在需要时回滚并重复运行的东西是令人惊讶的用于在最终用户遇到问题之前识别问题。

答案 12 :(得分:0)

在家中进行开发时,我必须通过VPN连接到我的公司才能使用Intranet上的协作工具。我还有一台桌面+笔记本电脑通过Synergy连接在一起。

我遇到的问题是我们的VPN软件希望事情变得如此安全,以至于它会通过VPN网关强制所有网络路由 - 即使我使用额外的NIC通过单独的私有网络来连接我的桌​​面和笔记本电脑网络。最终的结果是我不能同时在台式机和笔记本电脑之间使用Synergy和VPN进入我的公司。

一位同事向我建议的解决方案是在我的桌面上设置一个VM实例,并将其用于我所有的VPN需求。像魅力一样工作!

答案 13 :(得分:0)

根据在Windows 7上的Ubuntu VM中开发java的个人经验,我发现这非常有效。主要是因为我当地的本地IT支持支持Windows 7,所以我可以做一些事情,比如访问Windows中的所有本地文件共享和打印机,然后将我的Ubuntu VM配置到我心中。

围绕远程访问和桌面共享实现巨大的生产力优势。 Windows允许我非常快速,轻松地使用logmein.com和join.me等工具从家里访问我的机器,并与桌面上的其他人共享VM(两者都可以在几乎全屏的窗口中与VM无缝协作) 。 Linux上不支持这些服务,我也不想在Ubuntu上处理所有相关的VNC / X设置和网络配置。

我的机器相当健壮。四核,16Gb RAM - VM的8Gb。 VM中的Java开发非常快。