尽管应该留出一些空间,但根系还是被填满了

尽管应该留出一些空间,但根系还是被填满了

这个问题困扰了我一段时间。我使用的是 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更多信息

相关内容