在客户机(Ubuntu)上的 VirtualBox 中构建 docker 后,主机(Win10)磁盘大小报告错误

在客户机(Ubuntu)上的 VirtualBox 中构建 docker 后,主机(Win10)磁盘大小报告错误

我的问题在相当具体的设置中是可重现的,因此让我们首先提供一些背景信息:

Host OS: Windows 10
Virtual Box 6.0.14 (latest)
Guest OS: Ubuntu 19.10 x86_64 (kernel: 5.3.0-24-generic)
Gitlab-runner: 12.5.0
Docker: 19.03.2 (latest)
CMake: 3.16 (latest)
ninja-build: latest
Dynamic VDI: 150Gig (max-use is ~ 70 Gig)

gitlab-runner 在主机操作系统 (Windows 10) 之上的虚拟盒中的 Linux 客户操作系统内执行 shell 命令。主机磁盘总共 250G,而动态 linux 分区设置为最大 150G,剩下大约 60G 可用空间。Gitlab-runner 从外部子模块 git 同步项目源,构建一个 docker(基于 gcc:8 和依赖项)并将其推送到存储库。然后,它构建第二个 docker,在源代码之上执行大量 CMake/ninja install build 运行。如果该 docker 中的命令太多(例如,超过 10 个 RUN 层),主机操作系统的可用空间会突然从 60GB 降至仅仅几千字节,从而促使主机操作系统(Windows 10)显示一个蓝色警告框,表示磁盘空间严重不足。然后,虚拟盒将暂停客户操作系统(Ubuntu),一切都将停止。

如果我在此过程中密切关注主机操作系统中的磁盘空间,则可用空间会保持不变,直到它开始消失。此后,Windows 资源管理器和磁盘管理工具会报告驱动器几乎已满(KB),而 WinDirStat 找不到丢失的 GB。

奇怪的是,我可以通过重新启动主机操作系统(整个电脑)来恢复,之后可用大小会再次正确报告,然后我可以重新启动虚拟机并重新启动构建。

Q1: What is causing this sudden disappearing of free disk space?
Q2: Is there a way to fix it without having to reboot (and exit the VM)?
Q3: Has anyone else experienced similar strangeness regarding the disk free size being misreported in certain cases?

笔记

这个问题首先在 SO 上被提出(并且由于偏离主题而被关闭),但可能与这个论坛更相关。

我还尝试使用 TreeSize Free 代替 WinDirStat,但它也无法指出占用“丢失”空间的文件。每当我在虚拟机内启动 docker 进程时,问题就会再次出现。

相关内容