几个小时前我的根分区已满,我将文件从中移出,然后 df 报告:
# df -h
Filesystem Size Used Avail Use% Mounted on
/dev/hda1 183G 174G 0 100% /
因此应该有 9GB 可用空间,但可用性报告为 0,而使用率仍为 100%。
我以 root 身份进行了测试,例如
# echo test >a ; cat a
test
它按预期工作;但是作为普通用户,我仍然收到错误:
$ echo test >a ; cat a
bash: echo: write error: No space left on device
我进行正面测试的根主目录和我的主目录在同一个分区上。fstab 条目是:
/dev/hda1 / ext3 noatime,defaults,errors=remount-ro 0 1
答案1
大多数文件系统都会为 root 保留一定比例的空间,因此您仍然可以以 root 身份登录并解决磁盘空间不足的问题。通常这个比例是 5%。9GB 大约是 183GB 的 5%,所以这是合理的。您可以使用 tune2fs 查看保留了多少空间:
# tune2fs -l /dev/sda1 | grep -i reserved
Reserved block count: 936488
Reserved GDT blocks: 1019
Reserved blocks uid: 0 (user root)
Reserved blocks gid: 0 (group root)
您可以使用它来修改它
# tune2fs -m 3 /dev/sda1
tune2fs 1.41.9 (22-Aug-2009)
Setting reserved blocks percentage to 3% (561893 blocks)
在现代大型硬盘上,5% 可能有点多,您可能希望将其设置得更低。您不想将其设置为零。
答案2
我和 bob 一样,尝试 df -i,例如,如果你有一堆输出不良的 crontab,你的 /var/spool/clientmqueue/ 目录可能会被填满
答案3
还要查看 INODES。在“原始”安装中,如果您有许多小文件,它们会占用 inode,但不会占用空间。您会发现有可用空间,但由于 inode 已满,您将无法使用这些空间。
答案4
另一件要检查的事情是查看文件系统上是否有任何打开的文件(尤其是日志)。删除文件不会清除磁盘上的空间,直到文件实际关闭为止。