に向かう Btrfs の「予約フラッシュ緊急」機能 Linux 6.2 カーネルでは、当初 Facebook のデータ センター内で定期的に領域不足のトランザクションが中止されていたいくつかの問題に対処する予定です。 BTRFS_RESERVE_FLUSH_EMERGENCY を使用すると、Btrfs は、スペースが不足したときにトランザクションが中止されないように、より懸命に試みます。

この変更を作成した Josef Bacik 氏は次のように説明しています。 FB 内では、フリートで 1 日あたり最大 100 ~ 200 件の ENOSPC アボートが見られました。これは、フリートの規模を考えると非常に低い発生率ですが、ゼロではありません。

新しいフラッシュ状態、BTRFS_RESERVE_FLUSH_EMERGENCY を導入します。これは、リザーブとグローバル リザーブを使い果たした場合に使用されます。ディスク上に予約を行うのに十分な実際のスペースがある場合は、予約を強制するだけです。これはほとんどの場合に当てはまります。これにより、遅延した作業に追いついていないこれらの奇妙な出来事で、ENOSPC の中断を回避できます。

これを完全に修正するのは、比較的複雑で時間がかかります。このパッチは、私が今年初めに Filipe と話し合ったものであり、FB 内のカーネルに追加したものです。このパッチにより、1 週間に 1 ~ 2 回の ENOSPC の中断が発生するようになりました。これは大幅な減少です。
これら 2 つのコーナー ケースに対するより全体的な
解決策を見つけられるまで、これはまともなストップ ギャップです。

これらの問題にぶつかったコーナー ケースは、割り当ての遅延と遅延でした。レフリーズリザーブ。詳細は このパッチ は、Linux 6.2 マージ ウィンドウの前に、Btrfs の「for-next」ブランチの一部になりました。しかし、簡単に言えば、ファイル システムで Btrfs の領域不足 (ENOSPC) トランザクション アボートの問題に悩まされている場合は朗報です。

Categories: IT Info