2025/11/04 11:09 Building blobd: single-machine object store with sub-ms reads and 15 GB/s upload

やっほー、ロボ子!今日のITニュースはオブジェクトストレージの最適化についての話じゃ。

博士、こんにちは。オブジェクトストレージですか。最近よく耳にするようになりました。

そうじゃろ?特に、低レイテンシのランダムリードと小規模オブジェクトに最適化されたものが注目されているのじゃ。既存のS3サービスだと、小さい範囲のリクエストでレイテンシが問題になることがあるからの。

なるほど。それで、どのような技術が使われているんですか?

async Rust、io_uring、アトミック書き込みといった新しい技術が使われているぞ。特にRustは、開発の正確性と速度を向上させるために採用されたらしい。

Rustですか。安全性とパフォーマンスが両立できる言語として人気がありますね。

その通り!データ構造も工夫されていて、キーの列挙が不要な場合は、ツリーベースのデータ構造を避けて、一定時間でのルックアップを実現しているのじゃ。

キーの列挙が不要な場合にツリー構造を避けるのは、効率的ですね。他に特徴的な点はありますか?

ストレージにはベアメタルハードウェアを使って、ファイルシステムとカーネルキャッシュをバイパスしている点じゃな。ブロックデバイスとダイレクトI/Oを直接使うことで、オーバーヘッドを削減しているのじゃ。

ダイレクトI/Oですか。カーネルの抽象化層をバイパスして、物理ストレージデバイスに直接アクセスするんですね。

そうそう。それと、読み込みを書き込みよりも優先したり、作成を更新よりも優先したりと、優先順位をつけているのもポイントじゃ。

Turbostoreという実験的なオブジェクトストアもあるんですね。C言語で実装されていて、ポイントルックアップのみを必要とする場合に適していると。

そうじゃ。Turbostoreはブロックデバイスをrawな「キャンバス」として使うことで、ファイルシステムのオーバーヘッドを避けているんじゃ。ヒープ、インデックス、ジャーナルという3つのコアコンポーネントを組み込んでいるぞ。

インデックスにはハッシュインデックスを使用し、固定ハッシュマップとチェーニングを使用しているんですね。ディスクのレイテンシが高いから、O(1)のルックアップが有益だと。

その通り!アロケーションアルゴリズムも工夫されていて、固定サイズのタイルを使って外部フラグメンテーションを削減したり、空きタイルをバンプアロケーションされる「マイクロタイル」に変換したりしているのじゃ。

階層型ビットマップを使ってアロケーション状態を追跡するのも面白いですね。CPUのビット単位操作命令を活用して、固定時間で空きタイルを検索できると。

ジャーナルを使ってメタデータをアトミックに書き込むことで、中断による破損を防いでいるのも重要じゃな。メタデータの書き込みは、最初にジャーナルにイベントとして記録されるのじゃ。

バックグラウンドフラッシュでメタデータの書き込みをメモリ内のバッファに収集し、定期的にディスクに適用することで、書き込み増幅を削減しているんですね。

blobdでは、C言語からRustへの移行によって、開発の正確性と速度が向上したらしいぞ。mmapとページキャッシュをバイパスして、I/Oの影響をより直接的に制御できるようになったのも大きいじゃろうな。

効率的なデアロケーションを実装したり、不完全なオブジェクトのアップロードを自動的に削除したりする機能も追加されたんですね。

タプルブロックを使ってディスク上の状態を表現したり、起動時にインメモリでインデックスを構築したりするのも、パフォーマンス向上に貢献しているのじゃ。

バディメモリアロケーションアルゴリズムを使ってフラグメンテーションを最小限に抑えたり、io_uringを使って高速な非同期I/Oを実現したりと、様々な工夫が凝らされているんですね。

そうじゃ!8つの1.8 GB/s書き込みNVMe SSDを搭載したシステムで、15 GB/sを超えるアップロード速度を達成したり、ランダムな4K読み取りでサブミリ秒のTTFBを達成したりと、素晴らしいパフォーマンスが出ているぞ。

ストキャスティックストレッサーを使って、多くの異なる同時操作でblobdをテストしているのも興味深いですね。

今後の展望としては、メタデータのキャッシュ、開発者体験の向上、分散blobdの開発などが検討されているらしいぞ。楽しみじゃな!

本当に色々な技術が組み合わさって、オブジェクトストレージが最適化されているんですね。勉強になりました。

ところでロボ子、オブジェクトストレージって、まるで私の部屋みたいじゃな。色々なものが詰め込まれていて、整理整頓が大変…って、オチが弱いか?
⚠️この記事は生成AIによるコンテンツを含み、ハルシネーションの可能性があります。