在虚拟机和双系统设置之间做决定

我想设置一台电脑,大部分时间运行Ubuntu,但也需要运行XP来使用特定的应用程序和进行测试。过去,我会简单地设置一个双启动的机器,然后根据需要重新启动并进入Windows XP。
然而,由于这台机器有多个核心和大量内存,我认为可以使用Virtual Box、Xen或VMWare虚拟化软件。我考虑将Ubuntu作为“主机”虚拟机,将XP作为“客户机”虚拟机。这对于测试/调试/开发来说尤其方便,因为可以同时在两个操作系统中运行应用程序。我以前从未设置过虚拟机,通过提出以下问题,我希望能避免一些试错。
基本上,我需要决定双启动还是虚拟机设置更适合我想做的事情。
以下是我的问题:
1. 我并不总是需要运行XP。虚拟机管理程序是否允许我关闭客户机虚拟机,以便主机虚拟机可以立即使用所有内存和处理器资源?当我再次启动客户机虚拟机时,是否容易配置它所使用的内存和其他资源的数量?理想情况下,我希望能提前预配置这些,并且在不考虑的情况下切换客户机虚拟机的开/关状态。
2. 主机操作系统为64位,客户机操作系统为32位是否可行或建议?或者,如果两个虚拟机都是32位的,并且我有8G的内存,当它们同时运行时,虚拟机管理程序是否可以为每个虚拟机分配4G的内存?
3. 哪种虚拟机管理程序最适合我描述的设置?

如果您使用XP作为主机操作系统,VMware更好。如果您使用Ubuntu作为主机操作系统,Virtual Box更好。 - Curious Apprentice
4个回答

从我的经验来看,在虚拟机中运行一个不常用的操作系统是个好主意。这样可以避免重新启动,并且方便在两个世界之间进行数据交换。作为一个经验法则,我们应该将我们最常使用的操作系统作为主机操作系统,以运行我们不常用的客户操作系统。
就我个人而言,我只能对Virtual Box发表意见,因为我对其他解决方案了解甚少。然而,Virtual Box稳定、免费,并且跨平台可用。我推荐使用它。
虚拟机的优缺点已经在this answer中总结,所以我就不在这里重复了。
另外还有一件事:如果你开发软件,你可能会发现在虚拟机中让错误自由发展是相当不错的。
回答你的问题:
  1. 是的,您可以关闭客户操作系统以将所有资源返回给主机。您甚至可以保存机器的状态,在唤醒后继续工作。
  2. 架构并不重要。我在64位主机上运行64位和32位机器,它们感觉一样。如果您的处理器支持虚拟化(很可能支持),您甚至可以在32位主机上运行64位客户机。
  3. 这取决于非常具体的需求,其中一个解决方案在某些情况下可能更好 - 我们无法为所有方面提供建议。这些事情也可能随着时间的推移而发生变化。

试试看,它并不复杂,并且对Virtual Box的支持非常出色。

这是Virtual Box机器的内存使用示例:

enter image description here

左边是

  • 双核 AMD CPU 上的 Ubuntu 11.10 64 位操作系统,有两个用户登录,各种应用程序使用了 2.3 GiB 内存。
  • 一个运行 Windows XP 32 位操作系统,4 GiB RAM。
  • 第二个运行 Windows XP 32 位操作系统,1 GiB RAM。

1 GiB 的虚拟机被发送到位置 1 关闭,4 GiB 的虚拟机被发送到位置 2 关闭。

进一步增加虚拟机的内存大小导致交换空间的广泛使用,使系统几乎无响应。在我的系统中,不允许同时运行两个具有 4 GiB 内存的虚拟机(总共 8 GiB)。然后从 Virtual Box 管理器关闭了其中一台机器。


谢谢!关于一个人是否可以拥有8GB物理内存并同时为两个32位虚拟机分配4GB内存的问题,似乎有一些不同的答案。您对此有何看法? - Angelo
@Angelo:你可以自由地为一台机器分配任意数量的内存,但是你需要为主机留下一些内存来运行虚拟机。Virtual Box不允许将超过88%的内存分配给一台机器。 - Takkat
谢谢,是的,我明白虚拟机会有一些额外开销。我的问题是,如果我能够获得大量的物理内存(例如8GB或16GB),然后在同时运行时将最大可能的内存(4GB)分配给每个32位机器。从其他答案中听起来,32位虚拟机被限制在共享前4GB的物理内存上(我的问题可能不够清楚)。这是真的吗? - Angelo
@Angelo:根据我的测试(请参见编辑部分),只要你有足够的内存,你应该能够同时运行多个使用4 GiB的32位机器。 - Takkat

使用Virtualbox,您甚至可以在桌面或应用程序之间添加一个链接,以便立即启动XP虚拟机,并且您还可以轻松切换宿主和客户机。
关闭客户机后,宿主立即恢复其资源,因为虚拟机对系统来说就像应用程序一样。即使您正在运行虚拟机,如果它没有使用为其设计的所有内存,那么这些内存将动态分配给宿主。例如:如果您总共有8GB的内存,然后在客户机上设置了4GB的内存,但它只使用了2GB的进程,那么宿主将能够访问6GB的内存。
实际上,设置虚拟机的内存和其他资源非常容易,并且它们将在每次虚拟机启动时被记住。
在64位宿主上运行32位客户机没有问题,我每天都这样做。
甚至可以在32位宿主上运行32位客户机,完全没有问题。
另外,如果两个虚拟机都是32位的,并且我有8GB的RAM,当它们同时运行时,虚拟化程序是否可以为每个虚拟机提供4GB的RAM?
我真的不太明白那个问题,但是如果你有总共8GB的内存,你只能将其中一半(4GB)分配给你的虚拟机。如果你想同时运行多个虚拟机,你需要将4GB分割成你想要运行的虚拟机数量。
由于你是第一次使用,我建议你使用VM Virtualbox,它对于高级用户也很好用,所以你可以逐步学习和提升。你可以通过终端在官方软件库中安装它:
sudo apt-get install virtualbox
或者你也可以在Ubuntu软件中心查找它。
它具有非常用户友好的界面和简单易懂的向导,可以帮助你完成各种操作。
如果你需要,在虚拟机设置方面我很乐意提供支持。

谢谢!如果我理解正确,您的意思是说,如果我有多个32位虚拟机,它们被限制在使用同样的4GB物理内存的一部分? - Angelo
是的,没错,但只有在你想同时启动它们时才会如此。如果你计划逐个运行它们,它们可以拥有全部4GB的功率。 - neonboy

答案: A1:是的,VirtualBox可以模拟任何类型的计算机(只要满足硬件规格),甚至可以在32位计算机上模拟64位机器。因此,每当您启动虚拟机时,它将占用您在启动时设置的内存和虚拟磁盘空间。即使虚拟机没有使用全部分配的内存,主机机器也无法使用其中的空闲内存。因此,如果您具备足够强大的处理能力,甚至可以模拟其他处理器和显卡等设备,尽管这在大多数情况下并没有太多意义,并且您无法像监视本机一样轻松监视它们。当然,由于VirtualBox非常高效(除了内存问题),它在首次启动时(以及指定后的任何时间)会检查需要在启动时加载的驱动程序和其他组件,并尝试在每次启动时“预加载”它们,因此您的启动速度也会更快。
A2:是的,而且非常容易。不过,如果您有两个虚拟机,每个虚拟机占用一半的内存,您仍然需要大约50-100MB的内存供VirtualBox和主机在后台运行时使用。因此,每个虚拟机需要大约3.75GB的内存...
A3:当你说虚拟机监视器时,是指宿主操作系统还是VMWare与VirtualBox之间的比较?因为直截了当的答案是VMWare已经过时了,而VirtualBox则更加稳定。所以你必须决定是选择会崩溃和有bug但速度快的VMWare,还是高效稳定但运行时占用一些内存的VirtualBox...我个人更喜欢VirtualBox,但许多硬件性能不太好的人喜欢使用VMWare...你自己决定吧,尽管我建议如果你想要最小化运行进程的话,可以使用Ubuntu与openbox来进行双虚拟机操作...

谢谢!听起来VirtualBox或OpenBox可能适合强大的硬件。有人了解Xen吗? - Angelo
Xen不错,但Vbox更易于使用,并且与Windows XP具有很好的兼容性。 - neonboy
@TenorB,你是指VMWare的开源产品之一,还是商业产品(VMWare Workstation/Fusion)? - Angelo
@Angelo 开源 - TenorB
@Angelo VirtualBox和VMware是两个不同的产品。 - haziz

除非您需要在虚拟机上执行图形密集型任务,否则虚拟机将正常工作。我发现Virtual Box非常容易设置,适合您想要做的事情。您可以根据需要加载和卸载虚拟机。您可以轻松配置内存使用量,并调整分配给虚拟机的内存大小。最好使用64位主机,主机上有超过3GB的内存。如果您将XP用作虚拟机,它很可能是一个32位的虚拟机,效果非常好。
三个虚拟机管理器都很棒。Xen主要通过命令行进行配置。它非常强大,但可能有点令人生畏。VMware不是开源的,如果这对您很重要的话。Virtual Box运行良好且配置简单。某些功能需要专有的附加包,但通常不是必需的。
我唯一要警告您的是初始磁盘驱动器大小。在初始配置之后更改虚拟分区大小真的很困难。我建议您将其设置得比您认为所需的稍大一些。
简而言之,虚拟机非常方便。它绝对比双启动更方便。
祝您好运!