这个问题困扰了我一段时间。我使用的是 Ubuntu 11.04。我的根分区已满,我不知道是什么原因造成的。更奇怪的是,当我运行 时df -h
,输出如下:
Filesystem Size Used Avail Use% Mounted on
/dev/sda2 9.2G 8.8G 0 100% /
如您所见,应该有大约 400 MB 的可用空间,但Avail
显示为 0。这可能是什么原因造成的?我甚至卸载了一些程序来释放空间,但它又被填满了。也欢迎提出有关如何找出哪些文件(如果有的话)占满空间的建议。
答案1
第一张照片:错误日志中的流量很高。我想如果你下载视频的话,你就会知道这一点。:)
sudo du -sh /var/log
- -s 是摘要
- -h 是人类可读的(k、M、G、T)后缀
对我来说是 20M,除了日志目录之外,还有一个安装缓存。使用
apt-get clean
如果这是你的问题。
当然,如果 /home 位于您的根分区中,您应该检查它。
如果您必须迭代地搜索大文件,我可以建议一系列命令,这些命令可以重复,并且在第一步之后速度非常快:
- 你从顶层的可疑目录开始
- 然后搜索所有子目录和文件的大小,并按数字排序:
sudo du -s /var/* | sort -n
0 /var/crash
4 /var/www
44 /var/games
124 /var/run
2306 /var/tmp
18538 /var/log
251876 /var/cache
1053231 /var/lib
- 我删掉了这个例子,以使其简短。所以我们看到,最大的子目录是 /var/lib,然后对 /var/lib 重复该步骤。现在搜索速度快得多,因为计算结果以某种方式被缓存了:
sudo du -s /var/lib/* | sort -n
78116 /var/lib/apt-xapian-index
104580 /var/lib/dpkg
680503 /var/lib/postgresql
等等。按照最大的目录查找较大的文件。您不能在这里使用 -sh,因为数字排序不适用于千字节的 k/M/G/T 等等。
答案2
格式化后,ext2/3/4 文件系统会保留一定比例的磁盘空间供 root 用户专用。默认情况下,该比例为 5%。这样做的目的是,即使非特权用户占满了所有可用的磁盘空间,系统仍可以继续工作并启动。
一般来说,填充任何文件系统超过其容量的 95% 不是一个好主意,因为这会造成过多的碎片,从而导致性能下降 - 即使在释放磁盘空间之后也是如此。
从man mke2fs
:
-m reserved-blocks-percentage
Specify the percentage of the filesystem blocks
reserved for the super-user. This avoids fragmenta‐
tion, and allows root-owned daemons, such as
syslogd(8), to continue to function correctly after
non-privileged processes are prevented from writing
to the filesystem. The default percentage is 5%.
如果你真的绝望了,你可以使用tune2fs
来改变这个值。查看man tune2fs
更多信息