我只能谈论 Xen,因为我只使用 Virtualbox 在我的 Mac 桌面上虚拟化 Windows 机器。
正如其他人所提到的,Xen(和基于 Xen 的 XenServer)使用半虚拟化内核,显着提高了受 CPU 和内存限制的性能特征。但是,这只适用于具有专用内核的 Linux 主机。您需要一个 Xen-“启用”的内核才能利用这一点。
此外 - Windows 不支持以这种方式进行虚拟化,但它们各自 CPU 上的 Intel VT 和 AMD-V 扩展“捕捉”了 Windows 并使其以半虚拟化方式运行。Windows 2003 和 Windows 2000 永远不会意识到它们正在运行虚拟化,而另一方面,Windows 2008 会检测到这一点并以所谓的“开明”模式运行,这可以与 Linux 的“半虚拟化”模式进行比较。
Hamish Downer 的回答在最后一点上是错误的。Xen 可以运行未修改的来宾,但是它们必须作为完全虚拟化的 HVM 来宾运行。这样做需要主机具有 Intel VT 或支持 AMD-V 的 cpu 的硬件虚拟化支持。
Xen 和 Virtualbox 各有其一席之地,但它们是两种不同类型的虚拟机管理程序。Xen 是 Type 1 hypervisor,而 Virtualbox 是 Type 2 hypervisor。类型 1 管理程序往往是您在服务器环境中发现的,其中类型 2 管理程序往往更常见于运行您作为桌面交互的多个操作系统。我认为这主要是由于它们的简单性和更好的桌面集成。然而,类型 2 管理程序下的客户离底层硬件更远,并且往往比类型 1 管理程序下的客户慢。与所有事情一样,规则总会有例外。
Xen 通常会比 VirtualBox 执行得更好,因为 VirtualBox 以一种客户操作系统不知道它在虚拟环境中运行的方式运行客户操作系统。或者换句话说,客户操作系统没有被修改为虚拟运行。因此,VirtualBox 必须“捕获”内核类型指令,运行一些自定义代码,然后将控制权返回给来宾。它可以使用 Intel 和 AMD 提供的硬件虚拟化支持,但即便如此,开销也会增加。
Xen 同时确保客户操作系统被重新编译以适应 Xen 模型。因此,控制从客户操作系统顺利流向管理程序,无需假装客户操作系统直接访问硬件的开销。
有关许多虚拟化技术的概述,包括来自性能测试的数据,请阅读此报告。它只谈论 Linux,但它涵盖了 Linux-Vserver、Xen、OpenVZ、KVM、VirtualBox 和 QEMU。Linux-Vserver 和 Xen 通常表现最好,但请阅读报告以了解不同的工作负载。
综上所述,VirtualBox 在某些方面可能优于 Xen。如果您的客户操作系统具有图形窗口层,那么 VirtualBox 对此有很好的支持,特别是如果您在客户操作系统中安装了一些特殊的 VirtualBox 组件。
最后,您应该知道 Xen 只会运行经过修改的客户操作系统。它不能运行未经修改的客户操作系统。
我只能谈论 Xen,因为我只使用 Virtualbox 在我的 Mac 桌面上虚拟化 Windows 机器。
正如其他人所提到的,Xen(和基于 Xen 的 XenServer)使用半虚拟化内核,显着提高了受 CPU 和内存限制的性能特征。但是,这只适用于具有专用内核的 Linux 主机。您需要一个 Xen-“启用”的内核才能利用这一点。
此外 - Windows 不支持以这种方式进行虚拟化,但它们各自 CPU 上的 Intel VT 和 AMD-V 扩展“捕捉”了 Windows 并使其以半虚拟化方式运行。Windows 2003 和 Windows 2000 永远不会意识到它们正在运行虚拟化,而另一方面,Windows 2008 会检测到这一点并以所谓的“开明”模式运行,这可以与 Linux 的“半虚拟化”模式进行比较。