如何查找磁盘空间使用情况?

如何查找磁盘空间使用情况?

我在 Google Cloud 中的 CentOS 主机上运行了一个 Ubuntu docker。docker 运行一个用于将图像上传到 S3 的 spring-boot 应用程序。我没有在本地磁盘上保存任何内容。大约每 2 周,我就会遇到磁盘空间问题(设备上没有剩余空间)。我在主机上运行以下命令:

[james@api /]$ df -h
Filesystem      Size  Used Avail Use% Mounted on
/dev/sda1       1.0T   58G  967G   6% /
devtmpfs         15G     0   15G   0% /dev
tmpfs            15G     0   15G   0% /dev/shm
tmpfs            15G   26M   15G   1% /run
tmpfs            15G     0   15G   0% /sys/fs/cgroup
tmpfs           3.0G     0  3.0G   0% /run/user/0
tmpfs           3.0G     0  3.0G   0% /run/user/1000

[james@api /]$ sudo du -hs * | sort -rh | head -5
3.3G    var
1.5G    usr
154M    boot
58M     srv
34M     etc

我在docker容器上运行了同样的操作:

[root@ea23811c1871 /]# df -h 
Filesystem      Size  Used Avail Use% Mounted on
overlay         1.0T   58G  966G   6% /
tmpfs            64M     0   64M   0% /dev
tmpfs            15G     0   15G   0% /sys/fs/cgroup
/dev/sda1       1.0T   58G  966G   6% /var/log
shm              64M     0   64M   0% /dev/shm
tmpfs            15G     0   15G   0% /proc/acpi
tmpfs            15G     0   15G   0% /proc/scsi
tmpfs            15G     0   15G   0% /sys/firmware

[root@ea23811c1871 /]# du -hs * | sort -rh | head -5
1.2G    usr
139M    var
2.7M    etc
36K     tmp
28K     root

我的问题是,我如何才能找到 58G 隐藏在哪里?

谢谢,Hanan

答案1

在主机运行lsof 并查看已删除的文件

lsof |grep delete

可能进程没有释放已删除的文件

答案2

首先,如果还没有这样做,请设置磁盘空间使用情况的监视器和警报。Nagios/Icinga 有一些易于设置的通用插件,甚至一个简单的脚本在磁盘已满时提醒您也会很有帮助。

然后,您应该通过 docker 命令检查容器占用了多少空间(查看docker ps -sdocker system df或者docker inspect——在运行这些命令之前仔细阅读手册页)。您还需要考虑容器、检查点(如果使用)和日志文件的配置文件用户占用的空间。通常,四处查看/var/lib/docker/以了解哪些文件位于容器中的哪个位置。

相关内容