Apple的Virtualization framework思考

虚拟化技术对比

在macOS(iOS)上,有以下几个技术流派:

  • VirtualBox : 非常古老但仍然在持续开发的跨平台虚拟化技术,我记得是Sun公司收购的一家开源虚拟化公司,后来随Sun一起被Oracle收购,不过始终保持开源。我使用不多,因为主要 KVM 更适合云计算。

  • Studio环境中的VMware FusionParallels : 商业虚拟化软件,都非常著名,使用非常简便,缺点是需要不断升级才能适配(允许)在新版本macOS上运行。VMware Fusion现在已经免费,但Parallels依然收费(且昂贵)。

  • 基于 QEMU 技术的开源虚拟机 macOS平台QEMU实现:UTM : 由于采用了全能的QEMU,utm可以说能够在 macOS / iOS 系统上运行任何操作系统。但是带来的缺点是虚拟化开销很大,我尝试在第一代iPad Pro上使用UTM安装Linux缓慢到让我崩溃,所以我还是放弃了。

  • 基于从 bhyve(BSD hypervisor) 移植过来的 xhyve - macOS平台的KVM : 早期的macOS开源项目,类似于 KVM ,但是现在看起来随着 Apple Virtualization 发展, xhybe 已经停止开发了,我感觉在闭源的 macOS/iOS 上,这块开源极难推进,无法得到苹果生态的支持

  • 最后就是现在Apple公司持续在开发演进的 Apple Virtualization ,实际上甚至不需要安装任何虚拟机软件,在XCode中通过简单的代码调用就能够运行虚拟机,并且是原生虚拟化性能是最佳的。目前可以看到能够发挥 Apple Virtualization 性能的开源虚拟机软件是 Lima: Linux MachinesTart - 虚拟化工具集 :

    • Tart - 虚拟化工具集 是纯使用 Apple Virtualization 的开源软件,并且只支持 Apple Silicon 架构,也就是说理论上它是最轻量级(代码量少)最快速的(专注单一架构)。缺点是必须有最新的ARM架构的Apple设备

    • Lima: Linux Machines 是全能型虚拟化软件,也就是既支持 Apple Virtualization 又支持 QEMU :

      • 优点:

        • 所有的Apple设备都能运行,不管是Intel架构还是ARM架构,都能够运行各种操作系统,能支持VZ( Apple Virtualization )就用VZ,不能支持VZ就还是用传统的 QEMU

        • 如果你只运行 Linux 并且专注于容器,那么 Lima: Linux Machines 几乎就是最好的选择

      • 缺点:

        • 官方只支持Linux,虽然通过qemu也能运行 FreeBSD 甚至我觉得以qemu这样全能的虚拟软件运行 Windows 或者 macOS 也不是不行,但是这和裸运行QEMU已经没有区别,完全无法利用Lima定义开发的环境

        • 实践发现没有很好支持USB设备(只能通过QEMU手工处理)

选择

选择哪个虚拟化技术取决于你的物理设备和需要运行的虚拟机操作系统:

备注

目前实践以及社区开源实现都验证了, Apple Virtualization 正在逐步抛弃Intel架构支持,无法实现原生虚拟化运行 macOS ,现在仅仅能够原生运行 Linux 虚拟机。总之,硬件不升级的话选择会越来越狭窄。

我的选择

没有完美的唯一,所以我还是根据自己的需要进行组合选择:

参考