事情本身不复杂,线索都在日志里。同样的代码和图片迁到新服务器后,磁盘占用从二十 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
怎么算真的好了,看的是同一批现象。重建后同样内容的目录占用下降接近一半,与源站基本一致,业务访问没有异常。
块大小在创建文件系统时确定,想改只能重建;数据库和镜像仓库反而适合大块顺序读写,别一刀切。同一份配置在测试环境跑通,不代表线上没事,两边的默认值经常不一样。