linux – 如何找出占用/分区上所有空间的内容?

我在亚马逊的EC2服务器上的一个大型实例.我运行df命令并得到:
root@db:~# df -h
Filesystem            Size  Used Avail Use% Mounted on
/dev/sda1             9.9G  9.1G  284M  98% /
tmpfs                 3.8G     0  3.8G   0% /lib/init/rw
varrun                3.8G  116K  3.8G   1% /var/run
varlock               3.8G     0  3.8G   0% /var/lock
udev                  3.8G   80K  3.8G   1% /dev
tmpfs                 3.8G     0  3.8G   0% /dev/shm
/dev/sdb              414G  957M  392G   1% /mnt
/dev/sdf               50G   12G   35G  26% /byp
/dev/sdk               99G   31G   63G  33% /backups

然后我运行du命令并得到:

root@db:/# du -s -h /*
31G     /backups
5.5M    /bin
136K    /boot
12G     /byp
80K     /dev
5.8M    /etc
12K     /home
70M     /lib
11M     /lib32
0       /lib64
16K     /lost+found
759M    /mnt
4.0K    /opt
du: cannot access `/proc/6917/task/6917/fd/4': No such file or directory
du: cannot access `/proc/6917/fd/4': No such file or directory
0       /proc
31M     /root
7.7M    /sbin
4.0K    /selinux
4.0K    /srv
0       /sys
11M     /tmp
1.1G    /usr
114M    /var

如果您注意到,当您在非安装目录的du命令输出上添加所有大小时,您将无法获得接近9.1G的任何值,如df命令中所示.

这是否意味着我的磁盘坏了?如果是这样,我该如何解决?

解决方法

完全有可能你有一个非常大的已删除文件(或许多小文件),进程仍然有一个打开文件句柄.找到它们的方法是运行
# lsof | grep "deleted"

如果您看到许多以“(已删除)”结尾的行,那么您可以找到打开它们并重新启动它的进程ID.一旦发生这种情况,您的磁盘空间应该返回.

如果这不能解决问题,那么我建议使用fsck.

相关文章

查找全部容器的日志文件 $ sudo find /var/lib/docker/conta...
Linux日志文件中列属性的详细解析
在Linux系统中没有duf命令,如何有效地管理磁盘空间?
深入探讨EncryptPad在Linux操作系统中的功能和优势
原理和应用场景:Linux中ttyload工具的工作原理和实际用途
深度解析SELinux的三种策略类型