Amazon Web Services ブログ

Amazon File Cache – オンプレミスファイルシステムのための AWS のハイパフォーマンスキャッシュ

このブログは 2022 年 9 月 30 日に Sébastien Stormacq (Principal Developer Advocate)によって執筆された内容を日本語化したものです。原文はこちらを参照してください。

本日、Amazon File Cache の提供を開始したことを発表できることを嬉しく思います。この新しい AWS の高速なキャッシュサービスは、オンプレミスを含む様々な場所に保管されているファイルデータを処理するために設計されています。Amazon File Cache は、元のファイルがオンプレミスの NFS v3 経由でアクセスできるファイルシステムや、Amazon Simple Storage Service(Amazon S3) のいずれに格納されていても、高速で使い慣れた POSIX インターフェイスを使用してアプリケーションからファイルにアクセスできるようにし、最も要求の厳しいクラウドバーストとハイブリッドワークフローを高速および簡素化します。

例えば、オンプレミスのストレージ基盤上に大量のデータセットがあり、月末のレポート作成に通常 2 ~ 3 日かかるとします。この月末のレポート作成処理をクラウドに移行し、より多くの CPU とメモリを搭載したサーバーで実行することで、処理時間を短縮したいと思うでしょう。しかし、データセットをクラウドに移行する準備はまだできていません。

あるいは、複数リージョンにまたがる Amazon Simple Storage Service(Amazon S3) にある大量のデータセットにアクセスする状況を想像してみてください。このデータセットを利用するアプリケーションは、従来の(POSIX)ファイルシステムアクセス用にコード化されており、awk や、sedpipe などのコマンドラインツールを使用します。アプリケーションは、ミリ秒以下のレイテンシーでファイルにアクセスする必要があります。あなたは、S3 API を使用するためにソースコードを更新することはできません。

Amazon File Cache は、これらや、他の多くのユースケースに対応するのに役立ちます。動画ファイル、AI / ML データセットなどの管理と変換について考えてみてください。Amazon File Cache は、NFS v3 ファイルシステムもしくは S3 バケットのフロントにファイルシステムベースのキャッシュを作成し、1 つまたは複数のリージョンで使用します。ファイルのコンテンツとメタデータ(ファイル名、サイズ、パーミッションなど)をオリジンから透過的にロードし、従来のファイルシステムとしてアプリケーションに提供します。Amazon File Cache は、使用頻度の低いキャッシュファイルを自動的に解放することで、アプリケーションで最も利用されているファイルをキャッシュとして利用できるようにします。

最大 8 つの NFS ファイルシステムまたは 8 つの S3 バケットをキャッシュにリンクすることができ、それらは一元管理されたファイルおよびディレクトリのセットとして公開されます。仮想マシンやコンテナなど、さまざまな AWS コンピュートサービスからキャッシュにアクセスできます。利用者は Amazon File Cache とオンプレミスインフラストラクチャー間の接続は、AWS Direct Connect または Site-to-Site VPN をベースにした既存のネットワーク接続を使用します。

Amazon File Cache を使用すると、アプリケーションは一貫したサブミリ秒のレイテンシと、最大数百 GB / 秒 のスループット、最大で毎秒数百万の IOPS の恩恵を受けることができます。Amazon Elastic Block Store(Amazon EBS)などの他のストレージサービスと同様に、性能はキャッシュサイズに依存します。キャッシュサイズは、最小 1.2 TiB からペタバイト規模に拡張できます。

ウォークスルー

どのように動作するかを説明するために、2 つの既存の Amazon FSx for OpenZFS ファイルシステム上にファイルキャッシュを作成します。実際の状況では、オンプレミスのファイルシステム上にキャッシュを作成することが多いと思いますが、私はオンプレミスのデータセンター環境を保有していないため、本デモでは Amazon FSx for OpenZFS を選択しました。デモ用の OpenZFS ファイルシステムには AWS アカウントのプライベートサブネットからアクセスします。EC2 Linux インスタンスからキャッシュにアクセスして利用します。

ブラウザを開き、AWS マネジメントコンソールに移動します。コンソールの検索バーで「Amazon FSx」を検索し、左のナビゲーションメニューで「キャッシュ」をクリックしてください。または、コンソールのファイルキャッシュセクションに直接移動します。そして「キャッシュを作成」を選択します。

Amazon File Cache console

「キャッシュ名」(本デモでは AWSNewsBlog)と、「キャッシュストレージ容量」を入力してくだい。キャッシュストレージ容量は、テビバイトで入力してください。最小値は 1.2 TiB で、2.4 TiB 刻みで設定します。大きなキャッシュサイズを選択すると、スループット容量が増加することに注意してください。Amazon File Cache create 1

「ネットワークとセキュリティ」にて、デフォルト値を確認し、設定してください。キャッシュのネットワークインターフェイスに関連付ける VPC と、サブネット、セキュリティグループを選択します。ファイルにアクセスする際のレイテンシーを最小にするために、キャッシュをコンピュートサービスと同じサブネットに配置することを推奨します。「暗号化」にて、AWS KMS が管理するキー(デフォルト)か、独自のキーを選択することができます。

次に、「データリポジトリアソシエーション」を作成します。これは、キャッシュとデータソース間のリンクです。データソースには、NFS ファイルシステムか、S3 バケット、プレフィックスを指定します。1 つのキャッシュに対して、最大 8 つのデータリポジトリアソシエーションを作成することができます。キャッシュのデータリポジトリアソシエーションはすべて同じタイプ(すべて NFS v3 か、すべて S3)で作成してください。両方のキャッシュが必要となる場合は、キャッシュを 2 つ作成することができます。

本デモでは、AWS アカウント上の 2 つの OpenZFS ファイルシステムをリンクします。すでにオンプレミスにあるものも含め、どの NFS v3 サーバーにもリンクできます。「キャッシュパス」には、ソースファイルシステムがキャッシュにマウントされる場所を記載します。「データリポジトリパス」には、NFS v3 または S3 データリポジトリの URL を記載します。形式は、nfs://hostname/path または s3://bucketname/path です。

「DNS サーバー IP アドレス」は、Amazon File Cache が NFS サーバーの DNS 名を解決できるようにします。本例のように、DNS 名前解決がプライベートである場合に便利です。VPC に配置された NFS v3 サーバーを関連付ける場合や、AWS 提供の DNS サーバーを使用する場合は、VPC の DNS サーバー IP アドレスは VPC ネットワーク範囲に 2 を追加したものになります。本例では、VPC の CIDR 範囲は 172.31.0.0 なので、DNS サーバー IP アドレスは 172.31.0.2 となります。

「追加」ボタンをクリックするのを忘れないでください。追加しない場合は、データレポジトリアソシエーションに入力した内容は無視されます。この操作を繰り返すことで、さらにデータリポジトリを追加できます。

File Cache - Create new Data Repository Association- dataset one File Cache - Create new Data Repository Association- dataset two

2 つのデータリポジトリを入力したら「Next」を選択し、選択内容を確認してください。内容に問題がなければ「キャッシュを作成」を選択します。

File Cache - review choices

数分後にステータスが「 ✅ 利用可能」になります。

Amazon File cache status is available

最後に、ワークロードがデプロイされている EC2 の Linux へキャッシュをマウントします。Amazon File Cache は裏で Lustre を利用しています。ドキュメントで説明されているように、まず Linux 用の Lustre クライアントをインストールする必要があります。完了したら、コンソールで「アタッチ」ボタンを選択し、Lustre クライアントのダウンロードとインストール、キャッシュファイルシステムのマウント方法を確認します。

File Cache Attach

キャッシュを作成した VPC で稼働している EC2 インスタンスに接続して、以下のようなコマンドを実行してください。

sudo mount -t lustre -o relatime,flock file_cache_dns_name@tcp:/mountname /mnt

上記のコマンドには、2 つのオプションが含まれています。

  • relatimeatime (inode access times)データを維持するが、ファイルアクセスのたびに維持するわけではない。このオプションを有効にすると、atime データが最後に更新された(mtime)後にファイルが変更された場合や、ファイルが最後にアクセスされたのが一定時間以上前(デフォルトは 1 日)の場合にのみ、atime データがディスクに書き込まれる。
    キャッシュの自動削除が正しく動作するためには、relatime の指定が必要となる。
  • flock – キャッシュのファイルロックを有効にする。ファイルロックを有効にしない場合は、flock の指定は不要。

キャシュをマウントすると、EC2 インスタンス上で実行されているプロセスは、通常通りキャッシュ内のファイルにアクセスできます。キャッシュ作成時に定義したように、1 つ目の OpenZFS ファイルシステムはキャッシュ内の /dataset1 として、2 つ目の OpenZFS ファイルシステムは /dataset2 として利用可能です。

$ echo "Hello File Cache World" > /mnt/zsf1/greetings

$ sudo mount -t lustre -o relatime,flock fc-0280000000001.fsx.us-east-2.aws.internal@tcp:/r3xxxxxx /mnt/cache

$ ls -al /mnt/cache
total 98
drwxr-xr-x 5 root root 33280 Sep 21 14:37 .
drwxr-xr-x 2 root root 33280 Sep 21 14:33 dataset1
drwxr-xr-x 2 root root 33280 Sep 21 14:37 dataset2

$ cat /mnt/cache/dataset1/greetings
Hello File Cache World

Amazon CloudWatch のメトリクスと AWS CloudTrail のログモニタリングを使用して、キャッシュのアクティビティと健全性を監視、測定することができます。

Amazon File Cache リソースの CloudWatch メトリクスは、以下の 3 つのカテゴリに分類されています。

  • フロントエンド I/O メトリクス
  • バックエンド I/O メトリクス
  • キャッシュフロントエンド使用率メトリクス

いつものようにダッシュボードを作成したり、アラームを定義して、メトリクスが定義した閾値に達したときに通知されるように設定することができます。

留意事項

Amazon File Cache を使用するまたは使用予定がある場合において、いくつかの重要なポイントがあります。

まず、Amazon File Cache は保管時のデータ暗号化と、転送時のデータ暗号化をサポートしています。利用者の保管時のデータは、AWS Key Management Service(AWS KMS)で管理されるキーを使用して、常に暗号化されます。サービス所有の鍵または利用者独自の鍵(カスタマーマネージドキー)のいずれかを使用することができます。

次に、Amazon File Cache はデータリポジトリからキャッシュにデータをインポートする方法として、レイジーロードとプリロードという 2 つのオプションを提供しています。レイジーロードは、データがまだキャッシュされていない場合にオンデマンドでインポートし、プリロードは、ワークロードを開始する前にユーザーのリクエストに応じてデータをインポートしておくことを指します。レイジーロードがデフォルトのオプションとなります。メタデータとデータがキャッシュにインポートされるのを待たずにワークロードが開始できるため、ほとんどのワークロードで利用できます。プリロードは、利用者のアプリケーションが初動アクセスのレイテンシーに敏感である場合に役立ちます。

価格と利用可能リージョン

Amazon File Cache の使用には、初期費用や固定費はかかりません。プロビジョニングされたキャッシュストレージ容量とメタデータストレージ容量が課金対象となります。詳細は価格ページをご覧ください。Amazon File Cache 自体の利用料以外に、S3 リクエストの費用や、AWS Direct Connect の費用、Amazon File Cache とデータソース間の AZ 間、リージョン間、インターネット送信にかかる通常のデータ転送費用が発生します。

Amazon File Cache は、US East(Ohio)と、US East(N. Virginia)、US West(Oregon)、Asia Pacific(Singapore)、Asia Pacific(Sydney)、Asia Pacific(Tokyo)、Canada(Central)、Europe(Frankfurt)、Europe(Ireland)、Europe(London)で利用可能です。

さあ、はじめてのファイルキャッシュを作成しましょう。

— seb

翻訳は AWS プロフェッショナルサービス本部の葉山が担当しました。