适用故障:
data.img.raw、no space left on device、数据目录位于 HFS+
适用场景:旧容器、镜像、卷和 Linux VM 数据不需要保留
文档版本:1.0(2026-07-23)
1. 核心结论
当 OrbStack 的数据映像位于 HFS+ 时,即使磁盘仍有大量空闲空间,也可能因为无法按预期扩展稀疏数据映像而报:
1 | failed to lock data: resize data image: grow data image: |
修复重点是:
- 将 OrbStack 数据目录迁移到 APFS;
- 让 OrbStack 把新目录写入正式配置;
- 冷启动并验证服务、Docker 和日志;
- 确认稳定后,再清理旧数据。
本次已验证环境:
| 项目 | 内容 |
|---|---|
| macOS | 14.4(23E214) |
| OrbStack | 2.2.1 |
| 旧数据路径 | /Users/dev/Library/Group Containers/HUAQ24HBR6.dev.orbstack/data |
| 新数据路径 | /Users/Shared/OrbStackData |
2. 安全边界
本流程会得到一个空白的 OrbStack 环境。继续前,请确认:
- Docker volume 中没有需要保留的数据库;
- 没有未导出的唯一镜像;
- Linux VM 中没有唯一文件;
/Users/Shared位于 APFS 卷,并且有足够空间;- 旧数据先移动到废纸篓,不立即永久删除。
[!WARNING]
如果旧数据需要保留,不要执行本文的“隔离旧数据”步骤。应先备份映像,再采用数据保留恢复方案。
3. 快速诊断
3.1 典型日志
1 | phase=lock_data_image |
3.2 只读检查
1 | df -h "$HOME" |
判断方法:
| 观察项 | 本次案例 | 含义 |
|---|---|---|
| 可用空间 | 约 189 GiB | 不是普通意义上的磁盘已满 |
| inode | 充足 | 不是 inode 耗尽 |
| 旧数据卷 | Journaled HFS+ | 不适合作为最终数据映像位置 |
data.img.raw |
逻辑大小与占用均约 1 GiB | 映像可能被截短或已失去稀疏布局 |
| raw wait status | 256 / 0x100 |
子进程退出码为 1,不是退出码 256 |
如果 df 显示空间充足,但数据路径位于 HFS+,并且错误发生在 lock_data_image 阶段,基本可以按本文处理。
4. 根因说明
- OrbStack 启动时检查并锁定
data.img.raw。 - 它发现映像逻辑容量不足,尝试扩展数据映像。
- 旧路径位于 HFS+,扩展动作无法按所需方式完成,底层
truncate返回ENOSPC。 - VM 管理器以退出码 1 结束,界面显示
Stopped unexpectedly: failed to start。
因此,no space left on device 不一定表示整个磁盘真的没有空间。还需要检查数据所在的文件系统,以及映像的逻辑大小和实际占用。
5. 完整修复流程(不保留旧数据)
以下命令按本机默认安装路径编写。换用户、换电脑或更改安装方式后,先确认路径。
步骤 1:停止 OrbStack
1 | orb stop 2>/dev/null || true |
步骤 2:创建 APFS 数据目录
1 | orbstack_apfs_data="/Users/Shared/OrbStackData" |
确认输出中的文件系统为 APFS。
如果目录不是当前用户所有,先检查实际目标:
1 | ls -ld "/Users/Shared/OrbStackData" |
确认无误后,只修正该目录自身:
1 | sudo chown "$(id -un)":staff "/Users/Shared/OrbStackData" |
[!CAUTION]
不要对/Users/Shared或其他系统目录递归修改权限。
步骤 3:隔离旧数据并建立临时引导链接
OrbStack 服务未运行时,Storage 页面可能只显示 Service Not Running,无法直接选择位置。先让默认路径临时指向 APFS 目录,以便启动服务。
1 | orbstack_group_data="$HOME/Library/Group Containers/HUAQ24HBR6.dev.orbstack/data" |
[!WARNING]
如果检查失败,不要继续执行mv。这通常表示该机器已经修复过,或路径与本文不同。
步骤 4:启动服务
1 | open -a OrbStack |
首次初始化可能需要一些时间。如果命令提示超时,等待几秒后重新执行:
1 | orb status |
步骤 5:通过界面写入正式存储配置
服务显示 Running 后:
- 打开 OrbStack → Settings…;
- 左侧选择 Storage;
- 在 Data → Location 中选择 Other…;
- 选择
/Users/Shared/OrbStackData; - 点击 Apply and Restart。
检查正式配置:
1 | sed -n '1,40p' "$HOME/.orbstack/vmconfig.json" |
期望包含:
1 | { |
步骤 6:移除临时链接并冷启动验证
只有确认 vmconfig.json 已指向新目录后,才执行:
1 | orbstack_group_data="$HOME/Library/Group Containers/HUAQ24HBR6.dev.orbstack/data" |
unlink 只移除链接本身,不会删除 /Users/Shared/OrbStackData 中的数据。
通过标准:默认 group-container 数据路径即使已经不存在,OrbStack 仍能根据 vmconfig.json 从 APFS 路径启动,并显示 Running。
6. 验证清单
依次执行:
1 | orb status |
检查结果:
| 检查项 | 期望结果 | 失败时处理 |
|---|---|---|
orb status |
Running |
查看 vmgr.log 是否仍引用旧 HFS+ 路径 |
orb doctor |
All checks passed |
按警告逐项处理 |
docker info |
能读取 ServerVersion | 等待 5–20 秒后重试,并确认 Docker context |
vmconfig.json |
data_dir 指向新目录 |
在 Settings → Storage 中重新应用位置 |
| 数据文件 | data.img.raw、swap.img 位于新目录 |
检查目录权限和 APFS 可用空间 |
| 启动日志 | 关键阶段均为 complete,没有 fatal |
定位第一条 fatal,不要只看 GUI 摘要 |
日志检查:
1 | tail -160 "$HOME/.orbstack/log/vmgr.log" | |
正常情况下,应看到以下阶段完成:
lock_data_imagestart_vmnotify_gui_ready
7. 常见问题
Storage 页面只显示 Service Not Running
设置页依赖 VM 服务读取状态。按步骤 3 建立临时引导链接,让服务先从 APFS 目录启动。
orb config set dataDir 未生效
该命令可能先尝试连接或启动 VM,故障状态下无法完成。使用 GUI 的 Storage → Location,最后以 vmconfig.json 为准。
orb start 报超时,但稍后显示 Running
首次初始化映像和服务耗时较长。等待几秒后重新检查:
1 | orb status |
日志仍引用旧 group-container 路径
正式的 data_dir 尚未写入或应用。先保留临时链接,在界面中重新选择新位置并点击 Apply and Restart。
新目录报 Permission denied
检查:
1 | ls -ld "/Users/Shared/OrbStackData" |
只修正目标目录自身,不要递归修改系统目录。
APFS 目录也显示空间不足
系统 APFS 卷可能确实空间不足。先释放该卷空间,再重试;不要把 OrbStack 数据移回 HFS+。
8. 旧数据、回退与清理
旧数据位于:
1 | ~/.Trash/OrbStack-data-before-apfs-时间戳 |
在清空废纸篓前,旧目录仍可恢复。清空后通常不可恢复。
如果临时改变主意,应把旧映像复制到 APFS 位置进行专门恢复,不要直接移回 HFS+ 后继续启动。
确认新环境稳定后,可以在 Finder 中清空废纸篓以释放空间。
[!CAUTION]
不要因为data.img.raw显示的逻辑大小很大就直接删除它。该文件通常是稀疏文件,应以du显示的实际占用为准。
9. 本次处理结果
- OrbStack 状态:
Running - Docker Server:
29.4.0 - 容器 / 镜像:
0 / 0 - 正式
data_dir:/Users/Shared/OrbStackData - APFS 可用空间:约 195 GiB(处理时)
- 新 OrbStack 数据实际占用:约 6.5 MiB(处理完成时)
- 最新启动日志无
fatal lock_data_image、start_vm、notify_gui_ready均完成
旧数据仍在废纸篓中:
1 | /Users/dev/.Trash/OrbStack-data-before-apfs-2026-07-23-1509 |