15

最近,虚拟化的热潮席卷了我的工作场所,开发人员在他们的计算机上尝试虚拟机。早些时候,我从几个不同的开发人员那里听到关于在他们的台式计算机中设置虚拟机以保持他们的开发环境清洁的消息。

市场上有很多虚拟机软件产品:

我很想知道您如何在工作中有效地使用虚拟化。我的问题是您如何使用虚拟机进行日常开发,出于什么原因?

4

12 回答 12

18

我刚刚在家里建造了一台真正强大的机器,这样我就可以一次运行多个虚拟机。我的情况可能很极端,但这是我这样做的逻辑。

测试

当我测试时,尤其是桌面应用程序,我通常会创建多个虚拟机,一个用于我的软件应该运行的每个平台(Windows 2000/XP/Vista 等)。如果有 32 位和 64 位版本可用,我也会分别构建一个。我还使用 VM 硬件设置(例如大量 RAM、少量 RAM、1 核、2 核等)。我通过这种方式发现了很多小错误,如果我不使用这种方法,那肯定会进入野外。

这种方法还可以轻松玩不同的软件场景(如果安装程序的用户没有 .NET 3.5 sp1 会发生什么?如果他没有 XXX 组件会发生什么?等等?

发展

当我开发时,我有一台运行我的数据库服务器(SQL2000/2005/2008)的虚拟机。这有两个原因。首先,它更现实。在生产环境中,您的应用程序可能不在与数据库相同的机器上运行。为什么不在开发时复制它?另外,当我不开发时(记住这也是我的家用机器),我真的需要运行所有这些数据库服务吗?是的,我可以手动打开和关闭它们,但打开虚拟机要容易得多。

客户

如果我想向客户展示我所做的一些 Web 工作,我可以只将一个 VM 放入 DMZ,他可以登录 VM 并使用 Web 项目,而我的网络/计算机的其余部分是安全的。

兼容性

Vista64 现在是我的主要机器。我拥有的任何较旧的硬件/软件都无法与该操作系统很好地配合使用。我的解决方案是让 Windows XP 32 作为所有这些项目的 VM。

于 2009-01-02T12:59:07.373 回答
9

这是尚未提及的内容。

每当一个项目进入维护模式(又名被放弃)时,我都会创建一个虚拟机,其中包含构建项目所需的所有工具、库和源代码。这样一来,如果我必须在一年后重新使用它,我就不会因为我工作站上的任何升级工具或库而赌一把。

于 2009-01-05T04:56:12.870 回答
6

当我开始在我现在的公司工作时,大多数支持/开发/PM 员工会在他们的桌面上运行带有 1-3 个 VM 的 Virtual PC 进行测试。

几个月后,我提出了一个建议,现在我们使用 VMware ESXi 服务器运行具有不同环境的虚拟机池(全部 24/7),以便我们的支持人员测试客户问题并重现问题。我们有 Windows 2000/XP/Vista 的虚拟机,每个都安装了 Office 2000/2002/2003/2007(所以有 12 个虚拟机)加上一些更通用的测试虚拟机,一些运行 Citrix、终端服务等的 Server 2003/2008 机器。基本上大多数时候,当我们遇到需要调试的新客户配置时,可能其他客户也有该配置,我会为它设置一个虚拟机。(例如,我们目前只使用三个 64 位虚拟机 - 主要是 32 位)

最重要的是,同一台服务器运行一个 XP VM,我用于构建安装程序(InstallShield、WiX)调试(VS 2005)和本地化(Lingobit)以及我们的开发人员用于自动化测试(TestComplete)的第二个 VM。

开发和安装 VM 被分配了更高的优先级,并且都配置为具有 1Gb 内存的双 CPU VM。其余 VM 具有相同的优先级和 256-1Gb RAM。

一切都在双四核 Xeon 上运行,8Gb RAM 运行 ESXi 和硬件 RAID (4x1Tb RAID10)

只需 2.5 万美元多一点的投资,我们就将工作效率提高了 10 倍(想象一下停机时间,而支持人员在他们的桌面上安装旧版本的 Office 以复制客户问题,或者我无法使用我的桌面的时间,因为我们正在构建安装程序)。随着我们添加更多需要内存的 Server 2008 和 Vista VM,下一步将把 RAM 翻倍至 16Gb。

我们的桌面上仍然有奇怪的虚拟机(例如,我在 VMware Workstation 下运行了 Windows、Ubuntu 和 Windows 7 的本地化版本),但常用/大量使用的配置已卸载到专用服务器,我们都可以远程连接进入。轻松多了。

于 2009-01-05T04:09:06.397 回答
5

虚拟化(使用快照或非永久性磁盘)对于在已知的干净配置中测试软件安装非常有用(即,以前安装的软件没有任何错误)。

于 2009-01-02T11:57:39.447 回答
5

将您的开发箱放在单个文件(带有虚拟机)上,如果出现问题,备份和恢复将变得更加容易。

除此之外,您还可以在不同的机器上携带便携式开发盒,因为您不受通常使用的特定机器的限制。

不仅如此,您还可以一次在不同的操作系统上进行测试,在您拥有的每个虚拟机文件上安装一个操作系统。

相信我,在做我上面提到的工作时,这会省去很多麻烦。

于 2009-01-02T12:03:01.857 回答
5

VM 的另一个不错的用例是创建机器的虚拟网络。例如,您可以启动运行应用程序堆栈的不同层的机器,每台机器都在自己的 VM 中运行。把它想象成一个穷人的数据中心。

这些虚拟机也可以出现在您的物理网络上,因此您可以使用 RDP 或类似方法与它们进行远程终端会话。

您可以拥有一台运行这些虚拟机的强大机器(大量内存),同时您可以从另一台机器(例如笔记本电脑)或您拥有的具有最佳屏幕的任何机器远程访问它们。

于 2009-01-02T15:18:18.187 回答
3

我使用 Windows 下的 VM 来运行 Linux。尽管已经有一个适用于 windows 的 emacs 版本,但出于某种原因,在 Linux 中使用它只是感觉更令人满意。

于 2009-01-02T12:46:05.857 回答
3

维护搁置的计算机

我的情况是,我所在地区的学校停课,但他们的财务系统必须维持长达 2 年,以确保支付所有未付账单。这过去是通过维护存在一些问题的封存学校的硬件来解决的:

  • 这浪费了稀缺的硬件资源,占用了大量的物理空间。
  • 财务人员必须亲自到硬件处才能在每个系统上工作。

今天,我在单个物理主机内的自己的虚拟盒子上托管每所被封存的学校。每个单独的系统都通过 rdp 在主机的 IP 号上访问,但有自己的端口号,保持每个学校原有的安全性。

财务人员现在可以在停产的学校工作,而无需前往他们实际所在的地方,服务器机房中有更多的物理空间,并且一次备份所有停产的学校是一个简单的自动化过程。

每个被封存的学校都在自己的 vbox 中,因此无法在系统之间交叉污染数据。价值数千美元的硬件也被释放出来用于重新部署。

虚拟化似乎是解决这个问题的完美解决方案。

于 2009-07-05T00:53:50.433 回答
2

当我面前的任务是测试 WebSphere Application Server 的集群环境时,我使用了使用 VMWare Server 的虚拟化方法。设置 VMWare 服务器后,我创建了一个新的虚拟机并安装了我需要的所有软件,如 WebSphere App Server、Oracle、WebSphere Commerce 等,之后我关闭了 VM,并将虚拟硬盘映像复制到两个不同的文件,一个作为克隆 VM,另一个作为备份。

创建了一个新 VM 并分配了一个复制的磁盘映像,因此我现在启动并运行了两个系统,这使我能够测试集群环境的相同场景。我通过 VMware 拍摄了 VM 的快照,如果我搞砸了任何活动,我会恢复对所拍摄快照的更改,从而恢复到以前的状态并提高我的工作效率,而不必找出要反转的内容。如果我需要恢复到非常旧的状态,也可以使用备份磁盘映像,而不必从头开始。

VMWare 和 Microsoft 的 Virtual PC/Server 中存在的快照功能足以在您认为可能会进行重大更改的情况下考虑虚拟化,而这些更改可能不容易恢复。

于 2009-01-02T12:25:41.857 回答
2

据我所知,Mac 上没有 Parallels 之类的东西,而是用于工作而不是测试。

集成(通过“连贯性”,您的虚拟机不在主机系统的“窗口”中运行,来宾系统中的所有程序在主机系统中都有其适当的窗口)非常出色,让您填补所有(全部!)空白:
我的同事已配置当他单击网页上的“mailto:”链接时,Windows 中的 Outlook(MacOsX 中没有 Outlook)会弹出,在 Mac 上使用 Firefox 浏览!
在另一个方向上,如果他要发送 PDF,他会在 Outlook(在 Windows 中)中双击附件,这会在 Mac 内置 PDF 查看器中打开 PDF 文件。

VirtualBox 还提供了这种窗口分离的可能性(至少当 windows 在 Linux 上的 VM 中运行时),这对工作非常有用。

当然,对于测试等,没有什么比干净分离的环境更好的了。

于 2009-01-02T15:55:29.343 回答
2

我们有一个物理服务器,专门用于在我们的开发环境中托管虚拟机。虚拟机定期启动和拆除,用于在已知的标准操作环境上测试软件。

当我们希望应用程序在与开发环境不同的域上运行时,它也非常有用。

此外,我工作的组织正处于规划阶段,以创建一个大型虚拟测试场。这将是一个巨大的机器网格,位于它自己的网络上,所有组织的内部员工、承包商和第三方供应商将能够在实施到生产环境之前将他们的软件用于测试目的。虚拟机将反映生产环境中的物理机。

听起来不错,但每个人都有点怀疑:这是一个政府组织……官僚主义和繁文缛节可能会变成浪费时间和金钱。

于 2009-01-05T05:12:21.137 回答
1

如果我们使用虚拟机(vpc 2007、Virtual Server 2005、VMWare 应用程序等)

1.我们可以在一台服务器上运行多个操作系统(windows98,2000,XP,Vista,Windows Server 2003,2008,Windows 7/linux/solaris)

2.我们可以降低硬件成本和数据中心空间

3.我们可以降低电源和交流冷却成本。

4.我们可以减少管理资源,

5.我们可以降低申请成本

6.我们可以运行ADS/DNS/DHCP/Exchange/SQL/Sharepoint Server/File Server...等

于 2009-12-08T10:41:31.733 回答