最近管理的一台阿里云ecs(centos7.x)硬盘空间使用高居不下,几次超过80%,删除部分文件后仍然使用占比很高,遂排查处理,下文是处理过程。
$ df -Th
Filesystem Type Size Used Avail Use% Mounted on
/dev/vda1 ext4 50G 39G 8.0G 85% /
devtmpfs devtmpfs 32G 0 32G 0% /dev
tmpfs tmpfs 32G 0 32G 0% /dev/shm
tmpfs tmpfs 32G 1.2G 31G 4% /run
tmpfs tmpfs 32G 0 32G 0% /sys/fs/cgroup
/dev/vdc ext4 3.0T 891G 2.0T 32% /www
tmpfs tmpfs 6.3G 0 6.3G 0% /run/user/1000
/dev/vdd ext4 3.0T 550G 2.3T 20% /sjztsoft
tmpfs tmpfs 6.3G 0 6.3G 0% /run/user/0
再看每个目录占用空间情况:
# cd /
# du -sh *
0 bin
143 Mboot
0 dev
37M etc
214M home
0 lib
0 lib64
8.0K localFile
16K lost+found
4.0K media
4.0K mnt
4.0K opt
0 proc
4.4G pysoftware
125M root
1.2G run
0 sbin
552G sjztsoft
4.0K srv
0 sys
76M tmp
1.7G usr
622M var
1.2G odps_cmd
2.4G wsdw2odps
863G www
看上面占用情况,发现系统除了sjztogg、www两个另挂的数据盘,也就下面3个目录使用较大,但远远没有看到哪里使用了39G的空间。
2.4G wsdw2odps
4.4G pysoftware
1.2G odps_cmd
怀疑系统里存在已删除但空间未释放的文件,这便用到lsof(list open files)命令,它是一个可以列出当前系统打开文件的工具。
..... 此处省略一万行........
查看得知,有很多已删除的文件未释放,可以确定的是/tmp/jdbc.log文件较大,之前其他同事手动删除过几次,其他deleted的小文件暂不处理。继续往下找:
..... 此处省略一万行........
以上jdbc.log文件关联pid,为1332、21246、7784...,下面kill掉这些进程:
kill -9 1332
kill -9 21246
kill -9 7784
再看硬盘使用情况,已恢复了未释放占用的空间,空间使用降至21%:
$ df -Th
Filesystem Type Size Used Avail Use% Mounted on
/dev/vda1 ext4 50G 9.8G 37G 21% /
devtmpfs devtmpfs 32G 0 32G 0% /dev
tmpfs tmpfs 32G 0 32G 0% /dev/shm
tmpfs tmpfs 32G 1.2G 31G 4% /run
tmpfs tmpfs 32G 0 32G 0% /sys/fs/cgroup
/dev/vdc ext4 3.0T 864G 2.0T 31% /www
tmpfs tmpfs 6.3G 0 6.3G 0% /run/user/1000
/dev/vdd ext4 3.0T 552G 2.3T 20% /sjztsoft
tmpfs tmpfs 6.3G 0 6.3G 0% /run/user/0