Skip to main content
ONTAP Technical Reports
日本語は機械翻訳による参考訳です。内容に矛盾や不一致があった場合には、英語の内容が優先されます。

NetApp ONTAP NASボリュームにおける高ファイル数ワークロード

共同作成者 whyistheinternetbroken

ファイル数の多いNASワークロードは、少数の大きなファイルが中心となるワークロードよりも、名前空間とメタデータの操作に重点を置きます。このドキュメントセットでは、NetApp ONTAPが大量のファイルを保存および管理する方法、 `maxfiles`と `maxdir-size`の制限を区別する方法、および予測可能な容量とパフォーマンスを実現するためのNASネームスペースの計画方法について説明します。

ファイル数が多いワークロードとはどういう意味ですか?

ファイル数が多いというのは、実際のワークロードを表すには少々不適切な表現です。すべてのワークロードが高ファイル数ワークロードとなる特定のファイル数しきい値は存在しません。その判断は、ファイル総数だけではなく、他の要素にも左右されます。

たとえば次のように指定できます。

  • ボリューム内にはいくつのファイルとディレクトリが存在しますか?

  • 1つのディレクトリにいくつの名前が集中しているか

  • ファイルの作成、オープン、列挙、名前変更、削除の頻度

  • ファイル名の長さ、パスの長さ、文字セット、およびプロトコルによって生成された代替名

  • データアクセスがディレクトリ、FlexGroup構成要素、およびクラスターノード全体に分散しているかどうか

  • アプリケーションが名前空間全体をスキャンまたは一覧表示する頻度

  • スナップショットのコピー数と保持期間

ワークロードの予測されるネームスペースが、inode計画、ディレクトリファイルの増加、メタデータ容量、クライアント操作のレイテンシ、バックアップまたはレプリケーションの動作、あるいは復旧時間に重大な影響を与える可能性がある場合、そのワークロードはファイル数が多いものとして扱う必要があります。

しかし、数百万ものファイルが多数のディレクトリに分散しているワークロードは、同じ数のファイルを単一のディレクトリに配置するワークロードとは大きく異なる動作をする可能性があります。

ファイル数が多い場合によく見られるワークロード

すべてのワークロードがファイル数の多いプロファイルを生成するわけではありませんが、以下のリストは、ファイル数の多いワークロードと見なされる一般的なワークロードの一部を示しています。

  • 電子設計自動化(EDA)と半導体設計フロー

  • ソフトウェアのソースツリー、パッケージリポジトリ、継続的インテグレーションのビルドエリア

  • 画像、トークン、チェックポイント、またはその他の小さなオブジェクトを含む人工知能および機械学習データセット

  • ゲノミクスおよびライフサイエンス分野のパイプライン

  • メディアレンダリング、視覚効果、アニメーションフレームのリポジトリ

  • ホームディレクトリ、部門別共有フォルダ、コンテンツ管理リポジトリ

  • 分析、テレメトリ、およびロギング環境では、多数の短命ファイルが生成されます。

  • 科学およびハイパフォーマンスコンピューティングのスクラッチスペース

ファイルのサイズはワークロードのファイル数が多いかどうかを決定づけるものではありませんが、ファイル数が多いワークロードは多くの場合、多数の小さなファイルで構成されており、データセットの容量使用量は控えめであるにもかかわらず、単一ボリューム内の多くのinodeを消費する可能性があります。

ファイル数が多い場合の課題

ファイル数の多いワークロードは、ファイル数やスループットが少ないワークロードでは必ずしも発生しない、特有の解決困難な課題を数多く抱えています。

メタデータ操作

各ファイルまたはディレクトリにはinodeが必要であり、オブジェクト名はinode自体ではなくディレクトリ内に存在します。ファイルの作成、検索、属性の取得、名前の変更、列挙、削除といった一般的なメタデータ操作は、データスループットが低い場合でも、ファイル数が多いワークロードの大部分を占める可能性があります。このようなシナリオでは、CPU使用率、演算の逐次処理、およびネットワークのRTTがパフォーマンスのボトルネックとなる可能性があります。プロトコルの動作も重要です。NFS および SMB クライアントは、ルックアップ、オープン、クローズ、属性、ディレクトリ読み取り操作のさまざまな組み合わせを発行できますが、多くの場合これらはプロトコル バージョンに依存します。その結果、使用するプロトコルとプロトコル バージョンによって、同様のファイル数が多いワークフローでも異なる結果が得られることがあります。

Capacity

ONTAPは、公開iノードをシステム管理下の非表示のボリュームレベルiノードファイルに格納します。ONTAP 9の各iノードは288バイトを使用するため、iノードファイル自体がボリューム内の使用可能な容量を消費します。割り当てられた100万個のパブリックiノードは約288 MBの容量を使用します。オブジェクトを削除すると、再利用のためにiノードが解放されますが、iノードファイル自体は縮小しません。

さらに、ディレクトリファイルは、同じディレクトリに多数の名前を保存すると、容量を消費します。これらのディレクトリファイルはinodeファイルの一部ではありません。これらは名前とinode番号へのマッピングを保存し、 `maxdir-size`それぞれを個別に制限します。320 MBというデフォルト設定は上限値であり、予約値ではありません。1つのディレクトリファイルが320 MBのディレクトリファイルブロックにまで拡張された場合、それらのブロックは実際のボリューム容量のうち320 MBを使用します。

これら2つの構造は積み重なる可能性があります。割り当てられるinode数が多い場合、inodeファイルだけで数GBに達することがあり、さらに1つ以上の大きなディレクトリファイルが加わることで、数百MBの容量が追加される可能性があります。ボリュームには、すべてのディレクトリサイズが小さいまま大きなinodeファイルを持つものもあれば、inodeファイルは小さいまま大きなディレクトリが1つ存在するものもあります。そのメタデータは使用済みボリューム容量を消費しますが、クライアント側のユーザーデータファイルの一覧のみを参照している場合は見落としやすいものです。inodeファイルはユーザーから見えないファイルです。ディレクトリファイルのサイズは、ディレクトリオブジェクト自体に表示されます。

ディレクトリ列挙

大きなディレクトリは小さなディレクトリよりも列挙に時間がかかり、多くのファイルが削除されたディレクトリのスキャンは依然としてコストがかかる場合があります。ディレクトリファイルサイズは、名前を削除した後でも、最大値のまま維持されます。インデックス付きディレクトリのホールパンチングにより、空の物理ブロックを回収して `READDIR`中にスキップできますが、通常は報告されたサイズを縮小しません。"maxdir-size の上限値の動作について"および"スパースディレクトリとホールパンチング"を参照してください。

故障領域の集中

数百万件のエントリを1つのディレクトリに集中させると、単一ディレクトリのスケーリングとシリアル化のポイントが作成され、ディレクトリ自体だけでなく、そのディレクトリを所有するノード(またはボリューム)のパフォーマンスにも影響を与える可能性があります。ファイルを複数のディレクトリ階層に分散させることで、並列処理が向上し、ディレクトリスキャンの範囲が縮小され、運用タスクが容易になります。

データ保護と復旧

オブジェクト数が多いと、名前空間スキャン、バックアップカタログ作成、レプリケーション、リストア処理、およびリストア後のディレクトリインデックス構築に時間がかかる場合があります。例えば、NetApp SnapMirror は変更されたメタデータとファイルデータの両方を複製するため、作成、削除、名前変更が多数含まれるベースラインや更新は、ファイル数や容量が小さくてもコストが高くなる可能性があります。これらの課題は、NDMPベースのバックアップにも及ぶ可能性があります。

SnapMirrorによるディレクトリ インデックス転送の詳細については、"ONTAPのディレクトリインデックス作成"を参照してください。

Maxfilesとmaxdir-sizeの比較

`maxfiles`と `maxdir-size`の概念は、ONTAPのさまざまなリソースを保護します。どちらも他方の代わりにはなりませんが、混乱を招くことがよくあります。このセクションでは、それらの点を明確にします。

ボリュームには十分な空きinodeがあっても、1つのディレクトリ内で `maxdir-size`に達することがあります。さらに、データセットはディレクトリサイズを大きくすることなく、ボリューム内のパブリックinodeの供給を使い果たしてしまう可能性があります。クライアントの症状は最初は似ているように見えます。NFSは通常 `ENOSPC`を返し、SMBは通常 `STATUS_DISK_FULL`を返します。ディレクトリがいっぱいになると、ボリュームに空きinodeとデータ容量がある場合でも `STATUS_CANNOT_MAKE`を返すことがあります。

次の表は、通常のデフォルト値、およびONTAPで許可される最小値と最大値を示しています。FlexVol `files`の最大値はボリューム サイズに依存するため、絶対的な上限を設定可能として扱う前に、クエリを実行して `files-maximum-possible`確認してください。詳細は、"MaxfilesとONTAP inode情報"および"Maxdir-size と large ONTAP ディレクトリ"に記載されています。

上限 環境 デフォルト 最小 最大

maxfiles (-files)

FlexVol

ボリュームサイズ32 KiBあたり約1つのパブリックinode

最低購入数量の制限はありません。 `files`は `inodefile-public-capacity`以下に下げることはできません。

2,040,109,451個のパブリックiノード。小さいボリュームの場合、 `files-maximum-possible`ボリュームサイズ4 KiBあたり約1つのinodeと、値が低くなります。2,040,109,451を設定可能にするには、ボリュームが約7.8 TB以上である必要があります。

maxfiles (-files)

FlexGroup

コンスティチュエントごとの同じ密度を、FlexGroup全体の合計として報告

構成要素ごとの最低値は同じです。合計は1つの構成要素ではなく、FlexGroupに設定してください。

統合 ONTAP では最大 4,000 億のパブリック i ノード、ONTAP 9.19.1 以降を実行する AFX では最大 1 兆のパブリック i ノードをサポートします。各コンスティチュエントの上限は 2,040,109,451 のままです。

maxdir-size

FlexVol と FlexGroup

320 MB

4 KiB

4 GB

`maxdir-size` は、FlexVol と FlexGroup で同じ上限値です。FlexGroup は、この上限値にコンスティチュエント数を乗算しません。上限値を引き上げる前に、ONTAP リリースおよびプラットフォームでサポートされている `maxdir-size`最大値を確認してください。link:high-file-count-workloads-07-maxdirsize-features-ems.html["maxdir-sizeの機能、EMS、および監視"] を参照してください。

maxdir-sizeとは何ですか?

`maxdir-size`これは、そのボリューム内の個々のディレクトリファイルがどれだけ大きくなることができるかという、ボリュームごとの上限値です。これは、固定されたエントリ数ではなく、容量値として提示されています。ただし、単一ディレクトリ内の名前の数は、ディレクトリのサイズを増加させる要因の1つです。ファイル名の長さ、Unicode文字表現、SMB 8.3エイリアス、NFS代替名、およびFlexGroupリモートエントリの表現方法はすべて、ディレクトリサイズに影響します。ボリュームの `maxdir-size`値を増やすと、この設定では、スペースを事前に割り当てるのではなく、ディレクトリごとに拡張を許可します。

maxfilesとは何ですか?

maxfiles(ボリュームレベルのオプションとして設定 -files)は、単一ボリュームで使用可能なパブリック inode 数の構成可能な上限です。その数には、ファイルやディレクトリだけでなく、名前付きストリーム、ACL、その他のパブリックオブジェクトも含まれます。これらのオブジェクトの中には、通常のディレクトリ一覧には表示されないものもあります。ボリュームには、それらのレコードを格納する隠し inode ファイルが含まれています。ONTAP は、新しいパブリック inode が必要で空きレコードが残っていない場合に、 `-files`の設定とボリュームの合計サイズに達するまで inode ファイルを拡張します。 `-files`の設定可能な最大値は、ボリュームサイズと ONTAP の制限によって異なります。

"次へ:Maxdir-size と大規模な ONTAP ディレクトリ →"