Kafka日志目录中文件的总大小小于其大小的总和

问题描述

我正在测试一个Kafka生产者应用程序,并注意到Kafka日志的磁盘使用情况有些奇怪。当查看某个分区的日志目录的总大小时,应用程序正在向Kafka写入数据时,我会看到:

$ ls -l --block-size=kB kafka-logs/mytopic-0
total 52311kB
-rw-rw-r-- 1 app-data app-data 10486kB Oct 29 12:45 00000000000000000000.index
-rw-rw-r-- 1 app-data app-data 46505kB Oct 29 12:45 00000000000000000000.log
-rw-rw-r-- 1 app-data app-data 10486kB Oct 29 12:45 00000000000000000000.timeindex
-rw-rw-r-- 1 app-data app-data     1kB Oct 29 11:55 leader-epoch-checkpoint

然后我停止我的应用程序,几分钟后,我重复上述命令,并得到以下信息:

$ ls -l --block-size=kB kafka-logs/mytopic-0
total 46519kB
-rw-rw-r-- 1 app-data app-data 10486kB Oct 29 12:45 00000000000000000000.index
-rw-rw-r-- 1 app-data app-data 46505kB Oct 29 12:45 00000000000000000000.log
-rw-rw-r-- 1 app-data app-data 10486kB Oct 29 12:45 00000000000000000000.timeindex
-rw-rw-r-- 1 app-data app-data     1kB Oct 29 11:55 leader-epoch-checkpoint

问题:为什么ls总数不能代表该目录中所有文件的大小之和?为什么即使停止了生产者应用程序后几分钟,总数却减少了,即使目录中的所有文件都保持相同大小?

解决方法

文件可能有孔。您可以运行以下命令吗?

du --apparent-size *