[解决]linux 服务器的硬盘满了,但是真实空间并没有满

[解决]linux 服务器的硬盘满了,但是真实空间并没有满

梦浪的小虾米
2022-09-12 / 0 评论 / 1,182 阅读 / 正在检测是否收录...

这两天公司的测试服务器崩了,崩的原因很简单:磁盘满了,没有空间了。但是深究后发现原因并非如此。
实际上是:删除文件的进程未释放文件

使用 df -lh
文件系统             容量  已用  可用 已用% 挂载点
devtmpfs             7.7G     0  7.7G    0% /dev
tmpfs                7.7G     0  7.7G    0% /dev/shm
tmpfs                7.7G  711M  7.0G   10% /run
tmpfs                7.7G     0  7.7G    0% /sys/fs/cgroup
/dev/mapper/cl-root   70G   70G   0G   100% /
/dev/sdb1            916G   31G  839G    4% /data
/dev/mapper/cl-home  851G  243G  608G   29% /home
/dev/sda3           1014M  242M  773M   24% /boot
/dev/sda1            146M   20M  127M   14% /boot/efi
tmpfs                1.6G  1.2M  1.6G    1% /run/user/42
tmpfs                1.6G  4.0K  1.6G    1% /run/user/1009
tmpfs                1.6G     0  1.6G    0% /run/user/0

当时的命令查询后发现

/dev/mapper/cl-root   70G   70G   0G   100% / 

这个系统盘已经被用满了,但是通过


 du -lh --max-depth=1 / 

后发现,统计的文件占用只有9G,实际上有61个G不见了

后来通过百度得知:系统自动删除文件的进程并没有执行,导致文件句柄没有被释放。于是我试了试,

# 查询删除未释放的进程
lsof |grep deleted
# 上述命令得到的结果
lsof -n / |grep deleted
xxxxx     751           root    8r   REG  253,0   61G 202150797 /xxxxx/xxxxx (deleted)

果然发现了一个占用非常大的文件,为了方便,直接显示一个,仅作演示,实际请自行查看自己的
于是执行

kill -9 751(上一个命令得到 pid )

然后再次 执行第一个命令,发现空间已经恢复正常大小了。

真是一次奇妙的经历。

0

评论 (0)

取消