Amazon EFSの共有ファイルストレージ・性能・暗号化
Amazon EFSのNFS共有、アクセス方式、性能モードとスループットモード、ストレージクラス、容量の伸縮、暗号化移行を整理します。
Amazon EFSの役割
**Amazon Elastic File System(Amazon EFS)**は、NFS(Network File System)プロトコルでファイルを共有するフルマネージド型の弾力的なファイルストレージです。ファイルサーバーの構築や容量の事前確保をせずに利用を始められ、AWSがファイルストレージ基盤を管理します。利用者はファイルシステムをマウントして、通常のファイルやディレクトリとしてデータを読み書きします。
EFSはブロックデバイスをEC2へ「アタッチ」するサービスではありません。NFSクライアントからファイルシステムをマウントする点がEBSとの違いです。EFSはNFSv4.0およびNFSv4.1をサポートし、複数のクライアントが同じファイルシステムを同時に利用できます。
クライアントと接続方法
EC2からのマウント
EFSの代表的なクライアントはLinuxベースのEC2インスタンスです。NFSクライアントを用意し、VPC内に作成したEFSマウントターゲットを経由してファイルシステムをマウントします。AWS提供の amazon-efs-utils とEFSマウントヘルパーを利用すると、EFS固有のマウント機能も利用できます。
マウントターゲットはVPC内のNFSエンドポイントです。Regionalファイルシステムでは、利用するAZごとにマウントターゲットを作成できます。一般には各EC2インスタンスと同じAZのマウントターゲットを使う構成を検討し、セキュリティグループでクライアントからのNFS通信(TCP 2049)を許可します。ネットワークに到達できることに加え、IAM認可やPOSIX権限など、EFSのアクセス制御も適切に設定します。
オンプレミスからのマウント
オンプレミスのサーバーからEFSを使うこともできます。オンプレミスネットワークとEFSのVPC間には、AWS Direct ConnectまたはAWS Site-to-Site VPNなどの接続を用意し、マウントターゲットのあるサブネットへの経路を確保します。サーバーはLinuxベースである必要があり、マウントターゲットのセキュリティグループではオンプレミス側からTCP 2049への接続を許可します。オンプレミスからは到達可能なマウントターゲットのIPアドレスを使ってマウントする構成が利用できます。
Direct Connectは専用ネットワーク接続、Site-to-Site VPNはIPsec VPN接続です。要件に応じてどちらか、または適切なネットワーク構成を選択します。「EFSをオンプレミスサーバーへアタッチする」のではなく、AWSネットワークへの接続とNFSマウントを構成する、と理解してください。
Windowsとの使い分け
Amazon EFSはMicrosoft WindowsベースのEC2インスタンスからの利用をサポートしていません。WindowsのSMBファイル共有が必要な場合は、Amazon FSx for Windows File Serverなど要件に合うサービスを選択します。EFSがNFSを使うLinux向け共有ファイルシステムであるのに対し、FSx for Windows File ServerはWindows環境との親和性が高いマネージドファイルサーバーです。
複数AZ構成とファイルシステムタイプ
複数のEC2インスタンスは同一のEFSファイルシステムをマウントできます。ファイルシステムのデータ冗長化範囲は、RegionalとOne Zoneのどちらを選ぶかで異なります。
| ファイルシステムタイプ | データの保存範囲 | 選択の考え方 |
|---|---|---|
| Regional | 同一リージョン内の複数AZに冗長保存 | AZ障害への耐性を求める一般的な選択肢。複数AZのクライアントから共有する構成に向く |
| One Zone | 1つのAZに保存 | Regionalより低コストにできる場合があるが、AZ全体の障害に対するデータ保護範囲が異なる。バックアップや復旧要件も合わせて設計する |
EFSの「複数AZのインスタンスからアクセスできる」という性質だけで、データが必ず複数AZに保存されているとは判断できません。One Zoneファイルシステムも別AZのクライアントからアクセスできますが、データは選択した1つのAZに置かれます。可用性・耐久性の要件に応じてファイルシステムタイプを選びます。
容量の伸縮とEBSとの違い
EFSはストレージ容量を先に決めて割り当てる方式ではありません。ファイルを保存すると使用量が増え、ファイルを削除すると使用量が減ります。容量の増加・縮小を利用者が手作業で行う必要がなく、使用データ量に応じて弾力的に拡張・縮小する設計です。
EBSでは既存ボリュームのサイズを拡張できますが、既存ボリューム自体をそのまま縮小することはできません。容量を小さくしたい場合は、より小さな新しいボリュームを作成してデータを移行します。この違いを整理すると、容量を自動的に伸縮させたい共有ファイルストレージはEFS、EC2に接続するブロックデバイスを必要な容量で管理したい場合はEBSが候補になります。
性能モードとスループットモード
EFSでは、ファイル操作の特性に関わるパフォーマンスモードと、ファイルシステムが処理するデータ転送量の決め方に関わるスループットモードを別々に考えます。高いスループットが必要だからといって、パフォーマンスモードとスループットモードを同じ設定として扱わないようにします。
パフォーマンスモード
| モード | 特徴と選択上の注意 |
|---|---|
| General Purpose(汎用) | 低レイテンシが重要な一般的な用途に適する。Web配信、コンテンツ管理、ホームディレクトリ、一般的なファイル共有などで使われ、AWSも通常はこちらを推奨している |
| Max I/O(最大I/O) | 以前の世代のパフォーマンスモードで、General Purposeより操作ごとのレイテンシが高い。作成APIでは引き続き指定できるが、One ZoneファイルシステムおよびElasticスループットではサポートされない。現在はGeneral Purposeが推奨されるため、Max I/Oを新規設計で選ぶ前に制約と要件を確認する |
ビッグデータ分析やメディア処理のように大量のデータ転送が必要な場合でも、まずスループットモードやファイルシステムタイプなどを含めて要件を確認します。「高スループットならMax I/O」と短絡しないことが重要です。Max I/Oは以前の世代の選択肢であり、特にElasticスループットを使う構成やOne Zoneでは選べません。General Purposeが全ファイルシステム向けの推奨モードです。
スループットモード
| モード | スループットの決まり方 | 料金を考える際の観点 |
|---|---|---|
| Elastic | ワークロードの活動に応じて必要なスループットを自動調整する | 実際に使用したスループットに基づく課金。負荷が変動する用途に向く。現在の一般的な推奨モード |
| Provisioned | ファイルシステムのデータ量とは独立して、必要なスループットを指定する | ストレージ料金に加え、プロビジョニングしたスループットに対する料金が発生する。安定した高いスループットを継続して必要とする用途で検討 |
| Bursting | Standardストレージのデータ量などを基準にベースライン性能が決まり、クレジットを使って一時的にバーストする | 利用可能な性能はデータ量やバーストクレジットに左右される。処理が継続的にベースラインを超える用途では要件とモードを再評価する。Max I/Oと組み合わせる場合は、ElasticではなくBurstingなどサポート対象の組み合わせが必要 |
Provisionedで追加料金になるのはプロビジョニングしたスループットです。パフォーマンスモードがMax I/Oだからスループット料金が加算される、という意味ではありません。EFSの料金にはストレージクラス、スループット、アクセス内容など複数の要素が関係するため、課金単位をAWSの料金ページで確認します。
ストレージクラスとライフサイクル管理
EFSはアクセス頻度に応じて、Standard、Infrequent Access(IA)、Archiveのストレージクラスを使い分けられます。ライフサイクル管理ポリシーをファイルシステムに設定すると、ファイルの最終アクセス状況に基づいてストレージクラス間の移行を自動化できます。
| ストレージクラス | 主な用途 | コスト・アクセス上の観点 |
|---|---|---|
| Standard | 頻繁にアクセスするファイル | 頻繁なアクセスに適した基本クラス。ファイルシステムのメタデータは常にStandardに保持される |
| Infrequent Access(IA) | 数か月に数回程度など、アクセス頻度の低いファイル | 保存コストを抑えやすい一方、データアクセス時の料金が発生する。アクセス頻度が低いデータ向け |
| Archive | 年に数回以下など、さらにアクセス頻度の低い長期保存データ | IAより長期保存に適した低コストクラス。アクセス時の料金やレイテンシを含め、利用パターンを確認する |
ライフサイクルポリシーでは、StandardからIAへ移すまでの期間、StandardまたはIAからArchiveへ移すまでの期間、IAやArchiveからStandardへ戻す条件を個別に設定できます。標準の移行設定では、Standardで一定期間アクセスされないファイルをIAへ、より長い期間アクセスされないファイルをArchiveへ移行できます。AWSの既定値はIAが30日、Archiveが90日ですが、要件に合わせて期間を調整してください。
IAまたはArchive内のファイルがアクセスされたときにStandardへ戻すポリシーも設定できます。既定ではアクセスしたファイルを自動的にStandardへ戻さず、そのクラスに残す動作です。レイテンシに敏感なアプリケーションでは、「最初のアクセス時にStandardへ戻す」設定が適する場合があります。ストレージ単価の低さだけで判断せず、アクセス料金や戻し方も設計します。
EFS Archiveは2023年に追加されたクラスです。S3 Glacierなどのオブジェクトストレージのアーカイブクラスとはサービスもアクセスモデルも異なり、EFSのファイルシステム内でライフサイクル管理によってファイルを移行します。
暗号化と既存データの移行
EFSの保存時暗号化
EFSではファイルシステムの作成時に保存時暗号化を有効にできます。AWS Management Consoleでは既定で有効ですが、CLI/APIから作成する場合は暗号化を明示的に指定します。必要に応じてAWS KMSのカスタマー管理キーを選択します。保存時暗号化と、クライアントからEFSへの通信時暗号化は別の設定であり、通信時暗号化はマウント方法を含めて構成します。
作成後のEFSファイルシステムについて、暗号化設定を無効から有効へ直接変更することはできません。暗号化されていない既存ファイルシステムのデータを暗号化したい場合は、暗号化を有効にした新しいEFSファイルシステムを作成し、既存側からデータをコピーまたはレプリケートして移行します。切り替え時には、コピー中の更新差分、アクセス先の変更、権限やマウント設定も確認します。
EBSの既存ボリュームを暗号化する
EBSボリュームも作成時に暗号化を有効にできます。また、アカウントのEBS暗号化のデフォルト設定を有効にすると、新規ボリュームやスナップショットコピーの暗号化を標準化できます。ただし、既存の非暗号化ボリュームそのものを、ボリューム変更操作だけで暗号化することはできません。
既存EBSデータを暗号化する場合は、元ボリュームのスナップショットを取得し、そのスナップショットを暗号化してコピーします。暗号化されたコピーから新しいEBSボリュームを作成し、データとアプリケーションを確認したうえでEC2へ付け替えます。EBSでは、スナップショットの暗号化コピーと新規ボリュームの作成を行うのであり、元ボリュームの暗号化属性を直接切り替えるのではありません。
EBSとEFSの双方で、暗号化は作成時に有効化し、既存の非暗号化データは新しい暗号化先へ移行するのが基本です。ただし、EBSはスナップショットを介したボリューム置き換え、EFSは新しいファイルシステムへのファイルコピー/レプリケーションとなり、手順は同一ではありません。
要件から選ぶ
| 要件 | 選択の考え方 |
|---|---|
| 複数のLinux EC2から同じファイルを共有したい | NFSベースのEFSをマウントする。ネットワーク経路、マウントターゲット、TCP 2049、権限を設定 |
| Windows EC2にSMB共有を提供したい | EFSではなくAmazon FSx for Windows File Serverなどを検討 |
| オンプレミスからAWS上の共有ファイルにアクセスしたい | Direct ConnectまたはSite-to-Site VPNでVPCへ接続し、Linuxクライアントから到達可能なEFSマウントターゲットをマウント |
| AZ障害に備えた冗長性が必要 | 複数AZにデータを冗長保存するRegional EFSを選択 |
| 単一AZで利用し、コストを考慮したい | One Zone EFSを検討し、AZ障害時のリスクとバックアップを評価 |
| 使用量の増減に応じてファイルストレージを伸縮させたい | EFSを利用する。ファイルの追加・削除に応じて容量が増減する |
| 低頻度データの保存コストを抑えたい | IAまたはArchiveとライフサイクルポリシーを利用し、アクセス料金・移行条件を確認 |
| 高い継続スループットを必要とする | Provisionedスループットを検討し、ストレージ料金とは別のスループット料金を見積もる |
| 既存データを暗号化したい | EBSは暗号化スナップショットコピーから新規ボリュームを作成、EFSは新規暗号化ファイルシステムへコピー |
公式ドキュメント
重要ポイント
- ▸EFSはNFSv4で複数のLinuxクライアントが共有するフルマネージド型ファイルストレージ。Windows EC2では利用できず、Windows共有にはAmazon FSx for Windows File Serverを検討する
- ▸EC2やオンプレミスサーバーからマウントできる。オンプレミス接続にはDirect ConnectまたはSite-to-Site VPNと、NFS通信を許可するネットワーク設定が必要
- ▸Regional EFSは複数AZにデータを冗長保存し、One Zone EFSは1つのAZに保存する。複数AZからマウントできることと、データが複数AZに保存されることを混同しない
- ▸EFSの容量はファイルの追加・削除に応じて自動的に増減する。EBSもサイズを拡張できるが、既存ボリュームを直接縮小できない
- ▸パフォーマンスモードとスループットモードは別の設定。General Purposeが推奨され、Max I/Oは以前の世代のモードとして制約付きで残る。スループットはElastic、Provisioned、Burstingから要件に応じて選ぶ
- ▸Standard、IA、Archiveのストレージクラスはライフサイクルポリシーで移行できる。低頻度クラスでは保存単価だけでなく、アクセス料金・アクセス時の特性も考慮する
- ▸EFSもEBSも既存の非暗号化リソースをその場で暗号化できない。EBSは暗号化スナップショットのコピーから新規ボリュームを作り、EFSは暗号化した新規ファイルシステムへデータを移す
このトピックの学習を完了しますか?
完了状態はいつでも切り替えられます
この試験ドメイン内で次の学習に進む
同じサービスの関連トピック
Amazon S3 とストレージ に関連するトピックを続けて確認できます。