我的空间在哪里?

我的空间在哪里?

告诉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%(您应该保留那么多)。

相关内容