【问题标题】:Total size of files in Kafka logs directory is less than the sum of their sizesKafka 日志目录中文件的总大小小于它们大小的总和
【发布时间】:2021-02-11 22:24:32
【问题描述】:

我正在测试一个 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 总数不代表该目录中所有文件的大小总和?为什么在停止生产者应用程序后几分钟总数会减少,即使目录中的所有文件都保持相同大小?

【问题讨论】:

    标签: linux apache-kafka ls kafka-partition


    【解决方案1】:

    文件可能有漏洞。你可以运行以下命令吗:

    du --apparent-size *
    

    【讨论】:

    • 是的,du --apparent-size 的输出是各个文件大小的总和。手册页说“虽然表观大小通常较小,但由于('sparse')文件中的漏洞、内部碎片、间接块等原因,它可能会更大。”
    • 感谢您为我指明正确的方向。您的回答使我进行了更多搜索,这些搜索告诉我 Kafka 索引文件是稀疏的内存映射文件。这样就可以解释了。我仍然不确定的是,为什么一旦我停止向 Kafka 代理生成数据,磁盘使用率会进一步下降。
    • @KlitosKyriacou - 你应该接受答案,然后...
    猜你喜欢
    • 1970-01-01
    • 2017-09-24
    • 2012-03-08
    • 2018-10-22
    • 2013-09-29
    • 2013-08-06
    • 1970-01-01
    • 1970-01-01
    • 2015-05-15
    相关资源
    最近更新 更多