问题现象
之前在用Azure云的时候碰到过一次这个情况,就是一台虚拟机,CentOS7系统,文件系统是xfs,然后出现了磁盘占用率高的情况。
没有大文件占用,inode使用率也很低,没有未释放的文件句柄,甚至我还找我两个同事,Azure的伙伴帮我看了,也重启过机器,但是都不管用,最后还是让Azure的伙伴帮我扩容解决了。今天有幸看到这篇文章,又给我了新的排查思路:就是xfs文件系统碎片的问题。
系统内部看硬盘空间占用很大,但是实际根目录下并没有大文件目录占用,inode占用也很小,没有死句柄文件占用空间。

问题原因
这个是由于xfs文件系统中存在大量碎片占用导致,并不是真的存在大文件占用。
可以通过命令xfs_db -c frag -r /dev/vda1,查看系统盘xfs文件系统碎片情况。
解决办法
执行碎片整理命令:xfs_fsr /dev/vda1,对xfs文件系统整理碎片后,硬盘空间占用恢复正常。

在自己电脑测试
随便找了个虚拟机,首先查看当前系统盘xfs文件碎片情况:
[root@localhost ~]# xfs_db -c frag -r /dev/sda3
actual 48532, ideal 47570, fragmentation factor 1.98%
Note, this number is largely meaningless.
Files on this filesystem average 1.02 extents per file
[root@localhost ~]# df -h /dev/sda3
文件系统 容量 已用 可用 已用% 挂载点
/dev/sda3 198G 55G 144G 28% /
执行碎片整理:
#这个命令执行之后我发现我电脑磁盘读写很高,,我是nvme磁盘,磁盘使用率在50%到100%之前,于是我还是终止了,不在自己电脑测试了
[root@localhost ~]# xfs_fsr /dev/sda3