如何查找谁在使用磁盘空间

如何查找谁在使用磁盘空间

我的 vps 上有 2 个磁盘,一个是 40 GB,另一个是 80 GB,今天我发现我的 40GB 磁盘已 100% 满,我不明白什么在使用那个空间。

这里有完整的信息

[root@topsites]# df -h
文件系统大小已使用可用使用率%安装于
/dev/xvda1 40G 38G 0 100% /
tmpfs 3.9G 0 3.9G 0%/dev/shm
/dev/xvde1 79G 51G 25G 68% /var/www

我的所有网站都在 /var/www 目录中,这个目录的总使用量为 57GB(总 /var 目录)。我逐一检查了所有其他目录,但没有发现任何大数据。几乎所有其他目录的总使用量最多为 5GB,所以我不明白我的其他空间都去哪儿了。

我的计算是这样的,我的所有网站文件总计 51GB,并且使用第二个 80GB 磁盘,/var 使用了超过 6 GB,我认为使用我的 40GB 磁盘。减去所有其他目录的使用量后,40GB 磁盘上至少剩余 50% 的空间,但如您所见,它显示已使用 100%。

有人能给我提供一些关于此事的线索吗?

[root@topsites ~]# du -sh /* --exclude /proc --exclude /var/www
6.5M/箱
42M /启动
4.0千 /cgroup
124K /设备
26M /等
60K /家
254M /库
18M /lib64
20K /失物招领
4.0K /媒体
4.0K/月
4.0K /选择
44K /根
9.2M /sbin
4.0K /selinux
4.0K /srv
0 /系统
8.0千 /tmp
518M /usr
6.6G /无用

答案1

du -sh /* --exclude /proc --exclude /var/www

然后继续查看所有文件的位置。您的日志可能破坏了卷。

然后查看是否有任何已删除的打开文件,但文件使用情况尚未删除。查找从以下位置返回的所有大文件:

sudo lsof | grep deleted

答案2

您正在运行 RHEL/CentOS 吗?在 中确认您的文件系统/etc/fstab

假设您正在使用ext3ext4,您应该通过运行 来确认为分区保留了多少空间tune2fs -l /path/to/partition | grep -i "reserve"。例如;

/dev/xvda1 | grep -i "reserve"

通常 5 - 10% 不是可用的因为它是保留的。计算保留空间的方法为:块大小保留块,请看下一步。

接下来,您可以检查有多少文件被排除在统计之外。首先使用 确认分区的块大小tune2fs

tune2fs -l /dev/xvda1 | grep "Block size"

大多数分区使用 4096 字节或 4 Kb 的默认块大小。

接下来,找到分区上大小不超过 4 KB 的文件,这些文件不计算在内。我们可以使用以下命令执行此操作find

find / -size -4k | wc -l

最后打印出来的是找到的文件数。由于每个文件至少占用一个块,我们可以通过将块大小乘以文件总数来计算使用的磁盘空间。假设总共有 1083357 个文件;

1083357 x 4 = 4333428 Kb (4.333428 Gb)

当然,除非你使用其他操作系统:)

相关内容