# オブジェクトベースストレージ
## 定義
オブジェクトベースストレージとは、クライアントがブロックデバイスの割り当て詳細を直接扱うのではなく、オブジェクトID・範囲・オフセットを指定してストレージサービスへ操作を依頼する構成である。2003年のLustre資料では、ストレージターゲットがオブジェクトとブロックの割り当てを管理し、クライアントには単純なオブジェクトプロトコルを公開する設計として説明される。
## プロトコルの最小例
資料に示された操作は次の3つである。
- `lock(object id, start, end)` — ロックハンドルを返す。
- `write(object id, offset, data, length)` — 指定オブジェクトの範囲へ書き込む。
- `unlock(lock handle)` — ロックを解放する。
この抽象化では、クライアントはオブジェクトの論理的な範囲を指定し、低レベルのブロック割り当てをストレージターゲットへ委譲する。
## スケーリング上の位置づけ
資料は、1,000ノード規模では共有ディスクが高価であり、共有ブロックファイルシステムのブロック割り当てロックも問題になると説明する。
Lustreのストレージターゲットがオブジェクトとブロックの割り当てを担うことで、データ転送と割り当ての責務をストレージ側へ分散する。
## 横断的知見
- **2003年の最小プロトコルが2021年時点でも構造的に一貫している**: 2003年資料([[@2003__CFS__Lustre building a cluster file system for 1,000 node clusters]])は `lock`/`write`/`unlock` というオブジェクトID・範囲指定の最小プロトコルを示すのみだったが、2021年の実装解説([[@2021__ORNL__Understanding Lustre Internals - Chapter 1 Lustre Architecture]])では、この設計思想がそのまま OST(Object Storage Target)というブロックデバイス抽象と、MDT 上の Layout EA が保持する「OST 一覧 + オブジェクト FID の対応表」という具体的なデータ構造にまで発展していることが確認できる。クライアントは依然としてオブジェクト単位の範囲(ストライプ)を指定するだけで、ブロック割り当ての詳細は OSS/OST 側に委譲されるという2003年時点の分離原則は変わっていない。
- **オブジェクト識別の単位が「オブジェクトID」から「FID + Layout EA」の二層構造へ具体化した**: 2003年資料は単一の「オブジェクトID」を前提とするプロトコル例に留まるが、2021年資料はファイル全体を指す FID(128ビット opaque 識別子)と、そのファイルが複数 OST にまたがる場合の個々の OST オブジェクトへの参照を、MDT 側の Layout EA が仲介するという二層構造を明示する。これは、単一オブジェクト操作の最小プロトコルから、ストライピングされた複数オブジェクトを束ねる「ファイル」概念への拡張が、設計の初期段階から意図されていたことを示す。(Source: [[@2003__CFS__Lustre building a cluster file system for 1,000 node clusters]], [[@2021__ORNL__Understanding Lustre Internals - Chapter 1 Lustre Architecture]])
## 未解決の問い
- オブジェクトの配置・再配置・障害復旧をストレージターゲット間でどう調整するのか。
- オブジェクト単位の範囲ロックと、メタデータ用の分散ロックをどの境界で分離・連携するのか。
- オブジェクトプロトコルがPOSIXの名前空間・属性操作を隠蔽する際、どの処理をメタデータサーバへ残すのか。
- Layout EA が保持する OST/FID 対応表は、OST の追加・削除(リバランス)やオブジェクトの再配置が起きた際にどのように更新・整合されるのか。2003年・2021年いずれの資料も静的な参照構造の説明に留まり、更新プロトコルには踏み込んでいない。
## 関連
- [[Lustre]] — オブジェクトプロトコルとストレージターゲットを採用するファイルシステム。
- [[並列ファイルシステム]] — オブジェクトベース設計を共通原則の一つとして扱う。
- [[分散ロック管理]] — オブジェクト範囲の同時アクセスを調停する機構。
## 出典
- [[@2003__CFS__Lustre building a cluster file system for 1,000 node clusters]]
- [[@2021__ORNL__Understanding Lustre Internals - Chapter 1 Lustre Architecture]]