问题描述
我在使用 Ubuntu 12.04 LTS 时遇到问题。这是我在过去 3 周内第二次遇到此问题。 \n第一次在 this closed question on StackOverflow 中描述。\nTL;DR 版本是我设法使用 450G ext4 系统上的所有 inode 编译和构建 Android 堆栈不到 20 次。
我以为我正在通过将磁盘重新格式化为 XFS 来解决问题,这样 inode 存储就可以增长。
今天早上,在通宵构建后,我的可用空间不足 1GB。除了构建 Android 所需的东西之外,这台机器上没有任何东西。我在平台源上总共完成了 5 次构建。构建创建了一堆文件,然后我在不久之后用 make clean
删除了它们。我实际上并没有少于 1GB,但工具是以这种方式报告的。我删除了一堆临时文件,大约有 40GB “freed”。几个小时后,只是闲置,我又回到了不到 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)或可视磁盘使用分析器时,我显示我实际上只使用了大约 \n35GB 左右。 98.7% 的已用空间在 /home/eric
中,但 du
加起来还不够。差异在 /home/eric
和 /home/eric/android
之间
我已经阅读了此处和 SO 上的相关问题,他们通常建议它是打开进程持有的已删除文件。我重新启动到闪存驱动器来运行这个测试,所以它不应该是打开的文件。 FWIW,/tmp 是空的。
有没有我可以在闪存驱动器上安装的工具来恢复 ‘lost’ 空间?我可以尝试释放系统上的内存并在那里运行它,但我假设最好从闪存驱动器执行此操作。
我应该以不同的方式配置这个系统吗?我宁愿不再擦除并安装,但我需要一个可持续的 Android 构建系统。
FOLLOWUP – 为了完成工作,我上周不得不对安装和 re-installed 12.04 进行核对。当我本周再次进行 Android 构建时,我将密切关注磁盘使用情况,并在我了解更多信息时在此处提供信息。
谢谢
最佳方案
在 Oracle Linux 上,当您有(很多/大)文件被删除但仍在运行的进程中打开时,就会发生这种情况。然后停止进程或重新启动机器会有所帮助。
次佳方案
我最近遇到了这个,在我的例子中,需要运行 fsck
。
我执行了 touch /forcefsck && reboot
,几分钟后,服务器重新联机,突然间我丢失的 6 GB 空间被释放了。