Amazon Web Services ブログ

新発表 – Amazon FSx for Lustre

ペタバイト(PiB – 1,125,899,906,842,624 バイト)は驚異的なデータ量であり、ヒトの脳の記憶容量見積もりの半分近くに相当するほどです。データレイクや、HPC(High performance Computing)、EDA(Electronic Design Automation) といったアプリケーションは伝統的にこのようなスケールに対応する必要があり、更に近年では機械学習やメディア処理といったデータインテンシブなアプリケーションも加わっています。

Amazon FSx for Lustre

本日(2018年11月28日)私達は、このような今まで夢見ていたような需要に答えるため、Amazon FSx for Lustreをローンチいたしました。Amazon FSx for Lustreは、著名かつ成熟したオープンソースプロジェクトであるLustreをベースにした高並列なファイルシステムであり、ペタバイトスケールのファイルシステムに対するミリ秒以下でのアクセスをサポートします。数千のクライアント(EC2インスタンスやオンプレミスサーバー)による同時アクセスにより、数百万IOPS(Input/Output Operation per Second)や数百GB/secものデータ転送を行うことが可能です。

このサービスでは、数分でファイルシステムを作成し、すぐにでも多数のクライアントからマウントして利用を開始することが可能です。また、完全マネージド型のサービスのため、管理や保守に手間をかける必要はありません。さらにこのサービスでは一時的な用途のスタンドアローンなファイルシステムを作成するだけでなく、S3のバケットとシームレスに接続してコンテンツがLustreファイルシステム上にあるかのようにアクセスすることも可能です。各ファイルシステムはNVMe SSDストレージにより構成されており、3.6 TiB単位でプロビジョンされ、1 TiBごとに200 MBpsのスループット、10,000 IOPSを発揮できるようにデザインされています。

Lustre File Systemの作成

Lustreファイルシステムの作成は、AWS Management ConsoleやCLI、CreateFileSystem関数より行うことができます。今回はCLIから作成してみましょう。シンプルにLustreのエンドポイントを設置するサブネットと、必要なストレージ容量を指定するだけです:

$ aws fsx create-file-system --file-system-type LUSTRE --storage-capacity 3600 --subnet-ids subnet-009a1149
----------------------------------------------------------------------------------------------
|                                      CreateFileSystem                                      |
+--------------------------------------------------------------------------------------------+
||                                        FileSystem                                        ||
|+-----------------+------------------------------------------------------------------------+|
||  CreationTime   |  1542666225.28                                                         ||
||  DNSName        |  fs-00a2e062546ff4fce.fsx.us-east-1.amazonaws.com                      ||
||  FileSystemId   |  fs-00a2e062546ff4fce                                                  ||
||  FileSystemType |  LUSTRE                                                                ||
||  Lifecycle      |  CREATING                                                              ||
||  OwnerId        |  012345678912                                                          ||
||  ResourceARN    |  arn:aws:fsx:us-east-1:012345678912:file-system/fs-00a2e062546ff4fce   ||
||  StorageCapacity|  3600                                                                  ||
||  VpcId          |  vpc-e68d9c81                                                          ||
|+-----------------+------------------------------------------------------------------------+|
|||                                   LustreConfiguration                                  |||
||+----------------------------------------------------------------+-----------------------+||
|||  WeeklyMaintenanceStartTime                                    |  5:09:00              |||
||+----------------------------------------------------------------+-----------------------+||
|||                                        SubnetIds                                       |||
||+----------------------------------------------------------------------------------------+||
|||  subnet-009a1149                                                                       |||
||+----------------------------------------------------------------------------------------+||

ファイルシステムがAVAILABLEになるまで5分程度かかります:

$ aws fsx describe-file-systems --file-system-id fs-00a2e062546ff4fce | grep Lifecycle
||  Lifecycle      |  AVAILABLE       

私のEC2インスタンスには、事前にLustre kernel moduleとLustre clientをインストールしておきました:

マウントポイントを作成し、Lustreファイルシステムをマウントします:

$ sudo mkdir /fsx
$ sudo mount -t lustre fs-00a2e062546ff4fce.fsx.us-east-1.amazonaws.com@tcp:/fsx /fsx

これで、3.4 TiBのLustreファイルシステムが利用できるようになりました:

この他にも、S3バケット(またはバケットの中の特定のプレフィックス下への領域)へのフロントエンドとしてLustreファイルシステムを作成することができます。これにより、S3バケットをデータレイクとして扱いつつ、アプリケーションからはファイルベースで処理を行うことができます。この設定を行うには、単純にファイルシステム作成時にImportPathを指定するだけです:

$ aws fsx create-file-system --file-system-type LUSTRE --storage-capacity 3600 \
  --subnet-ids subnet-009a1149 --lustre-configuration ImportPath=s3://jbarr-src

今回使用する私のS3バケットには、100万のファイルが含まれており、ファイルシステムの作成には約30分かかります(開発チームによれば、秒間500ファイル程度かかるそうです)。これが私のバケットです:

そして、EC2インスタンスからは次のように見えます:

この時、Lustreファイルシステムは、私のオブジェクトのすべてのメタデータ(ファイル名、日付、サイズ等)を有していますが、実際のデータについては含まれていません。データについては必要になった時点でS3からコピーされます。そのため、次のコマンドではS3へのアクセスは発生しません:

$ find . -type f

次のコマンドでは、若干のレイテンシについてのペナルティを伴ってS3からファイルシステムにデータがコピーされます:

$ find . -type f -exec grep -l -i main {} \;

もし事前にファイルシステムへのアクセスパターンが分かっているのであれば、lfsコマンドのhsm_restoreオプションを用いて、あらかじめデータをロードしておくことができます。例えば、C言語のヘッダーファイルを解析したい場合は次のようになります:

$ find . -type f -name '*.h' -print0 | \
  xargs -0 -n 50 -P 8 sudo lfs hsm_restore

ファイルへのすべての変更は、ファイルシステムの中にとどまっています。変更をS3 に出力するには、lfsコマンドのhsm_archiveオプションを使用します:

$ sudo lfs hsm_archive README.md
$ sudo lfs hsm_action README.md

最初のコマンドはS3への出力を開始し、二つ目のコマンドでNOOPと表示されれば、完了したことを表します。変更されたファイルは、同じS3バケットのExportPathで指定されたプレフィックスに出力されます:

以下のコマンドでExportPathを確認することができます:

$ aws fsx describe-file-systems --file-system-id fs-086f5160a68bc158b | grep Path
||||  ExportPath       |  s3://jbarr-src/FSxLustre20181120T005845Z                        ||||
||||  ImportPath       |  s3://jbarr-src

各ファイルシステムについてCloudWatchより豊富なメトリクスを確認することができます:

まだまだ多くの機能があるのですが、スペースが足りなくなってきました。例えば、Amazon FSx for Lustreがいかにスケールするかについて、ご紹介することができませんでした。今回は単一のクライアントからのアクセスでしたが、実際には数千クライアントからのアクセスに簡単に対応することができます。

Things to Know

ここではAmazon FSx for Lustreに関係したいくつかの興味深いトピックについてご紹介します。

コンソールアクセス

今回の投稿ではCLIを使用しましたが、マネージメントコンソールからも操作することが可能です。

リージョン

Amazon FSx for Lustreは次のリージョンで利用可能です(2018年11月28日現在): US East(N. Virginia)、US West(Oregon)、Europe(Ireland)。

価格

価格はプロビジョンしたストレージ容量に基づいて決まり、US East(N. Virginia)、US West(Oregon)、Europe(Ireland)では $0.14 / GiB / 月です。

アクセス

ファイルシステムにはEC2インスタンスからアクセスできます。また、AWS Direct Connectによる専用線接続を用いることで、既存のデータセンターからファイルシステムにアクセスすることも可能です。

セキュリティ

ファイルシステムへのアクセスはセキュリティグループを経由し、IAMポリシーにより細かくアクセス制御を行うことが可能です。また、ファイルシステム内のデータは、サービスによって鍵が管理される、256-bit鍵ブロック暗号化が適用されます。

今すぐご利用可能です

Amazon FSx for Lustreは今すぐご利用可能です。是非今日から使い始めてみてください!

Jeff;

翻訳はSA宮本大輔が対応しました。原文はこちら