Skip to content
AlexSite
Go back

RCA:DocumentServer 在 WSL 中拉取失败引发缓存膨胀和磁盘压力

概要

2026 年 5 月 31 日,在 WSL 里反复拉取 ghcr.io/euro-office/documentserver:latest 时,镜像始终没有成功完成。重试过程中,大量临时容器存储累积在 WSL 内部,尤其是 /tmp/podroot/vfs 以及相关路径,进一步撑大了 WSL 的虚拟磁盘 ext4.vhdx,并占用了宿主机 C: 盘的可用空间。

影响

发现方式

时间线

  1. 在 WSL 中通过 Podman 开始拉取 ghcr.io/euro-office/documentserver:latest
  2. 拉取过程多次卡住,期间尝试了自定义 vfs 路径和默认 overlay 路径。
  3. 临时层和缓存文件大量堆积在 /tmp/podroot*/var/tmp/storage*
  4. 在 WSL 内部清理后,删除了约 72 GB 的临时数据。
  5. 但宿主机空间并没有立刻恢复,因为 ext4.vhdx 仍然保持扩容后的大小。
  6. 通过 wsl --shutdowndiskpart compact vdisk 的流程压缩了 WSL VHDX。
  7. 宿主机空间恢复,C: 盘可用空间回到约 237.29 GBext4.vhdx 缩回到约 8.71 GB

根因

主要根因:

促成因素:

处理结果

  1. 停掉了卡住的拉取进程。
  2. 删除了 /tmp/podroot*/tmp/podrun* 以及 /var/tmp/storage* 下与失败拉取相关的临时文件。
  3. 确认 WSL 内部占用从约 81 GB 降到了 6.8-8.4 GB 区间。
  4. 在宿主机上对 WSL 磁盘文件执行压缩,恢复了 Windows 文件系统中的已释放空间。

预防和改进

  1. 除非确有强制需求,避免在大镜像拉取场景下强行使用 --storage-driver=vfs
  2. 在拉取大镜像前增加预检查:
    • WSL 内部和宿主机剩余空间
    • 容器运行时健康状态
    • Registry 连通性和认证行为
  3. 遇到失败或卡住的拉取任务时,标准化清理流程:
    • 停掉卡住的运行时进程
    • 清理已知临时和缓存路径
    • 检查镜像和容器状态
    • 必要时压缩 WSL VHDX
  4. 如果在 WSL 中反复遇到大 OCI 镜像卡顿,可以考虑升级 Podman 或相关运行时栈。

恢复后的验证


Share this post:

Previous Post
Copilot Studio 里 No authentication 无法发布的问题总结
Next Post
为什么不建议在 VPS 上安装 VS Code Server 和 Cursor Server