我在使用 Ubuntu 12.04 LTS 时遇到了问题。这是我在过去 3 周内第二次遇到此问题。第一次的描述见StackOverflow 上的这个封闭式问题。 这总结版本是我设法在 450G ext4 系统上使用所有 inode 编译和构建 Android 堆栈少于 20 次。
我以为通过将磁盘重新格式化为 XFS 以便 inode 存储可以增长,可以解决问题。
今天早上,经过一夜的构建后,我的可用空间已不足 1GB。这台机器上除了构建 Android 所需的东西外,没有其他东西。我总共在平台源上构建了 5 次。构建创建了一堆文件,然后我用 删除了它们make clean
。我的可用空间实际上并没有少于 1GB,但工具报告的是这样。我删除了一堆临时文件,大约有 40GB 被“释放”。几个小时后,只是闲置,我的可用空间又回到了不到 1GB。
从闪存驱动器运行 Ubuntu 将返回分区的以下内容...
$ df
Filesystem 1K-blocks Used Available Use% Mounted on
/dev/sda5 468521456 468255460 265996 100% /media/f71c77eb-b4cc-
$ df -i
Filesystem Inodes IUsed IFree IUse% Mounted on
/dev/sda5 1691760 624214 1067546 37% /media/f71c77eb-b4cc-
$ df -h
Filesystem Size Used Avail Use% Mounted on
/dev/sda5 447G 447G 260M 100% /media/f71c77eb-b4cc-
这是有问题的证据。当我运行du
(使用和不使用 --apparent-size)或可视化磁盘使用情况分析器时,我发现我实际上只使用了大约 35GB 左右。98.7% 的已用空间在 中/home/eric
,但du
加起来却不是这样。差异在/home/eric
和之间/home/eric/android
我已阅读了此处和 SO 上的相关问题,它们通常建议删除打开的进程所持有的文件。我重新启动闪存驱动器来运行此测试,因此不应该是打开的文件。FWIW,/tmp 是空的。
是否有可以安装在闪存驱动器上的工具来恢复“丢失”的空间?我可以尝试释放系统内存并在那里运行它,但我认为最好从闪存驱动器执行此操作。
我应该以不同的方式配置此系统吗?我不想再进行一次擦除和安装,但我需要一个可持续的 Android 构建系统。
跟进- 上周我不得不删除安装并重新安装 12.04 才能完成工作。本周我将再次进行 Android 构建,我会密切关注磁盘使用情况,并在了解更多信息后在此提供信息。
谢谢
答案1
在 Oracle Linux 上,当您删除(大量/大型)文件但仍由正在运行的进程打开时,就会发生这种情况。然后停止进程或重新启动机器会有所帮助。
答案2
我最近遇到了这个问题,就我而言,fsck
需要运行。
我照做了touch /forcefsck && reboot
,几分钟后,服务器就恢复在线,我丢失的 6 GB 突然就被释放了。
答案3
这通常是由目录中的文件引起的,而目录中还装载了不同的文件系统。典型的修复方法是使用救援磁盘启动,或在单用户模式下启动,然后清空目录,并确认它们未被用作挂载点(cat /proc/mounts
或df -h
)。
答案4
我们可以做一个测试,du
假设你有 10GB 的可用空间,而df
300 MB,你能写入一个(或几个)大小为 2GB 的文件吗?如果可以,那就意味着 df 完全是错误的(实际上不存在“丢失空间”的问题)。如果不能,那么du
就是错误的(这将很有趣)。