Amazon Web Services ブログ
AWS ファイルストレージサービスの選び方
オフィス文書や画像データなどの様々な非構造化ファイルを、ファイル共有サーバや NAS(Network Attached Storage) などに格納して共有で利用されている方も多いと思います。AWS のファイルストレージサービスを利用することで、ファイル共有ストレージを簡単にクラウド上へ構築できます。また、AWS が提供するフルマネージドサービスのため、パッチ適用やストレージのディスク増設などの運用負荷を軽減できるメリットがあります。初期費用が不要の従量課金のため手軽に利用でき、調達が不要なのですぐに利用を開始することができます。また、ストレージのバックアップ機能が備わっているため、手間のかかるバックアップの設計や運用負荷も軽減できます。
AWS のファイルストレージサービスは、Amazon Elastic File System(EFS)や、Amazon FSx for Windows File Server、Amazon FSx for NetApp ONTAP、Amazon FSx for OpenZFS などの複数のサービスが利用できます。
現在利用しているファイル共有サーバや NAS を AWS に移行することを検討されている方々にとって、これらの AWS ファイルストレージサービスの中から、どのサービスを選択すればいいかお悩みではないでしょうか。この記事では、どのように AWS のファイルストレージサービスを選択すればいいかについて、参考となる考え方を説明します。
はじめに
ストレージの種別
はじめにストレージの種別とプロトコルについて説明します。ストレージには、以下の図に示すように主に「ブロックストレージ」と「オブジェクトストレージ」、そして今回説明する「ファイルストレージ」の3つの種類があります。
ファイルストレージのプロトコル
ファイルストレージは、Windows や Linux などのクライアントからツリー構造のフォルダやファイルとして認識され、一目で分かりやすく、使いやすいという特徴があります。ファイルの権限などの情報はメタデータとして管理しています。クライアントから、NFS(Network File System)、もしくは SMB(Server Message Block)というプロトコルを使ってファイルストレージに接続します。これらのプロトコルは複数のクライアントから同時に同じファイルにアクセスして利用することができます。主に Linux や UNIX 系の OS は NFS を利用し、Windows は SMB を利用します。以下に概要を記載します。
注:Windows に NFS クライアントをインストールしたり、Linux に SMB クライアントをインストールして利用することも可能です
AWS のファイルストレージサービス
AWS のファイルストレージサービスは、以下 5 つのサービスをご用意しています。これらのサービスは AWS 内、もしくは AWS Direct Connect や AWS VPN で接続されたオンプレミス環境から利用します。インターネットからはこれらのファイルストレージサービスを利用することはできません。
注:Amazon FSx for Lustre は独自プロトコルで利用し、ハイパフォーマンスコンピューティング(HPC)の利用を想定しているサービスのため、本記事では取り扱いません。また、Amazon FSx for NetApp ONTAP は iSCSI(Internet Small Computer System Interface) にも対応していますが、本記事ではファイルストレージに注目するため、iSCSI については取り扱いません。
続いて、NFS と SMB を利用する上記 4 つの AWS ストレージサービスの概要を説明します。
Amazon Elastic File System(EFS)
EFS は AWS が クラウドネイティブに設計したフルマネージドサービスの NFS ストレージです。難しい設定は不要で、簡単に NFS ストレージが作成できます。ファイルシステムのサイズは自動で拡張および縮小されます。また、伸縮自在のスループットモードを使うことで予測が難しいワークロードでも最適なコストでパフォーマンスを得ることもできます。データはマルチアベイラビリティゾーン(1 ゾーンストレージクラスの場合はシングルアベイラビリティゾーン内)に冗長的に保存されます。ファイルストレージサービスの中で一番最初に実装されたこともあり、AWS Lambda(Lambda) や AWS Fargate(Fargate)など、様々な AWS サービスから利用ができます。NFS v4 と v4.1 をサポートしており、主に Linux から利用します。
Amazon FSx for Windows File Server
Windows Server 上に構築されたフルマネージドのファイルストレージサービスで、SMB で接続して利用します。FSx for Windows File Server の構築時に連携先の Active Directory が選択できます。オンプレミス環境で利用している既存の Active Directory も利用することができますので、現在利用されているドメインユーザから利用することができます。SSD 以外に HDD のストレージタイプが選択できます。HDD はコストは安価ですが、性能は SSD と比較して低くなる点にご注意ください。
Amazon FSx for NetApp ONTAP
NetApp ONTAP をフルマネージドで提供したサービスで、NFS と SMB で接続して利用します。また、ブロックストレージである iSCSI も選択ができます。NetApp ONTAP が持つ様々な機能(Snapshot や SnapMirror、SnapVault、FlexCache、FlexClone、重複排除など)を利用できる点が特徴です。また、他の FSx サービスと異なる特徴として、シングルアベイラビリティゾーンで構成しても、Active/Standby のファイルストレージが 2 台で構成されます。そのため、シングルアベイラビリティゾーンであっても高い可用性が確保でき、メンテナンス時は Standby 側のファイルストレージにフェイルオーバするので短い停止時間で済む利点があります。また、利用していないブロックを安価なキャパシティティアに自動的にティアリングする機能も保有しています。SMB で利用の場合は Active Directory と連携ができます。
Amazon FSx for OpenZFS
オープンソースで人気の高い高性能な OpenZFS をフルマネージドで提供したサービスで、NFS で接続して利用します。EFS と比較して、NFS のエクスポートパラメータなど設定ができ、またスナップショットやクローンなどで柔軟に運用できる点が特徴です。本記事の執筆時点で、シングルアベイラビリティゾーンのみの提供となっている点にご留意ください。
AWS ファイルストレージサービスの比較
以下に各ファイルストレージサービスの一覧を記載します。
EFS は簡単にファイルシステムを作成することができ、分散型としてスケールアウト型の特徴を持ちます。FSx はスループットや IOPS を大きくすればするほど、ファイルストレージのリソースが増大するスケールアップ型の特徴を持ちます。EFS はデータを複数のアベイラビリティゾーンに分散して書き込みを行うため、可用性と耐久性は高くなりますが、小さなファイルやメタデータの書き込みについてはレイテンシーが増加する可能性があります。
また、EFS は FSx と比較して NFS のパラメータチューニングに制限があり、NFS nconnect のようなマルチセッションは構成できません。このため、より性能を重視するケースでは、FSx の方がチューニングをしやすいと思います。対応しているクライアントについては、EFS は Linux に対応しており、一方で FSx シリーズは Linux 以外に Windows と MacOS にも対応している違いがあります。また、EFS は、Fargate や Lambda といったクラウドネイティブコンピュートに対応していますので、サーバレスの永続ファイル共有ストレージには EFS のご利用を検討ください。
なお、本記事の執筆時点では FSx for NetApp ONTAP と FSx for OpenZFS は大阪リージョンに対応していません。日本国内で災害対策環境を構成する必要がある場合はご注意ください。
以下に各サービスが対応するプロトコルを記載します。
NFS に対応しているサービスは EFS と FSx for OpenZFS、FSx for NetApp ONTAP です。SMB に対応しているサービスは FSx for Windows File Server と、FSx for NetApp ONTAP となります。FSx for NetApp ONTAP は NFS と SMB の両方のプロトコルに対応しているだけではなく、iSCSI も対応しているマルチプロトコルである点が特徴です。
AWS ファイルストレージサービスの選び方
ここから説明する内容は、あくまで参考です。性能や可用性、コスト、その他の要件にマッチするか、概念実証(PoC)を実施して事前に確認することをお勧めします。
PoC の際は、実際のワークロードに近いデータパターン(同時接続クライアント数、ファイル数、ファイルサイズ、データの内容、バースト性など)で検証して、要件を満たせるかを確認してください。特に NFS や SMB のプロトコルは、小さなファイルの読み書きに対しては性能を出しにくい傾向がありますので、大量の小さなファイルを取り扱うワークロードを予定している場合は、念入りに検証を実施してください。
求めている内容から検討する
ファイルストレージに求めている内容よりサービスを検討してください。
利用 OS から検討する
ファイルストレージを利用する OS からサービスを検討してください。
どの AWS ファイルストレージサービスでも要件を満たさない場合は、ファイルストレージサービスを分割したり、クライアントの処理を並列化することで改善するかも確認ください。また、ブロックストレージである Amazon EBS や、FSx for NetApp ONTAP の iSCSI の活用や、Amazon EC2 上に個別のファイルストレージを構築したり、オンプレミスのファイルストレージとクラウドのストレージの両方を活用するハイブリッドクラウド構成なども検討ください。
性能を改善するために、キャッシュを活用することも検討してください。オンプレミス側に FSx for Windows File Server のキャッシュが配置できる Amazon FSx File Gateway や、NFS と Amazon S3 の AWS 側キャッシュを提供する Amazon File Cache(補足:本記事の執筆時点では NFS は v3 のみの対応となり、EFS には対応していません)、もしくは FSx for NetApp ONTAP のオンプレミス側および AWS 側のキャッシュを提供する FlexCache などが利用できます。
AWS のファイルストレージサービスは、初期費用が不要の従量課金サービスのため PoC が完了して不要になったタイミングで環境を削除して頂くことで、それ以降の費用はかかりません。Poc 環境を削除する前にバックアップすることで、再度 PoC を実施する際に迅速にリストアをすることもできます。このため、気兼ねなく PoC を実行して要件を満たすことができるかを確認して頂ければと思います。
本記事が AWS ファイルストレージサービスへの移行を検討されている方々の一助になれば幸いです。