AWS EFS を図解で完璧に理解！ソリューションアーキテクト – アソシエイト

## EFSとは？

EFS (Elastic File System) は、フルマネージドなNFSサービスです。

* **フルマネージド:** AWSがEFSのインフラストラクチャを管理してくれるため、ユーザーはストレージの管理に時間を割く必要がありません。
* **NFS (Network File System):** Linuxなどで広く利用されているファイル共有システムです。EFSはNFSインターフェースを提供するため、Linuxインスタンスから簡単にマウントして利用できます。

### 特徴

* 容量無制限
* 複数のEC2インスタンスから同時アクセス可能
* 高い耐久性（イレブンナイン）と可用性（最大フォーナイン）

### ユースケース

* ウェブサイトのコンテンツストレージ
* ビッグデータ分析
* メディア処理
* アプリケーションのコードリポジトリ

### 図解

```mermaid
%%{init: {"themeVariables": { "primaryColor": "#ffcccc", "secondaryColor": "#ccffcc", "tertiaryColor": "#ccccff", "mainBkg": "#fff0f0", "nodeBorder": "#ff9999", "clusterBkg": "#fffaf0", "clusterBorder": "#ffe4b5", "lineColor": "#ff9999", "fontFamily": "arial"}}}%%
graph LR
    EFS(("EFS\n(Elastic File System)"))
    EC2_1(("EC2"))
    EC2_2(("EC2"))
    EC2_3(("EC2"))
    
    EC2_1 -->|NFS| EFS
    EC2_2 -->|NFS| EFS
    EC2_3 -->|NFS| EFS
    
    subgraph "EC2 インスタンス"
        EC2_1
        EC2_2
        EC2_3
    end
```





## EFSの構成要素

EFSは、「ファイルシステム」と「マウントターゲット」という2つの主要な構成要素から成り立ちます。

* **ファイルシステム:** ファイルを保存するための論理的なストレージ領域です。VPC内に作成され、複数のAZにまたがってデータを複製することで高可用性を実現します。
* **マウントターゲット:** ファイルシステムへのアクセスを提供するエンドポイントです。各AZにマウントターゲットが作成され、EC2インスタンスはそのマウントターゲットを介してファイルシステムにアクセスします。

### 図解


```mermaid
%%{init: {"themeVariables": { "primaryColor": "#ffcccc", "secondaryColor": "#ccffcc", "tertiaryColor": "#ccccff", "mainBkg": "#fff0f0", "nodeBorder": "#ff9999", "clusterBkg": "#fffaf0", "clusterBorder": "#ffe4b5", "lineColor": "#ff9999", "fontFamily": "arial"}}}%%
graph LR
    subgraph "VPC"
        subgraph "AZ 1"
            MT1(("Mount Target"))
        end
        subgraph "AZ 2"
            MT2(("Mount Target"))
        end
        subgraph "EFS"
            FS(("File System"))
        end
        FS --- MT1
        FS --- MT2
    end
    subgraph "EC2 インスタンス (AZ 1)"
        EC2_1(("EC2"))
    end
    subgraph "EC2 インスタンス (AZ 2)"
        EC2_2(("EC2"))
    end
    EC2_1 -->|NFS| MT1
    EC2_2 -->|NFS| MT2
```

## パフォーマンスモード

EFSには、以下の2種類のパフォーマンスモードがあります。

* **汎用パフォーマンスモード (General Purpose):**  ほとんどのワークロードに適したデフォルトのモードです。レイテンシとスループットのバランスが取れています。
* **最大I/Oパフォーマンスモード (Max I/O):**  大量の小さなファイルを読み書きするワークロードに適しています。スループットを最大化しますが、レイテンシがわずかに増加します。

### 図解

```mermaid
%%{init: {"themeVariables": { "primaryColor": "#ffcccc", "secondaryColor": "#ccffcc", "tertiaryColor": "#ccccff", "mainBkg": "#fff0f0", "nodeBorder": "#ff9999", "clusterBkg": "#fffaf0", "clusterBorder": "#ffe4b5", "lineColor": "#ff9999", "fontFamily": "arial"}}}%%
graph LR
    EFS(("EFS")) --> GP["汎用パフォーマンス\n(General Purpose)\n- デフォルト\n- バランス重視"]
    EFS --> MI["最大I/Oパフォーマンス\n(Max I/O)\n- 高スループット\n- レイテンシ増加"]
```

## スループットモード

EFSには、以下の2種類の スループットモードがあります。

* **バーストスループットモード (Bursting Throughput):** 使用中のストレージ容量に応じてスループットが自動的に拡張されます。ほとんどのワークロードに適したデフォルトのモードです。
* **プロビジョニングスループットモード (Provisioned Throughput):**  安定したスループットが必要なワークロードに適しています。スループットを事前に指定することで、必要なパフォーマンスを確保できます。

### 図解

```mermaid
%%{init: {"themeVariables": { "primaryColor": "#ffcccc", "secondaryColor": "#ccffcc", "tertiaryColor": "#ccccff", "mainBkg": "#fff0f0", "nodeBorder": "#ff9999", "clusterBkg": "#fffaf0", "clusterBorder": "#ffe4b5", "lineColor": "#ff9999", "fontFamily": "arial"}}}%%
graph LR
    EFS(("EFS")) --> BT["バーストスループット\n(Bursting Throughput)\n- 容量に応じてスループット拡張\n- デフォルト"]
    EFS --> PT["プロビジョニングスループット\n(Provisioned Throughput)\n- 安定したスループット\n- 事前定義"]
```

## まとめ

EFSは、スケーラブルで高可用性なファイルストレージサービスであり、複数のEC2インスタンスから同時にアクセスできます。パフォーマンスモードとスループットモードを適切に選択することで、ワークロードに最適なパフォーマンスを実現できます。