# File Identifier (FID) Navigation: [[index]] | [[overview]] ## 定義 File Identifier(FID)とは、分散ファイルシステムがファイルシステム内の個々のオブジェクト(ファイル、ディレクトリ、内部メタデータ等)に対して、それが実際に格納されているノード・ターゲット・バックエンド識別子から独立に一意な名前を与える仕組みである。この一意な名前(FID)自体はオブジェクトの物理的な所在を含まないため、名前(FID)からオブジェクトの実体へ到達するには別途の解決機構が必要になる。Lustre における FID はこの一般概念の具体例であり、64 ビットのシーケンス番号・32 ビットのオブジェクト ID・32 ビットのバージョン番号から成る 128 ビットの `lu_fid` 構造体として実装される。シーケンス番号はストレージターゲット(MDT/OST)ごとに一意であり、この性質を前提に「シーケンス番号からターゲットを特定する FID Location Database(FLD)」と「ターゲット上でバックエンドファイルシステムの inode 等を特定する Object Index(OI)」という 2 段階の解決連鎖によって、FID から実オブジェクトへ到達する(Source: [[@2021__ORNL__Understanding Lustre Internals - Chapter 7 File Identifiers, FID Location Database, and Object Index]])。 ## 横断的知見 - Understanding Lustre Internals ch.7 と Lustre Unveiled ch.3 は FID の構造(SEQ + OID + VER の 128 ビット)と、SEQ の割り当てがシーケンスコントローラ(Understanding Lustre Internals の用語)/ Sequence Controller(Lustre Unveiled の用語)によって集中管理される点で完全に一致する。ただし記述の力点が異なる: Understanding Lustre Internals ch.7 はカーネルモジュールの実装(`fid_request.c` の `seq_client_alloc_fid()` 等)と予約シーケンス範囲(IGIF/IDIF 等)という実装内部の詳細に踏み込むのに対し、Lustre Unveiled ch.3 は「10 億個単位の大きな範囲を事前割り当てすることで、日常的な SEQ 払い出しに中央調整点や競合が発生しない」という設計上の利点(スケーラビリティ)を強調する。両者を合わせると、FID の SEQ 分割は単なる名前空間分割ではなく、シーケンスコントローラへの問い合わせ頻度を数か月〜数年に一度まで下げるためのバッチ割り当て設計であることが分かる(Source: [[@2021__ORNL__Understanding Lustre Internals - Chapter 7 File Identifiers, FID Location Database, and Object Index]], [[@2025__TOS__Lustre Unveiled - Chapter 3 Architectural Details of Lustre]])。 - 両ソースとも、FID から実オブジェクトへの到達は「FLD でターゲットを特定」→「ターゲット内でバックエンド固有の識別子(inode 番号等)を特定」という 2 段階であることで一致する。Understanding Lustre Internals ch.7 はこの 2 段目を Object Index(OI)と呼び、`osd_inode_id`(ldiskfs の inode 番号+世代番号)への変換として実装レベルで説明する。Lustre Unveiled ch.3 も同じ機構を OI と呼び、「バックエンドの inode 番号が変わっても(例: `tar` でのバックアップ・復元後)OI を再生成すれば FID を同じオブジェクトへ再マッピングできる」という運用上の利点を補足しており、両ソースを合わせることで OI が単なる変換表ではなく、バックエンドファイルシステムの実装詳細から上位層を隔離する抽象化境界として機能していることが確認できる(Source: [[@2021__ORNL__Understanding Lustre Internals - Chapter 7 File Identifiers, FID Location Database, and Object Index]], [[@2025__TOS__Lustre Unveiled - Chapter 3 Architectural Details of Lustre]])。 ## 未解決の問い - 他の分散ファイルシステム(Ceph の CRUSH、HDFS の block ID 等)における名前解決の連鎖は、Lustre の FID → FLD → OI という 2 段階構成とどう異なるか。中央調整点の有無、キャッシュ戦略の違いを比較する余地がある。 - FID のバージョン番号(`f_ver`)は両ソースとも「将来のスナップショット用途に予約され現状未使用」とされているが、実際にスナップショット機能が実装された場合にこのフィールドがどう使われる設計かは、いずれのソースにも記述がない。 ## 関連 - 実体: [[Lustre]] - 章 source: [[@2021__ORNL__Understanding Lustre Internals - Chapter 7 File Identifiers, FID Location Database, and Object Index]] / [[@2025__TOS__Lustre Unveiled - Chapter 3 Architectural Details of Lustre]] ## 出典 - Anjus George, Rick Mohr, *Understanding Lustre Internals, Second Edition*, Oak Ridge National Laboratory, ORNL/TM-2021/2131, 2021, Chapter 7. - Lustre Unveiled, Chapter 3: Architectural Details of Lustre, ACM Transactions on Storage, 2025.