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

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

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

有帮助吗?

解决方案

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

测试

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

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

发展

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

客户

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

兼容性

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

其他提示

这是尚未提及的事情。

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

当我开始在当前的公司工作时,大多数支持/开发/PM 员工都会在桌面上运行带有 1-3 个虚拟机的 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。

开发和安装程序虚拟机已被分配更高的优先级,并且均配置为具有 1Gb 内存的双 CPU 虚拟机。其余虚拟机具有相同的优先级和 256-1Gb RAM。

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

只需超过 2500 美元的投资,我们就将生产力提高了 10 倍(想象一下当支持人员在其桌面上安装旧版本的 Office 来重现客户问题时的停机时间,或者我无法使用桌面的时间,因为我们正在构建安装程序)。下一步是将 RAM 加倍至 16Gb,因为我们添加了更多占用内存的 Server 2008 和 Vista VM。

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

虚拟化(使用快照或非持久磁盘)对于在已知的干净配置(即,以前安装的软件有缺陷时没有留下任何痕迹)。

将您的开发盒放在单个文件上(使用虚拟机)将使事情变得更加重要 更容易备份和恢复 如果出现问题。

除此之外,你还可以 携带您的便携式开发盒 围绕不同的机器,因为您不受通常工作的那台特定机器的限制。

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

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

虚拟机的另一个很好的用例是创建机器的虚拟网络。例如,您可以启动运行应用程序堆栈不同层的计算机,每个计算机都在自己的虚拟机中运行。将其视为穷人的数据中心。

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

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

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

维护搁置的计算机

我遇到的情况是,我所在地区的学校已关闭,但其财务系统必须维持长达 2 年,以确保支付所有未清账单。这过去是通过维护硬件来处理的 封存的 存在一些问题的学校:

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

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

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

由于每所封存的学校都有自己的 vbox,因此系统之间的数据无法交叉污染。价值数千美元的硬件也被释放以供重新部署。

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

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

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

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

据我所知,Mac 上的 Parallels 没有什么比它更适合工作而不是测试的了。

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

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

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

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

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

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

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

如果我们使用虚拟机(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...等

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top