kafka ext4文件系统的注意事项

半兽人 发表于: 2015-03-10   最后更新时间: 2019-11-09 13:45:07  
{{totalSubscript}} 订阅, 14,392 游览

Ext4 may or may not be the best filesystem for Kafka. Filesystems like XFS supposedly handle locking during fsync better. We have only tried Ext4, though.

EXT4 is a serviceable choice of filesystem for the Kafka data directories, however getting the most performance out of it will require adjusting several mount options. In addition, these options are generally unsafe in a failure scenario, and will result in much more data loss and corruption. For a single broker failure, this is not much of a concern as the disk can be wiped and the replicas rebuilt from the cluster. In a multiple-failure scenario, such as a power outage, this can mean underlying filesystem (and therefore data) corruption that is not easily recoverable. The following options can be adjusted:
EXT4可供Kafka数据目录文件系统选择。要获得最佳的性能将需要几个挂载选择。另外,这些选项在故障情况下通常是不安全的。并且将导致更多的数据丢失和损坏。 对于单个broker故障,无心担心,可以擦除磁盘,并从集群重建副本。在多故障情况下,如断电,这可能意味着底层文件系统(数据)损坏,这是不容易恢复的。 可以调整以下选项:

It is not necessary to tune these settings, however those wanting to optimize performance have a few knobs that will help:

  • data=writeback: Ext4 defaults to data=ordered which puts a strong order on some writes. Kafka does not require this ordering as it does very paranoid data recovery on all unflushed log. This setting removes the ordering constraint and seems to significantly reduce latency.
    data=writeback: 默认Ext4为data=ordered(对一些写入设置强顺序写入)。Kafka不需要,因为kafka的数据在所有未冲洗的日志上恢复。此设置删除了排序约束,并且显著地减少了延迟(似乎)。

  • Disabling journaling: Journaling is a tradeoff: it makes reboots faster after server crashes but it introduces a great deal of additional locking which adds variance to write performance. Those who don't care about reboot time and want to reduce a major source of write latency spikes can turn off journaling entirely.

  • commit=num_secs: This tunes the frequency with which ext4 commits to its metadata journal. Setting this to a lower value reduces the loss of unflushed data during a crash. Setting this to a higher value will improve throughput.

  • nobh: This setting controls additional ordering guarantees when using data=writeback mode. This should be safe with Kafka as we do not depend on write ordering and improves throughput and latency.

  • delalloc: Delayed allocation means that the filesystem avoid allocating any blocks until the physical write occurs. This allows ext4 to allocate a large extent instead of smaller pages and helps ensure the data is written sequentially. This feature is great for throughput. It does seem to involve some locking in the filesystem which adds a bit of latency variance.
    delalloc: 延迟分配意味着文件系统避免分配任何块,直到物理写入发生。这允许ext4分配很大程度上代替小的页面并确保数据按顺序写入。这一特性非常适合吞吐量,它涉及在文件系统中增加了一些延迟差异锁(似乎)。

更新于 2019-11-09