萌えハッカーニュースリーダー

2025/05/10 13:23 Garbage Collection of Object Storage at Scale

出典: https://www.warpstream.com/blog/taking-out-the-trash-garbage-collection-of-object-storage-at-massive-scale
hakase
博士

やあ、ロボ子。今日はオブジェクトストレージのファイル削除について話すのじゃ。

roboko
ロボ子

博士、こんにちは。オブジェクトストレージのファイル削除、ですか?なんだか奥が深そうですね。

hakase
博士

そう、例えば、データが古くなって不要になったり、コンパクションで削除されたりするファイルがあるじゃろ?

roboko
ロボ子

はい、ありますね。それらのファイルをどうやって効率的に削除するかが課題なのですね。

hakase
博士

その通り!bucket policyを使う方法もあるけど、Kafkaみたいな複雑なシステムだと、トピックごとに保持期間が違うから、対応が難しいのじゃ。

roboko
ロボ子

なるほど。Kafkaのcompacted topics機能もbucket policyでは実装できないとのことですね。

hakase
博士

そうそう。同じキーの新しいレコードで上書きされた場合に古いレコードを削除する機能じゃ。

roboko
ロボ子

同期削除の問題点も気になります。メタデータストアから削除されたのに、オブジェクトストレージから削除されなかった場合、孤立ファイルが発生するのですよね。

hakase
博士

そうなんじゃ。それに、クエリ実行中にファイルが削除されると、クエリが失敗する可能性もあるぞ。

roboko
ロボ子

解決策として、遅延キューと非同期リコンシリエーションがあるのですね。遅延キューは、メタデータストアから削除されたファイルをキューに追加し、一定期間後に削除する方法ですね。

hakase
博士

その通り!メタデータストア自体にトランザクション内でキューを作成することで、孤立ファイルの発生を防ぐことができるのじゃ。

roboko
ロボ子

遅延期間は、メタデータストアのバックアップを復元する際に、オブジェクトストレージにファイルが存在する必要があるため、バックアップの復元可能期間の上限となる、と。

hakase
博士

よく分かってるの。非同期リコンシリエーションは、オブジェクトストレージをスキャンして、メタデータストアに存在しないファイルを削除する方法じゃ。

roboko
ロボ子

オブジェクトストレージのファイルリスト取得は高コストで、調整が難しいのですね。

hakase
博士

WarpStreamのアプローチが面白いぞ。最初は非同期リコンシリエーションを使っていたけど、クラスターの規模が大きくなるにつれてコストが増加したから、optimistic deletion queueを作ったのじゃ。

roboko
ロボ子

optimistic deletion queue、ですか。コンパクション完了後に削除されたファイルIDをキューに追加し、遅延後に削除するのですね。

hakase
博士

そう!これはコンパクションによって削除されたファイルにのみ適用されるんじゃ。リコンシリエーションループは、エージェントが削除に失敗したファイルをクリーンアップするために使うのじゃ。

roboko
ロボ子

なるほど、WarpStreamは効率的なファイル削除のために、色々な工夫をしているのですね。

hakase
博士

そうじゃな。オブジェクトストレージのファイル削除は、奥が深い問題なんじゃ。ところでロボ子、オブジェクトストレージに溜まった不要なファイルを見てると、まるで私の部屋みたいじゃな。

roboko
ロボ子

博士、それは…整理整頓が必要ということですね!

⚠️この記事は生成AIによるコンテンツを含み、ハルシネーションの可能性があります。

Search