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

mar*_*ark 15 linux

几个小时前,我的根分区填满了,我将文件从它移开,df 报告:

# df -h
Filesystem            Size  Used Avail Use% Mounted on
/dev/hda1             183G  174G     0 100% /
Run Code Online (Sandbox Code Playgroud)

所以应该有 9GB 可用,但可用报告为 0,使用率仍为 100%。

我以 root 身份测试,例如

# echo test >a ; cat a
test
Run Code Online (Sandbox Code Playgroud)

它按预期工作;但是作为普通用户,我仍然收到错误消息:

$ echo test >a ; cat a
bash: echo: write error: No space left on device
Run Code Online (Sandbox Code Playgroud)

我进行正面测试的根主目录和我的主目录在同一个分区上。 fstab 条目是:

/dev/hda1 / ext3 noatime,defaults,errors=remount-ro 0 1
Run Code Online (Sandbox Code Playgroud)

Dav*_*ley 36

大多数文件系统为 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)
Run Code Online (Sandbox Code Playgroud)

您可以使用修改它

# tune2fs -m 3 /dev/sda1
tune2fs 1.41.9 (22-Aug-2009)
Setting reserved blocks percentage to 3% (561893 blocks)
Run Code Online (Sandbox Code Playgroud)

在现代大型驱动器上,5% 可能有点过高,您可能希望将其设置得更低。您不想将其设置为零。

  • 不敢相信我不知道。我最好不要说我现在使用 Linux 有多久了...... (2认同)

小智 5

我和 bob 在一起,尝试 df -i,例如,如果您有一堆错误的输出 crontab,您的 /var/spool/clientmqueue/ 目录可能会被填满