Amazon Web Services ブログ

Amazon FSx for Lustre による高パフォーマンスワークロード用の永続的ストレージ



高パフォーマンスなファイルシステムは、しばしばスクラッチファイルシステムと永続的ファイルシステムの 2 種類に分類されます。スクラッチファイルシステムとは、一時的な高性能のストレージを提供するためのものです。その性能は、1 ミリ秒未満のレイテンシーで、スループットは最大で毎秒数百ギガバイト、そして短時間のワークロード用に数百万の IOPS を実現します。対照的に、永続的ファイルシステムでは、スクラッチファイルシステムに備わったパフォーマンスレベルに、より長期にわたるデータ処理で必要となる耐久性と可用性を組み合わせるよう設計されています。AWS は、re:Invent 2018 において、世界でも最もよく使用されている高パフォーマンスファイルシステムである Lustre をベースとしたスクラッチファイルシステム Amazon FSx for Lustre (FSx for Lustre) を発表しました。最近リリースした FSx for Lustre の永続的ファイルシステムデプロイオプションでは、可用性と耐久性およびパフォーマンスが高く、POSIX 互換のファイルシステムの、AWS による完全マネージド型でのデプロイを可能にしています。 これによりお客様は、ワークロードの要件に基づき、永続的ファイルシステムまたはスクラッチファイルシステムを柔軟に選択できるようになります。

今回のブログでは、この FSx for Lustre の永続的ファイルシステムデプロイオプションについて一通り説明し、一般的なユースケースを示すと共に、当社が推奨するいくつかのベストプラクティスもご紹介していきます。さらに、FSx for Lustre の永続的ファイルシステムを新規で作成し、マウントも行ってみます。

FSx for Lustre での永続的ファイルシステム

FSx for Lustre の永続的ファイルシステムは、実行時間が長め、もしくは永続的なワークロードに対し、高可用性で耐久性のあるストレージを提供します。スクラッチファイルシステム上のデータは複製が行われないため、ファイルシステムが使用するファイルサーバーに障害が発生した場合は保持されません。一方、永続的ファイルシステムにある高可用性のファイルサーバーでは、そのデータは同じアベイラビリティゾーン内で自動的に複製されます。

永続的ファイルシステムのファイルサーバーが使用不能になると、その障害から数分以内に自動的な置き換えが実行されます。この時間中は、サーバー上のデータに対するクライアントからのリクエストは透過的に再試行され、最終的にファイルサーバーの置き換えが完了した時点でそちらに継承されます。永続的ファイルシステムのデータはディスク上で複製が作られているので、障害が起きたディスクはすべて自動的かつ透過的に置き換えられます。

FSx for Lustre の永続的ファイルシステム説明図

Amazon FSx for Lustre の永続的ファイルシステムが適した用途とは?

耐久性と可用性が高いストレージが要求される処理が重いワークロードに対しては、永続的ファイルシステムの使用を検討します。

次に、FSx for Lustre の永続的ファイルシステムにおいて、最も一般的なユースケースのいくつかを示します。

  • SAS Grid: 永続的ファイルシステムには、SAS アプリケーションが要求する一定の性能が備わっており、すべての SAS Grid ライブラリ (SASDATA、SASWORK、UTILLOC) で永続的ファイルシステムの使用が推奨されます。これらの機能には、ファイルシステムでの高可用性、毎秒ギガバイトのスループット、数百万の IOPS、1 ミリ秒以内のレイテンシー、保存および転送中データに対する暗号化などが含まれます。これらのユースケースの詳細については、最近発行されたホワイトペーパーをご参照ください。
  • ハイパフォーマンスコンピューティング (HPC): HPC ワークロードでは、膨大な量のデータを処理、保存、分析します。こういった重い処理を担うワークロードは、より長い時間実行され、ストレージにはデータを保持し続けるための高い耐久性が必要です。こういったワークロードの例としては、ゲノム科学、機械学習、自律運転車両、計算流体力学、地震解析、研究、電子設計自動化 (EDA) 、金融モデリングその他が挙げられます。
  • コンテナ用永続的ストレージ (KubernetesAmazon EKS): コンテナ化された機械学習と HPC ワークロードのために、Kubernetes もしくは Amazon EKS のセルフマネージド型クラスターを使う場合も、永続的ファイルシステムのデプロイオプションを使用することを推奨します。コンテナは不変なので、シャットダウンが行われると、そのライフタイム中に作成されたデータは失われます。永続的ファイルシステムは、コンテナのライフタイム以降もデータを保持する必要があるアプリケーションに最適です。
  • Amazon EC2 スポット ステートフルネス: EC2 スポットインスタンスで実行するワークロードに永続的ファイルシステムを使用することで、スポットが中断した場合の EC2 インスタンスからのデータコピーを気に掛けることなく、データの再利用が可能になります。
  • S3 でのデータレイク: Amazon S3 でデータレイクをホスティングしている場合は、FSx for Lustre ファイルシステムを S3 バケットもしくはプレフィクスにリンクするように、素早くスピンアップできます。これにより、高パフォーマンスストレージのコンピューティングでの利用が、簡単かつ迅速にになります。FSx for Lustre の永続的ファイルシステムは、アプリケーションを再設計する必要もなく、高速のキャッシュ層として機能させられます。これにより、コンピューティングコストを削減しながら、分析ジョブの高速化が図れます。

永続的ファイルシステムでのベストプラクティス

この項では、FSx for Lustre の永続的ファイルシステムを使用する際に押さえておくべき、ベストプラクティスのいくつかについてお話しします。

セキュリティ: この永続的ファイルシステムにおいても、顧客管理型のカスタマーマスターキー (CMK) による、保存中データの暗号化が利用できるようになりました。特に CMK を指定しない場合は、AWS 管理型 CMK が使用されます。

特定の EC2 インスタンスタイプで FSx for Lustre 永続的ファイルシステムをマウントしている場合には、転送中データの暗号化が自動的に有効化されます。この暗号化機能は、基盤となるハードウェアが提供するオフロードの計算能力を使用するので、ネットワークパフォーマンスには一切影響を与えません。インスタンスタイプについては、こちらのリージョンサポートされる EC2 インスタンスをご参照ください。

加えて、セキュリティグループ、ネットワーク ACL、Identity and Access Management (IAM)のアクセス許可、ポータブルオペレーティングシステムインターフェース (POSIX) のアクセス許可など既存機能を使用して、ストレージのセキュリティを強化することも可能です。

耐久性のあるデータレポジトリとの統合: ファイルシステムは、Amazon Simple Storage Service (Amazon S3) のような、耐久性の高いデータレポジトリとリンクすることも推奨されます。これにより、データレポジトリのタスク API を使って、変更内容を S3 にコピーできるようになります。

データレポジトリタスク API が、お客様のファイルシステムでの変更を自動的に追跡すると同時に、そのデータを S3 にコピーするためのシンプルな仕組みを提供します。このタスクにより、データ、シンボリックリンク (symlinks) 、および、所有者、アクセス権限、タイムスタンプを含む POSIX メタデータなどが転送されます。ファイルもしくはディレクトリをエクスポートする際には、前回のエクスポート以降に作成もしくは修正されたデータファイルやメタデータだけが、ファイルシステムにより転送されます。

パフォーマンス: FSx for Lustre の永続的ファイルシステムではデプロイに関して、PERSISTENT-50、PERSISTENT-100、および、PERSISTENT-200 の、3 つのオプションから選択できます。これらの各デプロイオプションには、ファイルシステムのストレージ 1 TiB ごとに、それぞれ 50-MB/s、100-MB/s、200-MB/s のベースラインディスクスループットを備えています。次の表にその内容を示します。

デプロイタイプ

ネットワークスループット (MB/s、プロビジョニング済みファイルシステムストレージ 1 TiB ごと ) キャッシュ用メモリ (GiB、プロビジョニング済みファイルシステムストレージ 1 TiB ごと ) ディスクスループット (MB/s、プロビジョニング済みファイルシステムストレージ 1 TiB ごと)

ベースライン

可変幅

ベースライン

バースト

PERSISTENT-50

250 最大 1,300* 2.2 50 最大 240
PERSISTENT-100 500

最大 1,300*

4.4 100

最大 240

PERSISTENT-200 750 最大 1,300* 8.8 200

最大 240

ファイルシステムの作成時にユニットごとのスループットを選択すると、そのファイルシステムで利用可能なベースラインのディスクスループットを決定します。ファイルシステムでは、ベースラインと可変のネットワークスループットや、インメモリのキャッシングとバーストディスクスループットにより、ベースラインのディスクスループットより非常に高いスループットレートでの動作が可能となっています。ファイルサーバーにおいてインメモリキャッシュに保存されたデータが読み出される場合、このファイルシステムのパフォーマンスは、ネットワークスループットにより決定されます。ファイルシステムにデータを書き込む場合、システムのパフォーマンスは、ネットワークとディスク、どちらか低い方のスループットで決まります。これは、インメモリキャッシュに保存されていないデータを読み出す場合にもあてはまります。詳細については、ドキュメントにあるパフォーマンスのセクションをご参照ください。

ワークロードのテストには、PERSISTENT-50 のファイルシステムデプロイオプションを使うことをお勧めします。この場合、50 MB/s/TiB のベースラインディスクスループットが利用できます。インメモリキャッシュを活用すると、ベースラインのネットワークスループットは 250 MB/s/TiB に、可変ネットワークスループットは最大で 1300 MB/s/TiB、バーストディスクスループットは最大で 240 MB/s/TiB となり、ファイルシステムのスループットをかなり高めることができます。短いバーストを行うワークロードなら、バーストスループットを活用することで、スループットコストの削減につなげられます。

ファイルシステムで、設計された最高のスループットレベルを発揮させるためには、ワークロードの並列化を推奨します。ファイルシステムクライアントごとにスレッド数を増加させワークロードを並列化すると、ディスクへの書き込みが FSx for Lustre によりバンドルされ、ファイルシステムのスループットを高めることが可能になります。また、ワークロードを実行するクライアントがずべて使用状態にある場合にも、上記と同じ理由から、クライアント数を増加することでファイルシステムにより高いスループットを与えることができます。

EC2 インスタンスでは、FSx for Lustre へのアクセスに固有のネットワークインターフェースを使用するため、より高いネットワークパフォーマンスがあるインスタンスであれば、FSx for Lustre へのより高いファイルシステムスループットを実現できます。r5n、r5dn、m5n、m5dn、ie3n、c5n、もしくは他のネットワーク最適化型インスタンスファミリーでは、ネットワーク非最適化型のインスタンスと比べて、FSx for Lustre に対し、より高いファイルシステムスループットが実現できます。

さらに、お使いのワークロードがファイルシステムのディスク間で均等にバランスされていない場合に、パフォーマンスを最適化するためのなベストプラクティスについても、付け加えておきましょう。

  • Lustre 内のすべてのファイルデータは、オブジェクトストレージターゲット (OST) とよばれるディスク群に保存されます。Amazon S3 からインポートされるファイルに関して、インポート済み OST ファイルを全体でいくつストライプするかは、パラメータ ImportedFileChunkSize により決定されます。このパラメータは、ファイルシステムの作成時に変更することができます。
  • 最適なパフォーマンスのためには、ファイルシステムを構成する OST 全体で、高いスループットが必要な大規模ファイルをストライプします。異なるサイズのファイルに関するレイアウトを明示的に指定する手間を省くためには、プログレッシブファイルレイアウト (PFL) を定義します。

データの移行: AWS DataSync を使うと、オンプレミスもしくはクラウド内のセルフマネージド型 NFS から、S3 バケットにデータをコピーすることができます。その後、コピー先である S3 バケットもしくはプレフィクスにリンクした FSx for Lustre ファイルシステムを、素早くスピンアップできます。FSx for Lustre は、S3 バケット内のオブジェクトをファイルとしてインポートします。さらに、ファイルに対する最初のアクセスが行われた際に、S3 のファイルコンテンツの遅延ロードを有効化します。

FSx for Lustre の永続的ファイルシステム作成方法

サポートされるストレージ容量

永続的ファイルシステムの作成には、1.2 TiB もしくは 2.4 TiB 単位で増やせるサイズが必要です。

利用可能なストレージスループットオプション

すでにご説明したとおりに、フィルシステムの全ストレージ容量における TiB ごとのストレージスループットは、50-MB/s、100-MB/s、200-MB/s の中から選択が可能です。料金は、プロビジョニングするスループット量に応じてお支払いいただきます。

  • 例 1: ストレージユニット毎に 50 MB/s/TiB のスループットを定義した 2.4-TiB のファイルシステム。この場合、集約したスループットはベースラインディスクスループットで 117 MB/s、バーストディスクスループットで最大 563 MB/s、可変ネットワークスループットは最大 3047 MB/s です。
  • 例 2: ストレージユニット毎に 100 MB/s/TiB のスループットを定義した 2.4-TiB のファイルシステム。この場合、集約したスループットはベースラインディスクスループットで 234 MB/s、バーストディスクスループットで最大 563 MB/s、可変ネットワークスループットは最大 3047 MB/s です。
  • 例 3: ストレージユニット毎にデフォルト値である 200 MB/s/TiB のスループットを定義した 2.4-TiB のファイルシステム。この場合、集約したスループットはベースラインディスクスループットで 469 MB/s、バーストディスクスループットで最大 563 MB/s、可変ネットワークスループットは最大 3047 MB/s です。

ファイルシステムの新規作成

永続的ファイルシステムの作成には、AWS マネジメントコンソールAWS コマンドラインインターフェース (AWS CLI)AWS CloudFormation テンプレート、もしくは FSx for Lustre API が使用できます。次に示すサンプルでは、AWS CLI を使い、新しい 1.2-TiB の FSx for Lustre の永続的ファイルシステムを、50-MB/s/TiB のスループットを定義しながら作成しています。この例のファイルシステムは、Amazon Simple Storage Service (Amazon S3) が提供する耐久性のあるデータレポジトリにリンクしています。

$ aws fsx \
 create-file-system \
 --file-system-type LUSTRE \
 --storage-capacity 1200 \
 --kms-key-id 1234abcd-12ab-34cd-56ef-1234567890ab \
 --subnet-ids subnet-012345abcdef \
 --lustre-configuration \
    ImportPath=s3://your-S3-bucket, \
    ExportPath=s3://your-S3-bucket, \
    DeploymentType=PERSISTENT_1, \
    PerUnitStorageThroughput=50

CreateFileSystem API の出力が、ファイルシステム ID、DNS 名、新規ファイルシステムのマウント名を表示します。

{
    "FileSystem": {
        "OwnerId": "0123456789",
        "CreationTime": 1579795074.158,
        "FileSystemId": "fs-0123456abcdefg",
        "FileSystemType": "LUSTRE",
        "Lifecycle": "CREATING",
        "StorageCapacity": 1200,
        "VpcId": "vpc-abcdef",
        "SubnetIds": [
            "subnet-abc123"
        ],
        "DNSName": "fs-0123456abcdefg.fsx.us-east-2.amazonaws.com",
        "KmsKeyId": "arn:aws:kms:us-east-2:0123456789:key/abcde-34cb-4f2e-a6b1-f1ebec93fa99",
        "ResourceARN": "arn:aws:fsx:us-east-2:0123456789:file-system/fs-0123456abcdefg ",
        "Tags": [],
        "LustreConfiguration": {
            "WeeklyMaintenanceStartTime": "2:07:30",
            "DataRepositoryConfiguration": {
                "ImportPath": "s3://your-S3-bucket",
                "ExportPath": "s3://your-S3-bucket/FSxLustre20200123T155754Z",
                "ImportedFileChunkSize": 1024
            },
            "DeploymentType": "PERSISTENT_1",
            "PerUnitStorageThroughput": 50,
            "MountName": "tmmqzbmv"
        }
    }
}

ファイルシステムの作成状況については、次のように、DescribeFileSystems API によるクエリが実行できます。

$ aws fsx \
  describe-file-systems \
  --file-system-ids fs-0123456abcdefg

Output from DescribeFileSystems API shows Lifecycle state as AVAILABLE once the file system is created.

{
    "FileSystems": [
        {
            "OwnerId": "0123456789",
            "CreationTime": 1579795074.158,
            "FileSystemId": "fs-0123456abcdefg",
            "FileSystemType": "LUSTRE",
            "Lifecycle": "AVAILABLE",
            "StorageCapacity": 1200,
            "VpcId": "vpc-abcdef",
            "SubnetIds": [
                "subnet-abc123"
            ],
            "NetworkInterfaceIds": [
                "eni-0abcdefg12345678h",
                "eni-0hijklmn12345678o"
            ],
            "DNSName": "fs-0123456abcdefg.fsx.us-east-2.amazonaws.com",
            "KmsKeyId": "arn:aws:kms:us-east-2:0123456789:key/abcde-34cb-4f2e-a6b1-f1ebec93fa99",
            "ResourceARN": "arn:aws:fsx:us-east-2:0123456789:file-system/fs-0123456abcdefg",
            "Tags": [],
            "LustreConfiguration": {
                "WeeklyMaintenanceStartTime": "2:07:30",
                "DataRepositoryConfiguration": {
                    "ImportPath": "s3://your-S3-bucket",
                    "ExportPath": "s3://your-S3-bucket/FSxLustre20200123T155754Z",
                    "ImportedFileChunkSize": 1024
                },
                "DeploymentType": "PERSISTENT_1",
                "PerUnitStorageThroughput": 50,
                "MountName": "tmmqzbmv"
            }
        }
    ]
}

ファイルシステムのマウント

  1. インスタンスに接続後、Lustre クライアントをインストールします。個別の OS タイプに関しては、インストール手順のページ をご参照ください。
$ sudo amazon-linux-extras install -y lustre2.10
  1. EC2 インスタンスに、/fsx. のような名前でディレクトリを新規作成します。
$ sudo mkdir /fsx
  1. 次に示すように、作成したファイルシステムをマウントします。
$ sudo mount -t lustre -o noatime,flock file_system_dns_name@tcp:/mountname /fsx

file_system_dns_namemountname の部分は、先の DescribeFileSystems API コマンドが実際に出力した値で置き換えます。永続的ファイルシステムには、マウント名を指定する必要があります。

まとめ

今回のブログでは、FSx for Lustre の永続的デプロイオプションをご紹介しました。このデプロイオプションでは、可用性と耐久性の高いストレージや、毎秒数ギガバイトのスループット、数百万の IOPS、1 ミリ秒以下のレイテンシー、および保存中と転送中両方のデータに対する暗号化などが利用できます。使用するファイルサーバーは高可用性で、データは同じアベイラビリティゾーン内に複製されます。これにより、ファイルサーバーの障害が発生した場合でも、ワークロードはデータを維持することが可能になります。

また、永続的ファイルシステムデプロイオプションが使える、いくつかの一般的なユースケース (SAS Grid、HPC ワークロード、セルフマネージド型 Kubernetes、Amazon EKS、EC2 スポットステートフルネス、S3 でのデータレイク) もご紹介しました。ベストプラクティスのセクションでは、ファイルサーバー上のインメモリキャッシュ、ベースラインと可変のネットワークスループット、および、バーストディスクスループットを活用することで、お客様がファイルシステムのスループットレートをより高められる方法について取り上げました。ファイルシステムで、設計された最高のスループットを発揮させるためには、ワークロードの並列化もご検討くだい。短いバーストを発生するスパイキーなワークロードなら、バーストスループットを活用することで、スループットコストの削減につなげられます。また、S3 の統合と移行を使った、セキュリティと変更内容コピーのためのベストプラクティスについても確認しました。最後に、FSx for Lustre の永続的ファイルシステムのデプロイと、クライアントへのマウント方法もご紹介しました。

今回のブログの総括として、サポートされた Linux クライアント上にある POSIX互換のファイルシステムを必要とする任意の高パフォーマンスワークロードでも、FSx for Lustre が使用できることも、ここでもう一度申しあげておきます。

この新しい永続的ファイルシステムの使用開始には、Amazon FSx コンソールをお試しいただくか、AWS CLI、CloudFormation テンプレート、もしくは FSx for Lustre API のいずれかをご利用いただけます。本ブログをお読みいただき、ありがとうございました。ご質問やフィードバックがございましたら、コメントをお寄せください。