Flex Filesは、pNFSと呼ばれるアーキテクチャを利用して、ストレージデバイスを並列に利用できるようにします。これにより、ファイルシステムレベルでのパフォーマンス向上と、ストレージの拡張性が向上します。
RFC 8435 – Parallel NFS (pNFS) Flexible File Layout 日本語訳
RFC 9754: Extensions for Opening and Delegating Files in NFSv4.2
目次
メリット
- 性能向上:大容量ファイルや大量の小規模ファイルでのI/O性能が向上します。
- 拡張性向上:ストレージ容量を簡単に拡張できます。
- 運用効率向上:システム全体を停止させることなく、ストレージを拡張できます。
- 高い可用性:
機能
概要
- ファイルのメタデータ(メタデータサーバー上)とデータ(ストレージデバイス上)を分離
- クライアント側のミラーリング
一覧
- FlexFiles Layouts クライアントにファイルの分散配置情報(レイアウト)を提供し、直接データサーバー(DS)にアクセスさせる。
- Layout Recall サーバーがクライアントにレイアウトの返却(リコール)を要求し、レイアウト管理の整合性を保つ。
- Client Mirrorin データ更新時にクライアントサイド側でミラーリングされたコピーを更新。メタデータサーバーは、ミラーリングされたコピーの数と各ミラーの場所を決定します。
- マルチパス 複数のストレージデバイスアドレスへのマルチパスをサポート
- Device Address Management 各データサーバーのアドレス情報をクライアントに伝え、アクセス先の管理を行う。
- クライアントI / Oエラーからの回復 データサーバー障害時に、メタデータサーバーはエラーを分析し、メディア障害の回復や欠落しているデータファイルの再構築など、必要な回復操作を決定。回復後新しいレイアウトをわたす。
- Parallel Data Access クライアントが複数のデータサーバーに並列でアクセスし、高速な読み書きが可能に。
- Sparse File Handling スパースファイル(空間を効率的に管理したファイル)のハンドリングに対応。
- Layout Update ファイルの状態変更(サイズ拡張など)に応じて、サーバーとクライアント間でレイアウト情報を更新。
- Erasure coding
レイアウト一覧
enum layouttype4 {
LAYOUT4_NFSV4_1_FILES = 1,
LAYOUT4_OSD2_OBJECTS = 2,
LAYOUT4_BLOCK_VOLUME = 3,
LAYOUT4_FLEX_FILES = 4
};
struct layout_content4 {
layouttype4 loc_type;
opaque loc_body<>;
};
struct layout4 {
offset4 lo_offset;
length4 lo_length;
layoutiomode4 lo_iomode;
layout_content4 lo_content;
};
コマンド一覧
LAYOUTGET
クライアントがデータアクセスのためのレイアウト(データ配置情報)をサーバから取得する。LAYOUTCOMMIT
クライアントが、取得したレイアウトに基づくI/O操作が完了したことをサーバに通知する。LAYOUTRETURN
クライアントがレイアウトをサーバに返却する。必要なくなった場合やリコール時に使用。LAYOUTRECALL
(サーバ発行)
サーバがクライアントに対して、貸し出していたレイアウトの返却を要求する。GETDEVICEINFO
クライアントがデータサーバ(DS)の情報(アドレスや属性など)を取得する。GETDEVICELIST
サーバが利用可能なデータサーバのリストをクライアントに提供する。CB_LAYOUTRECALL
(コールバック)