博客 · Guides

云 Mac 与 Mac VPS 有什么区别?

独占云 Mac 和 macOS VPS 听起来差不多,实际表现却不同。本文从性能、GPU 访问、Xcode、隔离性和成本几方面对比两者。

云 Mac 和 Mac VPS 都能给你远程的 macOS,但前者是一整台物理机,后者是共享硬件的虚拟机。这一差别决定了性能、GPU 访问、Xcode 表现、隔离性和成本。

先把概念说清楚

这两个词经常被混用,有必要先厘清。

  • 云 Mac(独占)。放在托管机房里、分配给单一客户的物理 Mac mini 或 Mac Studio。macOS 直接跑在硬件上,所有核心、完整 GPU 和整块 SSD 都归你。
  • Mac VPS(虚拟)。运行在 Mac 宿主机上的 macOS 虚拟机。宿主机的 CPU、内存和存储被分给一个或多个客户机,你拿到的是其中一份,部分设备是虚拟的。

市面上有些“macOS VPS”把 macOS 跑在非 Apple 硬件上。Apple 许可不允许这样做,而且这类环境系统一更新就容易出问题,也缺乏可用的 GPU 支持。本文只讨论在正品 Apple 硬件上虚拟化 macOS 的情况。

macOS 在 Apple 硬件上如何虚拟化

在 Apple 芯片上,macOS 虚拟机基于 Apple 的 Virtualization 框架,底层是 macOS 内置的虚拟机管理程序。UTM、Tart、Parallels Desktop 以及各种商业编排平台都构建在它之上。客户机启动快,可以从模板克隆,任务结束即可销毁,这正是虚拟 macOS 在一次性 CI 中流行的原因。

许可条款决定了它能走多远。按我们的理解,Apple 的 macOS 许可允许每台 Mac 在宿主系统之外,最多在虚拟机中再运行两份 macOS;同时允许将 Mac 租给单一客户,最短租期为 24 小时。实际含义是:服务商无法像 Linux VPS 那样在一台宿主机上合规地塞进大量 macOS 租户,而面向单一客户的租用至少以 24 小时起算。不同版本的 macOS 许可条款可能有变化,如果这对你的项目很重要,请阅读最新原文;本文不构成法律意见。

性能

Apple 芯片上的虚拟化效率很高,配置得当时 CPU 密集型任务在虚拟机中接近原生速度。差异主要体现在别处:

  • 资源共享。两个客户机共用一台宿主机时,会共享核心、内存带宽和 SSD 吞吐。邻居忙起来,你就会变慢。
  • 固定分配。虚拟机只分到固定数量的核心和内存。内存往往更紧张,因为宿主机自己也要占一份。
  • 存储。虚拟磁盘在文件和 SSD 之间多加了一层。对 I/O 密集的工作,比如带 DerivedData 的大型 Xcode 构建,差距可能很明显。

独占 Mac 没有这些变量,构建时间可重复,更容易发现自己代码中的性能回退。

GPU 与 Metal 访问

这是实际使用中最大的差别。macOS 客户机无法直接访问宿主机 GPU,Apple 的 Virtualization 框架提供的是一个半虚拟化图形设备,向客户机暴露 Metal。日常桌面和很多应用够用,但无法发挥硬件完整的 GPU 性能和功能。

这会影响:

  • 依赖 Metal 加速的大模型推理,比如 Ollama、llama.cpp 或 MLX。
  • GPU 渲染、视频特效和游戏引擎开发。
  • 需要与真机行为一致的 Metal 相关测试。

如果这些是你的核心工作,独占 Mac 更稳妥。依赖 GPU 的典型例子可以看在 Mac mini 服务器上运行 Ollama。

Xcode 与模拟器表现

Xcode 可以在 macOS 虚拟机中运行,编译、签名和上传构建一般都没问题。有几点需要了解:

  • 模拟器。iOS 模拟器可以在虚拟机中运行,但会与客户机争抢有限的内存和 GPU。并行跑多个模拟器时,虚拟机最先吃力。
  • Apple 账户登录。在虚拟机中登录 Apple 账户过去一直受限,近几个 macOS 版本有所改善。依赖它的功能,比如部分 iCloud 和 App Store 流程,表现仍可能不同。
  • 真机连接。无论哪种方式,给托管机器连接真实 iPhone 都不太现实,真机测试请规划使用模拟器或设备云。
  • 磁盘空间。Xcode、模拟器运行时和 DerivedData 非常占空间,虚拟机镜像往往分配得很紧,务必确认实际可用容量。

在独占 Mac 上,Xcode 的表现和你桌上那台 Mac 完全一样,因为它本来就是一台真正的 Mac。常见配置见 Xcode 构建服务器。

隔离与安全

虚拟机是很强的隔离边界,逃逸漏洞很少见。但虚拟机毕竟共享物理硬件,客户机之间的侧信道攻击是任何共享平台都存在的一类已知风险。独占 Mac 直接消除了这类风险:机器上不会运行其他客户的代码。

虚拟机也有一个安全优势:每次任务后销毁的临时虚拟机不会给下一个任务留下任何东西。在独占 Mac 上,稍加注意也能达到同样效果:任务之间清理工作目录、使用独立用户账户、把密钥放在钥匙串或 CI 系统中而不是磁盘上。

成本

由于许可限制了每台宿主机能运行的 macOS 客户机数量,虚拟 macOS 远没有 Linux VPS 那么便宜。共享硬件上的虚拟机通常比整台机器便宜一些,最低期限之后按小时计费也适合短时突发任务。但对于每天都要用的机器,按月或按年租用独占 Mac 往往同样有竞争力。在 Hatmac,独占 Mac mini 12 个月周期起价 $119/月。更详细的对比见 Mac mini 托管成本指南。

对比一览

方面独占云 MacMac VPS(macOS 虚拟机)
硬件整台物理 Mac宿主机的一部分
CPU 性能原生、稳定接近原生,可能受邻居影响
GPU / Metal完整访问半虚拟化,有限制
内存全部可用固定分配
Xcode 与模拟器与本地 Mac 完全一致可用,但受资源限制
恢复干净状态手动或脚本化快照或克隆,速度快
隔离物理隔离虚拟机管理程序隔离
常见计费按月或按周期按小时或按月,每次租用最少 24 小时

各自适合什么场景

适合选 Mac VPS 的情况

  • 需要短生命周期、用完即弃的构建环境,并且有能力编排。
  • 任务以 CPU 为主,不依赖 Metal。
  • 只是偶尔需要 Mac 测试,希望入门成本最低。

适合选独占云 Mac 的情况

  • 每天都跑 CI,希望构建时间稳定、缓存常驻。
  • 需要用 GPU:大模型推理、渲染、视频或 Metal 测试。
  • 想要一台和本地 Mac 一样好用的完整远程桌面。
  • 希望与其他客户物理隔离。

两者也可以结合:在许可范围内,在独占 Mac 上自己运行虚拟机处理一次性任务,同时完全掌控宿主机。详见独占 Mac 服务器。

常见问题

云 Mac 和 Mac VPS 有什么区别?

独占意义上的云 Mac 是分配给你的整台物理 Mac,Mac VPS 是共享 Mac 宿主机的 macOS 虚拟机。独占 Mac 可以完整使用 GPU,性能也更稳定。

Hatmac 的机器是虚拟机吗?

不是。每台机器都是分配给单一客户的独占物理 Mac mini 或 Mac Studio。

能在租用的独占 Mac 上运行 macOS 虚拟机吗?

可以。机器由你掌控,可以使用基于 Apple Virtualization 框架的工具,但请遵守许可中关于额外 macOS 副本数量的限制。

cloud macmac vpsmacos virtualisationdedicated macxcode