告诉df
我我正在使用 49/59G,所以我开始寻找我的空间。
$ df -h
Filesystem Size Used Avail Use% Mounted on
/dev/vda1 59G 49G 7.9G 86% /
none 4.0K 0 4.0K 0% /sys/fs/cgroup
udev 2.0G 4.0K 2.0G 1% /dev
tmpfs 396M 340K 396M 1% /run
none 5.0M 0 5.0M 0% /run/lock
none 2.0G 0 2.0G 0% /run/shm
none 100M 0 100M 0% /run/user
overflow 1.0M 0 1.0M 0% /tmp
``我第一次尝试du
5.1G .
2.3G ./var
1.3G ./usr
973M ./var/log
834M ./lib
736M ./lib/modules
713M ./var/lib
600M ./root
592M ./var/log/nginx
456M ./var/www
现在,我不是数学专业的,但我很确定那不是 49G。
我试过了ncdu
,这表明我使用的是 5GB / 128GB
答案1
造成这种情况的原因之一是文件已从磁盘中删除,但在内存中仍处于打开状态。这些文件虽然被删除,但仍报告占用磁盘空间。
您可以使用 来检查是否有任何处于此状态的文件(以及哪个进程使它们保持打开状态)lsof
。
$ lsof | grep deleted
open.pl 15220 steve 3r REG 8,1 70 56099817 /home/steve/scratch/in.txt (deleted)
第 7 列(在上述情况下为 70)是文件的大小(以字节为单位)。第一列 (open.pl) 是保持文件打开的进程。第二列是进程的 PID。
通常,当删除巨大的日志文件但未重新启动使用它们的进程时,就会发生这种情况。
要释放此空间,只需重新启动仍保持文件打开的服务即可。
答案2
总是有一点“缺失”......首先,目录中的索引节点表、文件名列表和类似的东西会占用一些空间。我记得旧的软盘 - 它们是 1.44MB,但使用 MS-DOS FAT 文件系统时,它们只能容纳 1.38MB。
其次,Linux/Unix 文件系统通常为 root 保留百分之几的空间。这样,如果用户填满了整个文件系统,root 仍然有操作的空间 - 并且属于 root 的日志可以使用。默认值为 5% - 对于 1 TB 或 2 TB 的磁盘,该值会变得相当大(减少一些是安全的)。
该tune2fs
命令允许您使用 -m 选项指定百分比——tune2fs -m 1 /dev/sda1
仅保留 1%(您应该保留那么多)。