複数のEC2インスタンスで同じファイルを共有したいとき、どう設計するか。オンプレ時代はNAS(ネットワークストレージ)をNFSマウントするのが定番でした。AWSでも同じことができるのがAmazon EFS(Elastic File System)です。
EBSはEC2の専用ディスクとして機能しますが、EFSは複数のEC2インスタンスに同時マウントできるNFSとして動作します。しかも容量は使った分だけ自動拡張——オンプレNASのように「容量が足りなくなったから拡張申請」という手間がなくなります。
この記事では、Amazon EFSの仕組みから、EC2へのNFSマウント手順、パフォーマンスモード・スループットモードの選び方、料金の構造まで、オンプレ経験者が実務で使えるレベルで解説します。
なぜEFSなのか?(オンプレのNASとの違い)
オンプレでNASを運用したことがある方なら、こんな経験があるはずです。
・容量の予測が難しい: 購入時に3年後の使用量を見積もるのは困難
・拡張のリードタイム: 容量が足りなくなっても、機器の調達・設定に時間がかかる
・耐障害性の確保: RAID構成やレプリケーション設定を自分で管理する必要がある
Amazon EFSはこれらの課題をマネージドサービスとして解決します。
| 比較項目 | オンプレNAS | Amazon EFS |
|---|---|---|
| 容量管理 | 事前購入・手動拡張 | 使用量に応じて自動拡張 |
| プロトコル | NFS / SMB / CIFS等 | NFSv4.1 / NFSv4.0 |
| 同時接続 | 機器スペック依存 | 数千インスタンスまで対応 |
| 耐障害性 | 自前でRAID・レプリケーション | AZ内複数拠点に自動レプリケーション |
| 料金体系 | 機器購入費 + 保守費 | 使用したGB分だけ課金 |
EFSはNFSv4.1に対応しているため、既存のLinuxサーバーで使っていたNFSクライアント設定をほぼそのまま流用できます。「AWS移行だからストレージも作り直し」とならない点は、オンプレ経験者にとってのメリットです。
一方で、SMB/CIFSには対応していない点は注意が必要です。Windowsサーバーからファイル共有したい場合はAmazon FSx for Windows File Serverが選択肢になります。
EFSの基本的な使い方(コンソール操作)
EFSを使うまでの手順は大きく3ステップです。
1. EFSファイルシステムの作成
AWSコンソールで「EFS」を検索し、「ファイルシステムを作成」をクリックします。
主な設定項目は以下のとおりです。
・名前: 識別用の名前を任意で設定(例: prod-shared-fs)
・可用性と耐久性: 「地域」(複数AZに分散)または「ゾーン」(単一AZ、コスト低め)を選択
・パフォーマンスモード: 「汎用」または「最大I/O」(後述)
・スループットモード: 「エラスティック」「バースティング」「プロビジョニング済み」(後述)
・暗号化: 保管時の暗号化をAWS KMSで有効化するかどうか
本番環境ではデフォルトで「地域」(Regional)を選択し、マルチAZ構成にしておくことをお勧めします。単一AZの「ゾーン」モードはコストを抑えられる一方、AZ障害時にはアクセス不能になるため、本番ワークロードには向きません。
2. マウントターゲットの設定
EFSはVPC内の各AZに「マウントターゲット」を作成することでEC2からアクセスできるようになります。
・各AZに1つのマウントターゲットを作成: EC2が起動しているAZごとに設定する
・サブネットとセキュリティグループを指定: EC2が属するサブネット内に配置するのが基本
・セキュリティグループの設定: EFSのマウントターゲット側のセキュリティグループに、EC2側からのTCP 2049(NFS)インバウンドを許可する
# EFS用セキュリティグループ(efs-sg)のインバウンドルール設定イメージ # タイプ: NFS # プロトコル: TCP # ポート範囲: 2049 # ソース: EC2が属するセキュリティグループのID(例: sg-0123456789abcdef0)
3. EC2からのNFSマウント
EFSはAWSが提供するマウントヘルパー(amazon-efs-utils)を使うと設定がシンプルになります。
# Amazon Linux 2 / Amazon Linux 2023 での手順 # 1. EFSユーティリティのインストール sudo yum install -y amazon-efs-utils # 2. マウントポイントの作成 sudo mkdir -p /mnt/efs # 3. EFSのマウント(fs-xxxxxxxxx はEFSのファイルシステムID) sudo mount -t efs fs-xxxxxxxxx:/ /mnt/efs # 4. マウント確認 df -h /mnt/efs # 5. /etc/fstab に記載して再起動後も自動マウント echo "fs-xxxxxxxxx:/ /mnt/efs efs defaults,_netdev 0 0" | sudo tee -a /etc/fstab
TLSによる転送暗号化を有効にする場合は、マウントオプションに `tls` を追加します。本番環境では有効化しておくことをお勧めします。
# TLS暗号化を有効にした場合のマウントコマンド sudo mount -t efs -o tls fs-xxxxxxxxx:/ /mnt/efs # /etc/fstab での自動マウント設定(TLSあり) echo "fs-xxxxxxxxx:/ /mnt/efs efs defaults,_netdev,tls 0 0" | sudo tee -a /etc/fstab
マウント後はLinuxの通常ファイルシステムとして操作できます。Webサーバーのコンテンツ置き場、アプリケーションログの集約先、機械学習の学習データ共有など、用途は幅広いです。
Linuxのファイルシステム操作やサーバー設定の詳細については、姉妹サイトLinuxMaster.JPでも解説しています。
パフォーマンスモードとスループットモードの選び方
EFSには「パフォーマンスモード」と「スループットモード」の2軸の設定があります。名前が似ていて混乱しやすいので、役割を整理します。
【パフォーマンスモード】— レイテンシ vs スループットの優先度
・汎用(General Purpose): デフォルト設定。低レイテンシ優先。Webサービス・一般的なアプリに最適
・最大I/O(Max I/O): 高スループット優先(レイテンシはやや増加)。数千インスタンスからの並列アクセスや大規模データ処理向け
ほとんどのケースでは汎用で十分です。Max I/Oは1,000を超えるEC2インスタンスが同時アクセスするような特殊なケースで検討します。なお、後述のElasticスループットモードを選択した場合、パフォーマンスモードは汎用のみ選択できます。
【スループットモード】— 帯域幅をどう確保するか
・エラスティック(Elastic): AWSがワークロードに応じて自動的にスループットを調整する推奨モード。追加費用なしでバースト・スケールが可能
・バースティング(Bursting): ストレージ容量に比例したベーススループット+クレジット方式。容量が少ないうちはスループットが低くなるため、小容量ファイルシステムでは注意が必要
・プロビジョニング済み(Provisioned): スループットを固定で確保する。安定したスループットが必要なDBバックアップ等のバッチ処理向け。追加料金が発生
| スループットモード | 向いているケース | コスト |
|---|---|---|
| エラスティック | アクセスが不規則・予測困難な一般的なワークロード | ストレージ料金に含まれる |
| バースティング | 大容量ファイルシステムで断続的なアクセス | ストレージ料金に含まれる |
| プロビジョニング済み | スループットを固定保証したいバッチ処理 | MBps単位で追加課金 |
新規構築であればエラスティックモードが第一選択です。ストレージ容量に関係なく必要な帯域幅を確保でき、過剰なプロビジョニングも不要になります。
料金の仕組み(ストレージクラスと月額の目安)
EFSの料金は「ストレージ料金」と、Provisioned選択時の「スループット料金」の組み合わせです。
東京リージョン(ap-northeast-1)のストレージ料金(2026年時点・税別)
・EFS Standard: 約$0.36/GB/月(アクセス頻度の高いデータ向け)
・EFS Standard-IA(低頻度アクセス): 約$0.020/GB/月+データアクセス料金$0.008/GB
・Provisioned Throughputの追加料金: 約$6.00/MBps/月
EBSのgp3(約$0.096/GB/月)と比べると高く見えますが、EFSは複数インスタンスから同時アクセスできる共有ストレージです。同じデータを10台のEC2がそれぞれEBSに持つ場合と比べると、EFS1本の方がトータルコストは低くなるケースもあります。
コスト計算の例:
100GBのデータを共有ファイルシステムとして使う場合(EBSとの比較)
・EFS Standard(100GB): 100 × $0.36 = 月額$36
・EFS Standard-IAへの移行後(アクセス少量): 100 × $0.020 = 月額$2程度
・EBSで各EC2(10台)にデータを個別保持: 10台 × 100GB × $0.096 = 月額$96
アクセスが少ないアーカイブデータは、ライフサイクルポリシーでStandard-IAに自動移行することで大幅なコスト削減が可能です。
【重要】料金の注意点:
・AZをまたぐデータ転送料金: 同一AZのEC2とEFSマウントターゲット間は転送料金なし。別AZをまたぐ場合はデータ転送料金が発生するため、EC2と同じAZのマウントターゲットを使うことが基本
・バックアップ料金: AWS Backupで自動バックアップを有効にした場合、バックアップストレージ料金が別途発生
・料金の最新情報: 上記はAWS公式ドキュメント(2026年時点)を参考にしていますが、価格改定の可能性があるため、公式の料金計算ページで都度確認してください
応用・実務Tips
ライフサイクルポリシーでコストを削減する
EFSにはライフサイクル管理機能があり、一定期間アクセスされなかったファイルを自動的にStandard-IAに移動できます。
設定できる移行条件の例:
・一定日数(7日、14日、30日など)アクセスなし → IA移行
・IA移行後に再アクセスがあった場合 → Standardに自動で戻すかを選択可能
頻繁にアクセスするデータと、長期保管するアーカイブデータが混在する場合に特に効果的です。
EFSアクセスポイントで権限を分離する
EFSアクセスポイントを使うと、同一ファイルシステムを複数のアプリや部門で共有しながら、アクセス可能なディレクトリとLinuxのUID/GIDを制限できます。例えば、AppAは `/app-a` 配下のみ、AppBは `/app-b` 配下のみに制限するといった設計が可能です。
マイクロサービス構成でEFSを共有する際に特に有効です。マイクロサービスとモノリシックアーキテクチャの違いについてはこちらも参考にしてください。
コンテナ(Amazon ECS / AWS Fargate)からのEFSマウント
ECSのタスク定義でEFSボリュームを指定することで、コンテナからもEFSをマウントできます。Fargateでも対応しており、コンテナが起動・停止を繰り返しても永続データを保持できます。詳しくはAWS Fargate入門もあわせてご覧ください。
EBS vs EFSの使い分けまとめ
・Amazon EBS: 単一EC2に専用アタッチ。データベース・OS・高性能ディスクが必要なワークロード
・Amazon EFS: 複数EC2から同時アクセスが必要な共有ストレージ。Webコンテンツ共有・ログ集約・MLデータ共有
Amazon S3 vs EBS vs EFSの徹底比較では、3サービスの使い分けをさらに詳しく解説しています。
よくあるトラブルと対処法
マウントに失敗する(mount.nfs4: Connection timed out)
最も多いのはセキュリティグループの設定ミスです。以下を確認してください。
・EFSのマウントターゲットが使用するセキュリティグループに、EC2側からのTCP 2049(NFS)インバウンドが許可されているか
・EC2とEFSのマウントターゲットが同じVPC内・同じサブネット(またはルートが通じるサブネット)にあるか
・amazon-efs-utilsがインストールされているか(`rpm -qa | grep amazon-efs-utils` で確認)
# トラブル時の確認コマンド # amazon-efs-utils のインストール確認 rpm -qa | grep amazon-efs-utils # NFS接続確認(fs-xxxxxxxxx.efs.ap-northeast-1.amazonaws.com) telnet fs-xxxxxxxxx.efs.ap-northeast-1.amazonaws.com 2049 # マウントログの確認 sudo journalctl -u amazon-efs-mount-watchdog
マウントが遅い(パフォーマンスが出ない)
・スループットモードの確認: バースティングモードで容量が少ない場合、クレジットを消費するとスループットが大幅に低下します。エラスティックモードへの切り替えを検討してください
・AZをまたいでいないか: EC2と異なるAZのマウントターゲットを使っているとレイテンシが増加します。同一AZ内のマウントターゲットを使うよう変更してください
・並列IOを活用: 単一スレッドの読み書きよりも、並列IOの方がEFSのスループットを最大限に引き出せます
「No space left on device」エラーが出る
EFSはほぼ無制限に自動拡張するため、通常このエラーは発生しません。もし発生した場合は、アプリ側がディスク使用量の誤ったキャッシュ値を参照している可能性があります。EFSはdfコマンドでの使用量表示が実際とずれる場合があるため、AWS CloudWatchのEFSメトリクス(StorageBytesなど)で実際の使用量を確認してください。
本記事のまとめ
Amazon EFSのポイントを整理します。
・EFSはAWSのマネージドNFS: 複数のEC2インスタンスから同時マウントでき、容量は自動拡張
・オンプレNASとの違い: 容量管理・RAID設定・レプリケーション設定が不要。使った分だけの従量課金
・マウントはamazon-efs-utilsが便利: NFSv4.1 + TLS暗号化を簡単に設定できる
・スループットモードはElasticが推奨: 新規構築ではElasticモードを選択し、自動スケーリングに任せる
・コスト最適化: アクセス頻度の低いデータはライフサイクルポリシーでStandard-IAへ自動移行
・EBSとの使い分け: 単一EC2での高性能ディスクならEBS、複数EC2での共有ストレージならEFS
| やりたいこと | 推奨サービス | 理由 |
|---|---|---|
| EC2の専用ディスクとして使う | Amazon EBS | 高性能・低レイテンシ・単一アタッチ |
| 複数EC2でファイルを共有する | Amazon EFS | NFSv4対応・自動拡張・マルチAZ |
| 大量の静的ファイルを安価に保管 | Amazon S3 | オブジェクトストレージ・安価・高耐久性 |
PR
EC2・VPC・EFS・RDSなどAWSのインフラ基盤を体系的に学べる実践書。オンプレからの移行を見据えた設計ポイントも丁寧に解説されており、EFS導入を検討するインフラエンジニアに特に役立ちます。
