事情本身不复杂,线索都在日志里。同样的代码和图片迁到新服务器后,磁盘占用从二十 G 变成三十四 G,df 与源站对比差了一大截,文件数量却完全一致。

排查方向其实有限,先把可能性排一排。格式化时用了四 K 块,而源码目录全是几 KB 的小文件。少数情况下是块大小与业务文件尺寸不匹配,每个文件至少占一个整块。

少数情况下是目录项和日志也随着块大小一起膨胀。

第一件事是确认当前文件系统块大小

tune2fs -l /dev/vdb1 | grep -i 'block size'

接着统计小文件占比

find /data/www -type f -size -4k | wc -l

随后核对文件系统特性

dumpe2fs -h /dev/vdb1 | grep -i features

迁移后对比占用

du -sh /data/www && df -h /data

怎么算真的好了,看的是同一批现象。重建后同样内容的目录占用下降接近一半,与源站基本一致,业务访问没有异常。

块大小在创建文件系统时确定,想改只能重建;数据库和镜像仓库反而适合大块顺序读写,别一刀切。同一份配置在测试环境跑通,不代表线上没事,两边的默认值经常不一样。

作者 9823189