

翻訳は機械翻訳により提供されています。提供された翻訳内容と英語版の間で齟齬、不一致または矛盾がある場合、英語版が優先します。

# Amazon FSx for Lustre のパフォーマンス
<a name="performance"></a>

本章では、Amazon FSx for Lustre のパフォーマンスに関するトピックを紹介し、ファイルシステムのパフォーマンスを最大化するための重要なヒントおよび推奨事項を提示します。

**Topics**
+ [概要](#performance-overview)
+ [FSx for Lustre のファイルシステム用のしくみ](#how-lustre-fs-work)
+ [ファイルシステムのメタデータパフォーマンス](#dne-metadata-performance)
+ [個々のクライアントインスタンスへのスループット](#throughput-clients)
+ [ファイルシステムストレージレイアウト](#storage-layout)
+ [ファイルシステム内のデータのストライピング](#striping-data)
+ [パフォーマンスと使用状況のモニタリング](#performance-monitoring)
+ [SSD および HDD ストレージクラスのパフォーマンス特性](ssd-storage.md)
+ [インテリジェント階層化 ストレージクラスのパフォーマンス特性](intelligent-tiering-file-systems.md)
+ [パフォーマンスのヒント](performance-tips.md)

## 概要
<a name="performance-overview"></a>

Amazon FSx for Lustre は、一般的な高性能ファイルシステムである Lustre をベースに構築されており、ファイルシステムのサイズに応じて直線的に増加するスケールアウトパフォーマンスを提供します。Lustre ファイルシステムは複数のファイルサーバーとディスクをまたいで水平にスケールします。このスケーリングにより、各クライアントは各ディスクに保存されているデータに直接アクセスして、従来のファイルシステムに存在するボトルネックの多くを取り除くことができます。Amazon FSx for Lustre は、Lustre のスケーラブルなアーキテクチャに基づいて構築され、多数のクライアントで高いレベルのパフォーマンスをサポートします。

## FSx for Lustre のファイルシステム用のしくみ
<a name="how-lustre-fs-work"></a>

各 FSx for Lustre ファイルシステムは、クライアントが通信するファイルサーバと、データを格納する各ファイルサーバに接続されたディスクのセットで設定されます。各ファイルサーバは、高速のインメモリキャッシュを使用して、最も頻繁にアクセスされるデータのパフォーマンスを向上させます。ストレージクラスに応じて、ファイルサーバーにはオプションの SSD 読み取りキャッシュをプロビジョニングできます。クライアントがメモリ内キャッシュまたは SSD キャッシュに格納されているデータにアクセスする場合、ファイルサーバーはディスクから読み取る必要がないため、レイテンシーが減少し、ドライブ可能なスループットの合計量が増加します。次の図表は、書き込み操作、ディスクから実行される読み取り操作、およびインメモリまたは SSD キャッシュから実行される読み取り操作のパスを示しています。

![FSx for Lustre パフォーマンスアーキテクチャ。](http://docs.aws.amazon.com/ja_jp/fsx/latest/LustreGuide/images/LustrePerfDiagram.png)


 ファイルサーバーのインメモリまたは SSD キャッシュに保存されているデータを読み取る場合、ファイルシステムのパフォーマンスはネットワークスループットによって決まります。ファイルシステムにデータを書き込むとき、またはインメモリキャッシュに保存されていないデータを読み取る場合、ファイルシステムのパフォーマンスは、ネットワークスループットとディスクスループットの低い方によって決まります。

SSD および HDD ストレージクラスのネットワークスループット、ディスクスループット、および IOPS の特性の詳細については、「[SSD および HDD ストレージクラスのパフォーマンス特性](ssd-storage.md)」および「[インテリジェント階層化 ストレージクラスのパフォーマンス特性](intelligent-tiering-file-systems.md)」を参照してください。

## ファイルシステムのメタデータパフォーマンス
<a name="dne-metadata-performance"></a>

ファイルシステムメタデータ IO オペレーション (IOPS) は、1 秒あたりに作成、一覧表示、読み取り、削除できるファイルとディレクトリの数を決定します。

永続 2 ファイルシステムでは、ストレージ容量とは独立してメタデータ IOPS をプロビジョニングできるほか、クライアントインスタンスがファイルシステム上で生成しているメタデータ IOPS の数および種類をより詳細に把握することが可能です。SSD ファイルシステムでは、メタデータ IOPS は、プロビジョニングしたストレージ容量に基づいて自動的にプロビジョニングされます。インテリジェント階層化ストレージクラスのファイルシステムはは、自動モードをサポートしていません。

FSx for Lustre の 永続 2 ファイルシステムでは、プロビジョニングしたメタデータ IOPS の数およびメタデータ操作の種類によって、ファイルシステムがサポートできるメタデータ操作の速度が決まります。プロビジョニングするメタデータ IOPS のレベルによって、ファイルシステムのメタデータディスクにプロビジョニングされる IOPS の数が決まります。


| 操作タイプ | プロビジョニングされたメタデータ IOPS ごとに 1 秒あたりに駆動できるオペレーション  | 
| --- | --- | 
| ファイルの作成、開く、閉じる | 2 | 
| ファイルの削除 | 1 | 
| ディレクトリの作成、名前の変更 | 0.1 | 
| ディレクトリの削除 | 0.2 | 

SSD ファイルシステムでは、自動モードにより、メタデータ IOPS のプロビジョニングを行うことができます。自動モードでは、Amazon FSx は、次の表に従ってファイルシステムのストレージ容量に基づいてメタデータ IOPS を自動的にプロビジョニングします。


| ファイルシステムのストレージ容量 | 自動モードでのメタデータ IOPS を含む | 
| --- | --- | 
| 1200 GiB | 1500 | 
| 2400 GiB | 3000 | 
| 4800～9600 GiB | 6000 | 
| 12000～45600 GiB | 12000 | 
| 48,000 GiB 以上 | 24000 GiB あたり 12000 IOPS | 

ユーザープロビジョニングモードでは、オプションでプロビジョニングするメタデータ IOPS の数を指定できます。有効な値は次のとおりです。
+ SSD ファイルシステムでは、有効な値は、`1500`、`3000`、`6000`、`12000`、および `192000` までの `12000` の倍数です。
+ インテリジェント階層化ファイルシステムの場合、有効な値は `6000` と `12000` です。

メタデータ IOPS を設定する方法については、「[メタデータパフォーマンスの管理](managing-metadata-performance.md)」を参照してください。ファイルシステムのデフォルトのメタデータ IOPS 数を超えてプロビジョニングしたメタデータ IOPS については、別途料金が発生することにご留意ください。

## 個々のクライアントインスタンスへのスループット
<a name="throughput-clients"></a>

スループットキャパシティが 10 GBps を超えるファイルシステムを作成する場合は、Elastic Fabric Adapter (EFA) を有効にして、クライアントインスタンスあたりのスループットを最適化することをお勧めします。クライアントインスタンスごとのスループットをさらに最適化するために、EFA 対応のファイルシステムでは、EFA 対応の NVIDIA GPU 搭載クライアントインスタンス向けの GPUDirect Storage および ENA Express 対応クライアントインスタンス向けの ENA Express もサポートされています。

単一のクライアントインスタンスに対して得られるスループットは、選択したファイルシステムの種類およびクライアントインスタンスのネットワークインターフェイスに依存します。


| ファイルシステムタイプ | クライアントインスタンスのネットワークインターフェイス | クライアントあたりの最大スループット、Gbps | 
| --- | --- | --- | 
| EFA 非対応 | いずれか | 100 Gbps\* | 
| EFA 対応 | ENA | 100 Gbps\* | 
| EFA 対応 | ENA Express | 100 Gbps | 
| EFA 対応 | EFA | 700 Gbps | 
| EFA 対応 | GDS を使用した EFA | 1200 Gbps | 

**注記**  
\* 個々のクライアントインスタンスと個々の FSx for Lustre オブジェクトストレージサーバー間のトラフィックは 5 Gbps に制限されています。FSx for Lustre ファイルシステムを支えるオブジェクトストレージサーバーの数については、「[ファイルシステムの IP アドレス](using-fsx-lustre.md#ip-addesses-for-fs)」を参照してください。

## ファイルシステムストレージレイアウト
<a name="storage-layout"></a>

Lustre のすべてのファイルデータは、*オブジェクトストレージターゲット* (OST) と呼ばれるストレージボリュームに格納されます。すべてのファイルメタデータ (ファイル名、タイムスタンプ、アクセス許可などを含む) は、メタデータターゲット (MDT) と呼ばれるストレージボリュームに保存されます。Amazon FSx for Lustre ファイルシステムは、1 つ以上の MDT と複数の OST で設定されます。Amazon FSx for Lustre は、ストレージ容量とスループットと IOPS 負荷のバランスをとるために、ファイルシステムを設定する OST にファイルデータを分散します。

ファイルシステムを設定する MDT および OST のストレージ使用状況を表示するには、ファイルシステムがマウントされているクライアントから次のコマンドを実行します。

```
lfs df -h {{mount/path}}
```

このコマンドの出力は以下のようになります。

**Example**  

```
UUID                             bytes       Used   Available Use% Mounted on
{{mountname}}-MDT0000_UUID           68.7G       5.4M       68.7G   0% /fsx[MDT:0]
{{mountname}}-OST0000_UUID            1.1T       4.5M        1.1T   0% /fsx[OST:0]
{{mountname}}-OST0001_UUID            1.1T       4.5M        1.1T   0% /fsx[OST:1]

filesystem_summary:               2.2T       9.0M        2.2T   0% /fsx
```

## ファイルシステム内のデータのストライピング
<a name="striping-data"></a>

ファイルストライピングにより、ファイルシステムのスループットパフォーマンスを最適化できます。Amazon FSx for Lustre は、データがすべてのストレージサーバーから確実に提供されるように、OST 間で自動的にファイルを分散します。複数の OST にまたがるファイルのストライピング方法を設定することで、同じ概念をファイルレベルで適用できます。

ストライピングとは、ファイルを複数のチャンクに分割して、異なる OST に格納できることを意味します。ファイルが複数の OST にストライプされると、ファイルへの読み取りまたは書き込みリクエストがそれらの OST にまたがって分散され、アプリケーションがそれを介して処理できる総スループットまたは IOPS が向上します。



Amazon FSx for Lustre ファイルシステムのデフォルトのレイアウトを次に示します。
+ 2020 年 12 月 18 日より前に作成されたファイルシステムでは、デフォルトのレイアウトでストライプカウントが 1 に指定されています。つまり、異なるレイアウトを指定しない限り、標準の Linux ツールを使用して Amazon FSx for Lustre で作成された各ファイルは 1 つのディスクに格納されます。
+ 2020 年 12 月 18 日以降に作成されたファイルシステムのデフォルトレイアウトは、プログレッシブファイルレイアウトであり、サイズが 1 GiB 未満のファイルは 1 つのストライプに保存され、大きいファイルにはストライプカウント 5 が割り当てられます。
+ 2023 年 8 月 25 日以降に作成されたファイルシステムのデフォルトレイアウトは、[プログレッシブファイルのレイアウト](#striping-pfl) で説明されている 4 コンポーネントのプログレッシブファイルレイアウトです。
+ すべてのファイルシステムでは、作成日に関係なく、Amazon S3 からインポートされたファイルはデフォルトのレイアウトを使用せずに、ファイルシステムの `ImportedFileChunkSize` パラメータにあるレイアウトを使用します。`ImportedFileChunkSize` より大きい S3 インポートされたファイルは、`(FileSize / ImportedFileChunksize) + 1` のストライプカウントで複数の OST に格納されます。`ImportedFileChunkSize` のデフォルト値は 1 GiB です。

`lfs getstripe` コマンドを使用してファイルまたはディレクトリのレイアウト設定を表示できます。

```
lfs getstripe {{path/to/filename}}
```

このコマンドは、ファイルのストライプカウント、ストライプサイズ、およびストライプオフセットを報告します。ストライプカウントは、ファイルがストライプされている OST の数です。ストライプサイズは、OST に保存されている連続データの量です。ストライプオフセットは、ファイルがストライプされる最初の OST のインデックスです。

### ストライピング設定の変更
<a name="striping-modify"></a>

ファイルのレイアウトパラメータは、ファイルが最初に作成されたときに設定されます。`lfs setstripe` コマンドを使用すると、指定したレイアウトで新しい空のファイルを作成します。

```
lfs setstripe {{filename}} --stripe-count {{number_of_OSTs}}
```

`lfs setstripe` コマンドは、新しいファイルのレイアウトにのみ影響します。これを使用して、ファイルを作成する前にファイルのレイアウトを指定します。ディレクトリのレイアウトを定義することもできます。ディレクトリに設定されると、そのレイアウトはそのディレクトリに追加されたすべての新しいファイルに適用されますが、既存のファイルには適用されません。作成した新しいサブディレクトリも新しいレイアウトを継承し、そのサブディレクトリ内に作成した新しいファイルまたはディレクトリに適用されます。

既存のファイルのレイアウトを変更するには、`lfs migrate` コマンドを使用します。このコマンドは、必要に応じてファイルをコピーし、コマンドで指定したレイアウトに従ってコンテンツを配信します。例えば、ファイルに追加されたファイルやサイズが増加しても、ストライプカウントは変更されないため、ファイルのレイアウトを変更するにはそれらを移行する必要があります。または、`lfs setstripe` コマンドを使用して、レイアウトを指定し、元のコンテンツを新しいファイルにコピーし、新しいファイルの名前を変更して元のファイルと置き換えます。

デフォルトのレイアウト設定がワークロードに最適ではない場合があります。例えば、数十個の OST と多数のマルチギガバイトファイルがあるファイルシステムでは、デフォルトのストライプカウント値である 5 OST を超えるファイルをストライピングすることで、パフォーマンスが向上します。ストライプカウントの少ない大きなファイルを作成すると、I/O パフォーマンスのボトルネックが発生し、OST がいっぱいになる可能性もあります。この場合、ファイルのストライプカウントが多いディレクトリを作成できます。

大きなファイル (特にサイズが 1 ギガバイトを超えるファイル) のストライプレイアウトを設定することは、次の理由で重要です。
+ 大きなファイルの読み取りと書き込み時に、複数の OST とその関連サーバーが IOPS、ネットワーク帯域幅、および CPU リソースを提供できるようにすることで、スループットが向上します。
+ OST の小さなサブセットが全体的なワークロードパフォーマンスを制限するホットスポットになる可能性を低減します。
+ 1 つの大きなファイルが OST を埋め尽くし、ディスクフルエラーを引き起こす可能性を防ぎます。

すべてのユースケースに単一の最適なレイアウト設定はありません。ファイルレイアウトに関する詳細なガイダンスについては、「Lustre.org ドキュメント」の「[ファイルレイアウト (ストライピング) と空き領域の管理](https://doc.lustre.org/lustre_manual.xhtml#managingstripingfreespace)」を参照してください。一般的なガイドラインを次に示します。
+ ストライプのレイアウトは、大きなファイル、特にファイルのサイズが数百メガバイト以上のユースケースで最も重要です。このため、新しいファイルシステムのデフォルトのレイアウトでは、サイズが 1 GiB を超えるファイルに対してストライプカウント 5 が割り当てられます。
+ ストライプカウントは、大きなファイルをサポートするシステム用に調整する必要があるレイアウトパラメータです。ストライプカウントは、ストライプファイルのチャンクを保持する OST ボリュームの数を指定します。例えば、ストライプ数が 2、ストライプサイズが 1 MiB の場合、Lustre はファイルの代替の 1 MiB チャンクを 2 つの OST のそれぞれに書き込みます。
+ 有効なストライプカウントは、実際の OST ボリュームの数と指定したストライプカウント値のうち小さい方です。特別なストライプカウント値の `-1` を使用できます。これは、ストライプをすべての OST ボリュームに配置する必要があることを示します。
+ 特定の操作では、ファイルが小さすぎてすべての OST ボリュームの容量を消費できない場合でも、Lustre はレイアウト内のすべての OST へのネットワークラウンドトリップを必要とするため、小さなファイルに対して大きなストライプカウントを設定することは最適ではありません。
+ プログレッシブファイルレイアウト (PFL) を設定して、ファイルのレイアウトをサイズに応じて変更することができます。PFL 設定では、各ファイルに対して明示的に設定しなくても、大小のファイルを組み合わせたファイルシステムの管理を簡素化できます。詳細については、「[プログレッシブファイルのレイアウト](#striping-pfl)」を参照してください。
+ ストライプサイズは、デフォルトで 1 MiB です。ストライプオフセットを設定すると、特殊な状況では便利ですが、通常は指定しないままにしておき、デフォルトを使用するのが最善です。

### プログレッシブファイルのレイアウト
<a name="striping-pfl"></a>

ディレクトリのプログレッシブファイルレイアウト (PFL) 設定を指定して、小さなファイルと大きなファイルに対して異なるストライプ設定を指定してから、それを入力できます。例えば、データが新しいファイルシステムに書き込まれる前に、最上位ディレクトリに PFL を設定できます。

PFL 設定を指定するには、`lfs setstripe` コマンドで `-E` オプションを使用して、以下のコマンドのように、異なるサイズのファイルのレイアウトコンポーネントを指定します。

```
lfs setstripe -E 100M -c 1 -E 10G -c 8 -E 100G -c 16 -E -1 -c 32 {{/mountname/directory}}
```

このコマンドは、4 つのレイアウトコンポーネントを設定します。
+ 最初のコンポーネント (`-E 100M -c 1`) は、最大 100 MiB のファイルのストライプカウント値 1 を示します。
+ 2 番目のコンポーネント (`-E 10G -c 8`) は、サイズが 10 GiB までのファイルのストライプカウントを 8 であることを示します。
+ 3 番目のコンポーネント (`-E 100G -c 16`) は、サイズが 100 GiB までのファイルのストライプカウントを 16 であることを示します。
+ 4 番目の要素 (`-E -1 -c 32`) は、100 GiB を超えるファイルのストライプカウントが 32 であることを示しています。

**重要**  
PFL レイアウトで作成されたファイルにデータを追加すると、そのレイアウトコンポーネントがすべて入力されます。例えば、上記の 4 コンポーネントコマンドで、1 MiB のファイルを作成し、その末尾にデータを追加すると、ファイルのレイアウトが展開され、ストライプカウントが -1 になります。これは、システム内のすべての OST を指します。これは、データがすべての OST に書き込まれるという意味ではありませんが、ファイル長の読み取りなどのオペレーションは、すべての OST に並行してリクエストを送信し、ファイルシステムに大きなネットワークロードを追加します。  
したがって、その後にデータを追加できる小またはミディアムの長さのファイルのストライプカウントを制限するように注意してください。通常、ログファイルは新しいレコードを追加することで増加するため、Amazon FSx for Lustre では、親ディレクトリで指定されたデフォルトのストライプ設定に関係なく、追加モードで作成されたファイルに、デフォルトのストライプカウント 1 が割り当てられます。

2023 年 8 月 25 日以降に作成された Amazon FSx for Lustre ファイルシステムのデフォルトの PFL 設定は、次のコマンドを実行して設定します。

```
lfs setstripe -E 100M -c 1 -E 10G -c 8 -E 100G -c 16 -E -1 -c 32 {{/mountname}}
```

中～大規模ファイルへの同時アクセスが多いワークロードを持つお客様は、前述の 4 つのコンポーネントのレイアウト例で示したように、ファイルサイズが小さい場合はストライプカウントが多いレイアウトを使用し、ファイルサイズが最大の場合はすべての OST にまたがるストライピングのレイアウトを使用することでメリットが得られます。

## パフォーマンスと使用状況のモニタリング
<a name="performance-monitoring"></a>

Amazon FSx for Lustre は 1 分ごとに、各ディスク (MDT および OST) の使用状況メトリクスを Amazon CloudWatch に発行します。

ファイルシステムの総使用状況の詳細を表示するには、各メトリクスの Sum 統計を調べます。例えば、`DataReadBytes` 統計は、ファイルシステム内のすべての OST で見られる総読み取りスループットを報告します。同様に、`FreeDataStorageCapacity` 統計は、ファイルシステム内のファイルデータに使用可能なストレージ容量の合計を報告します。

ファイルシステムのパフォーマンスのモニタリングの詳細については、「[Amazon FSx for Lustre ファイルシステムのモニタリング](monitoring_overview.md)」を参照してください。