“设备上没有剩余空间”,df显示出差异


15

几个小时前,我的根分区已装满,我将文件从其移开,并且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

Answers:


34

大多数文件系统为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%可能有点过高,您可能希望将其设置得更低。您不想将其设置为零。


1
不敢相信我不知道。我还是不说多长时间我一直在使用Linux现在...
马克

@nfm嘿,多年来我一直在家庭机器上进行基本的Linux管理,却从未听说过。+1以获取更多信息:-)
Topher Fangio

5

我和bob一起使用,请尝试df -i,例如,如果您有一堆不良的输出crontab,则/ var / spool / clientmqueue /目录可能会被填满


3

也来看看INODES。在“原始”安装中,如果必须包含许多小文件,则它们会占用inode,但不会占用空间。您将看到有可用空间,但是由于您的inode已满,因此您将无法使用此空间。


3
大多数现代的unice甚至在小型文件系统上也具有大量的inode。有时这是一个问题,但考虑到用户完全能够创建文件c,这不太可能是inode问题。(即使目录条目不需要任何空间,它们也需要inode)。
克里斯,

2

“默认情况下,Unix中的每个文件系统都为超级用户(根)保留了一些空间。这意味着没有常规的Unix用户可以将您的文件系统填充到100%,因此,它将始终有足够的可用空间来继续正常运行。 ”

从: http://www.unixtutorial.org/commands/tune2fs/


1

要检查的另一件事是查看该文件系统上是否有任何打开的文件(尤其是日志)。删除文件将不会清除磁盘上的空间,直到实际关闭文件为止。


0

我下注1美元,让克莱德(Clyde)找到答案。进程在该设备上打开了文件。在linux中,直到打开该文件的过程放开它,该文件才真正被删除。

我将从以下内容开始: lsof | grep hda1

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.