複数EC2インスタンス間でフォルダを共有する:EBSとEFSの使い分け完全ガイド
5台のEC2インスタンスで同じディレクトリをマウントしたい——この要件を受けて、まずEBSのマルチアタッチを試みたエンジニアは少なくない。結論から言うと、EBSは原則として複数インスタンスへの同時共有には向いておらず、EC2間でフォルダを共有するには Amazon EFS(Elastic File System) が正しい選択肢になる。 TL;DR:EBS vs EFS、複数インスタンス共有の判断基準 観点 EBS EFS 複数インスタンスへの同時マウント 原則不可(Multi-Attachは限定的) 可能(同一リージョン内) 対応ストレージプロトコル ブロックストレージ NFSv4.1 / NFSv4.0 ファイルシステム共有 不可(Multi-Attach時もファイルシステム層は非共有) 可能(POSIX準拠) 対応インスタンス数 Multi-Attachは最大16インスタンス(io1/io2のみ) 数千インスタンスまでスケール AZ制約 同一AZのみ リージョン内複数AZに対応 ユースケース 単一インスタンスのOSディスク、DB 共有コンテンツ、ログ集約、CMS EBSとEFSの仕組み:なぜEBSでは共有できないのか EBSはブロックストレージデバイスとして動作する。EC2インスタンスにアタッチされると、インスタンス側でext4やxfsなどのファイルシステムをフォーマットして使う構造になっている。ファイルシステムのメタデータ(inode、ジャーナル)はEBSボリューム上に書き込まれるため、複数のインスタンスが同じボリュームを同時にマウントすると、メタデータが競合してファイルシステムが破損する。 EBSにはio1/io2ボリュームタイプ限定で Multi-Attach という機能があり、最大16インスタンスへの同時アタッチが可能だ。ただし、これはブロックデバイスレベルの共有であり、ファイルシステムの同時書き込みを安全に扱うには クラスタ対応ファイルシステム(例:GFS2) をアプリケーション側で実装する必要がある。通常のext4/xfsでMulti-Attachを...