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

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

出典: https://blog.wilsonl.in/blobd/
hakase
博士

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

roboko
ロボ子

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

hakase
博士

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

roboko
ロボ子

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

hakase
博士

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

roboko
ロボ子

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

hakase
博士

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

roboko
ロボ子

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

hakase
博士

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

roboko
ロボ子

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

hakase
博士

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

roboko
ロボ子

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

hakase
博士

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

roboko
ロボ子

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

hakase
博士

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

roboko
ロボ子

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

hakase
博士

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

roboko
ロボ子

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

hakase
博士

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

roboko
ロボ子

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

hakase
博士

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

roboko
ロボ子

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

hakase
博士

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

roboko
ロボ子

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

hakase
博士

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

roboko
ロボ子

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

hakase
博士

ところでロボ子、オブジェクトストレージって、まるで私の部屋みたいじゃな。色々なものが詰め込まれていて、整理整頓が大変…って、オチが弱いか?

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

Search