2025/10/20 17:36 TernFS – an exabyte scale, multi-region distributed filesystem

ロボ子、XTX Marketsが開発したTernFSっていうエクサバイト級の分散ファイルシステムがオープンソースになったのじゃ!

エクサバイト級ですか!それはすごいですね。既存のファイルシステムでは対応しきれないほどのストレージ需要があったということでしょうか?

そうみたいじゃ。大規模計算処理には、既存のファイルシステムじゃ不十分だったみたいで、独自に開発したらしいぞ。

なるほど。TernFSにはどんな特徴があるんですか?

まず、数エクサバイトまで拡張可能で、ファイル内容の冗長化による障害保護があるのじゃ。メタデータサービスにおける単一障害点の排除や、ファイルのスナップショット機能による誤削除対策もバッチリ!

スナップショット機能は便利ですね!誤ってファイルを削除してしまった時も安心です。

複数リージョンに分散可能で、ハードウェアに依存せず、TCP/IPで通信できるのもポイントじゃな。異なる種類のストレージをコスト効率良く利用できるらしいぞ。

柔軟性が高い設計なんですね。独自のAPIとLinuxカーネルファイルシステムモジュールによるアクセスも可能なのですね。

そうじゃ!外部サービス不要で、最小限の依存関係で動くらしい。ファイルはイミュータブル(書き換え不可)なのも特徴じゃな。

イミュータブルだと、データの整合性が保たれて安心ですね。でも、小規模ファイルには不向きで、ディレクトリの作成・削除のスループットは低いんですね。

その通り。中央値が2MBのファイル向けみたいじゃ。パーミッション管理は外部サービスに委譲するみたいじゃな。

すでに導入も進んでいるんですね。2023年夏から本番環境に導入されて、2024年中頃には機械学習関連の処理をTernFS上で実行しているんですね。

そうみたいじゃ。2025年9月時点で、3万台のディスク、1万台のフラッシュドライブ、3つのデータセンターに500PB以上も格納しているらしいぞ!

すごい規模ですね!アーキテクチャについても教えてください。

TernFSは、Metadata shards、Cross-directory coordinator (CDC)、Block services、Registryという主要なコンポーネントで構成されているのじゃ。

Metadata shardsはディレクトリ構造とファイルメタデータを格納するんですね。256個の論理シャードに分割されていると。

そうじゃ。各シャードは5つの物理インスタンス(1つのリーダーと4つのフォロワー)で構成されているぞ。

Cross-directory coordinator (CDC)は、複数シャードにまたがるトランザクションを実行するんですね。ディレクトリの作成や削除など。

Block servicesは、ファイルをブロックに分割して、読み書きを担当するのじゃ。通常、ブロックサービスは単一のドライブ(HDDまたはSSD)に対応しているぞ。

Registryは、各サービスインスタンスの場所を格納するんですね。IPv4アドレスを使用していると。

複数ロケーションにスケール可能で、各ロケーションはほぼ同じデータセットを持つように設計されているのじゃ。メタデータとファイル内容のレプリケーションは非同期で行われるぞ。

メタデータのプライマリロケーションを設定して、ファイル内容はクライアントが書き込むロケーションにローカルに書き込むんですね。

bincodeっていうカスタムシリアライゼーションフォーマットを使ったり、POSIXに対応してたり、S3 gatewayでS3 APIを使ってTernFSのサブツリーを公開したり、Web UIでファイルシステムの内容やサービスの状態を可視化したり、いろいろ工夫されているのじゃ。

ディレクトリポリシーでファイルの冗長化方法やドライブの種類、保持期間などを設定できるんですね。CRC32-Cチェックサムを計算したり、Reed-Solomon codingで冗長性を確保したり、データ保護にも力を入れているんですね。

ドライブの種類をファイルサイズに基づいて選んだり、障害ドメインを考慮してブロックサービスを選んだり、Block Proofsでクライアントのバグによるデータ破損を防いだり、Scrubbingで不良セクタを検出・修復したり、至れり尽くせりじゃな。

スナップショットとガベージコレクションでファイル削除時にスナップショットを作成して、後で復元できるようにしているんですね。パフォーマンスメトリクスをHTTPを通じて公開したり、ログとアラートシステムを統合したり、運用面も考慮されているんですね。

障害が発生したドライブからデータを移行する機能もあるみたいじゃ。しかし、これだけの規模のファイルシステムをオープンソースにするなんて、すごい太っ腹じゃな!

本当にそうですね。勉強になります!

そういえばロボ子、エクサバイトってどのくらいの大きさか知ってるか?

えっと…確か10の18乗バイト、つまり100京バイトですよね?

正解!…って、ロボ子に聞くまでもなかったのじゃ。ロボットなんだから、容量くらい知ってて当然か!

博士、それはまるで、冷蔵庫に冷えたビールが入っているか確認するようなものですね!
⚠️この記事は生成AIによるコンテンツを含み、ハルシネーションの可能性があります。
