# Understanding Lustre Internals
## 概要
[[Lustre]] のソースコードを読み解こうとする開発者に向けて、[[Oak Ridge National Laboratory]](ORNL)の Anjus George と Rick Mohr がまとめた技術報告書である。アーキテクチャの概観から始め、テスト基盤、ユーザ空間ユーティリティ、MGC・obdclass・libcfs といったカーネル内サブシステム、FID とその解決機構までを、実際の関数呼び出しとデータ構造の水準で解説する。
サーベイ論文 [[Lustre Unveiled]] が Lustre の設計進化と運用実績を扱うのに対し、本書は同じ ORNL のグループによる**実装の内部構造**の解説であり、両者は補完関係にある。
## 書誌情報
- 著者: Anjus George(ORNL), Rick Mohr(ORNL)
- 版: Second Edition
- 発行: [[Oak Ridge National Laboratory]] 技術報告書(ORNL/TM-2021/2131), 2021 年
- OSTI: https://www.osti.gov/biblio/1824954-understanding-lustre-internals-second-edition
- PDF: https://info.ornl.gov/sites/publications/Files/Pub166872.pdf
- 継続更新版(本 wiki 化の原本): https://wiki.lustre.org/Understanding_Lustre_Internals
- 構成: 本編 7 章 + 巻末(Publications / Presentations / Authors / Notes)
- 関連発表: LUG 2022 チュートリアル "Lustre MGC and Obdclass Deep Dive"、LUG 2022 技術講演 "Understanding Lustre File System Internals – A Documentation Initiative"
## 構成と主要テーマ
本書に部(Part)の区切りは無く、7 章が「全体像 → 開発者の道具立て → カーネル内サブシステム → 名前解決」の順に並ぶ。
### 全体像(第 1 章)
Lustre がどのような構成要素からなり、ファイルがどう分散配置されるかを示す入口。以降の章はいずれもここで導入された語彙の上に立つ。
→ [[@2021__ORNL__Understanding Lustre Internals - Chapter 1 Lustre Architecture]] — MGS/MDS/OSS/OST・クライアント・LNet の構成、Normal(RAID0)と Composite の両レイアウト、DNE、FID と Layout EA、ソフトウェアスタックを示す本書全体の入口章。
### 開発者の道具立て(第 2〜3 章)
Lustre のコードに手を入れる前に必要な、検証手段と操作手段。
→ [[@2021__ORNL__Understanding Lustre Internals - Chapter 2 TESTS]] — Lustre Test Suites の構成と用語階層、acceptance-small によるコード提出前の検証プロセス、環境変数によるテスト実行の制御。
→ [[@2021__ORNL__Understanding Lustre Internals - Chapter 3 UTILS]] — ユーティリティ群を、ファイル単位の操作(`lfs`・`lfs_migrate`)、obd デバイスへのランタイム制御(`lctl`)、ターゲットと設定ログの管理(`mkfs.lustre`・`tunefs.lustre`・`mount.lustre`・`llog_reader`)の三層で整理する。
### カーネル内サブシステム(第 4〜6 章)
本書の中心。MGC を具体例として obd デバイスモデルを立ち上げ、その下を支える共通基盤へ降りていく。
→ [[@2021__ORNL__Understanding Lustre Internals - Chapter 4 MGC]] — MGC は obd デバイスライフサイクルで最初にセットアップされ、設定ログの取得・処理と llite との通信を `obd_ops` 経由の間接呼び出しで実現する管理クライアントである。
→ [[@2021__ORNL__Understanding Lustre Internals - Chapter 5 OBDCLASS]] — obdclass が obd デバイスという統一抽象を介して MGC・MDC・OSC 等を登録・接続・解体する仕組みを、attach → setup → precleanup → cleanup のライフサイクルと import/export 接続対の観点から解説する。
→ [[@2021__ORNL__Understanding Lustre Internals - Chapter 6 LIBCFS]] — libcfs は Lustre が最初にロードする共通基盤ライブラリで、プロセス管理・デバッグ・障害注入・保存データ暗号化・CPU パーティションテーブル管理を LNet と Lustre 全体に提供する。
### 名前解決(第 7 章)
→ [[@2021__ORNL__Understanding Lustre Internals - Chapter 7 File Identifiers, FID Location Database, and Object Index]] — FID(128 ビットの一意な名前)を起点に、FLD でシーケンス番号からストレージターゲットを特定し、OI でターゲット内のバックエンドオブジェクトを特定する 2 段階の名前解決連鎖。
巻末の Publications / Presentations / Authors / Notes は source 化していない。内容は本ページの書誌情報に織り込んだ。
## 影響と位置づけ
Lustre は 20 年以上にわたって開発されてきた大規模なコードベースを持つ一方、内部構造をサブシステム単位で説明した公式文書は長く不足していた。本書はその空白を埋めるための ORNL の文書化イニシアチブとして始まり、成果は LUG 2022 でチュートリアルと技術講演の双方の形で発表されている。
技術報告書としての第 2 版が OSTI に固定版として置かれる一方、wiki.lustre.org 上の版は継続更新される。本 wiki 化はこの継続更新版を 2026-09-02 時点で取り込んだものであり、原本は今後変化しうる。
同じ ORNL のグループによる [[Lustre Unveiled]](ACM TOS 2025)が設計進化と Frontier での運用実績を扱うのに対し、本書は実装の内部構造を扱う。両者を併読すると「なぜその設計に至ったか」と「実際にどう組まれているか」が接続する。
## 関連
- [[Lustre]] / [[Lustre Unveiled]] / [[並列ファイルシステム]] / [[オブジェクトベースストレージ]] / [[obd デバイスモデル]] / [[File Identifier (FID)]]
## 出典
- Anjus George, Rick Mohr, *Understanding Lustre Internals, Second Edition*, Oak Ridge National Laboratory, ORNL/TM-2021/2131, 2021.