EBSとEFS

# Amazon EBS(Amazon Elastic Block Store)
ブロックストレージサービスのこと。EC2の仮想的に外付けされるHDDのような記憶領域になり、**インターネットからアクセスすることができない**。インスタンスへのリクエストを接続を分散させる役割を持ち、**パーシステント（不揮発性）のためEC2を停止してもデータは消えない**
使用を開始するには、ボリュームにファイルシステムを作成する必要がある。




::: note info
**・ブロックストレージサービスとは？？**
記憶領域をボリュームという単位に分割して、それを更にブロックという固定された長さの単位に分割して管理するストレージのこと。USBメモリが例として挙げられる
独立したブロックによるデータ管理が可能なため、データに素早くアクセスできるというのが大きな特徴
:::

### 特徴
+ **頻繁かつ詳細な更新、常に変化が必要なデータを保存するのに最適**
+ SSDタイプとHDDタイプの2種類のディスクタイプ
+ 利用状況に応じてボリューム設定を調整
+ スナップショット作成や削除を制御し、S3に保存可能
+ **複数のインスタンスで1つのEBSボリュームをアタッチ(プロビジョンドIOPSタイプのみ)**
+ **AWS KMSを利用してデータを暗号化可能**

## ボリュームの種類

|  | 汎用SSD | Provisioned IOPS | スループット最適化HDD | Cold HDD |
|:-:|:-:|:-:|:-:|:-:|
| ボリュームタイプ  | gp3,gp2  | io2Block Express,io2,io1  | st1  | sc1  |
| 最大IOPS  | 16000  | 256000,64000  | 500  | 200  |
| 最大スループット(MIB/秒)  | 1000,250  | 4000,1000  | 500  | 200  |

+ **汎用SSD**
幅広いワークロードに最適なコスト効率の高いストレージ提供

+ **Provisioned IOPS**
最も安定したパフォーマンスを提供し、アプリケーションで必要なIOPS量を構成
マルチアタッチ機能を利用することで、**複数のEC2インスタンスにアタッチ**して、ビッグデータ処理などの並列処理に利用される

+ **スループット最適化HDD**
大きなデータセットと大きなI/Oサイズで頻繁にアクセスされる、スループット集中型のワークロードのユースケースに最適

+ **Cold HDD**
アクセス頻度の低いデータやシーケンシャルデータアクセスのようなスループットを重視するユースケースに最適

::: note info
**・IOPS(Input/Output Per Second)とは？**
ハードディスクやSSDなどのストレージ(外部記憶装置)の性能指標の一つ。ある条件の下で１秒間に読み込み・書き込みできる回数のこと。IOPSと要求されたボリュームサイズ(GiB単位)の**最大比は50：1**
:::

## ボリュームステータス
EBSボリュームに障害が発生しているかどうかを判断するために必要な情報を提供し、潜在的に不整合なボリュームの処理方法を制御できるように設計されている。ステータスチェックは5分ごとに自動的に行われ、成功または失敗のステータスを返す。

| ボリュームのステータス | I/O有効ステータス | I/O パフォーマンスステータス (io1、io2、および gp3 ボリュームのみ) |
|:-:|:-:|:-:|
| ok  | Enabled (I/O Enabled または I/O Auto-Enabled)  | Normal(想定通り)  |
| warning  | Enabled (I/O Enabled または I/O Auto-Enabled)  | Degraded(パフォーマンスが想定を下回っている),Severely Degraded(想定をかなり下回っている)  |
| impaired  | Enabled (I/O Enabled または I/O Auto-Enabled)Disabled (ボリュームがオフラインで復旧の保留中、またはユーザーによる I/O の有効化待ち)  | Stalled（致命的な影響を受けている）,Not Available(パフォーマンスの判定不能)  |
| insufficient-data  | Enabled (I/O EnabledまたはI/OAuto-Enabled)Insufficient Data  | Insufficient Data  |

### EBSボリュームの削除と保持
デフォルトでは、EC2インスタンスの削除とともにEBSは削除される。**DeleteOnTermination属性を非有効化**することでEBSボリュームのみ保持することが可能

# スナップショット
スナップショットを取得することで、EBSボリューム上のデータをEBSが設置されているリージョン内のS3バケットに保存される。**スナップショットの作成場所を指定することはできない**。
もし、いつも利用しているリージョンではない別のリージョンにあるEBSのスナップショットは、そのEBSが設置されているリージョンにおいて作成される。別リージョンへのコピーも可能

EBSの利用状況に関係なく非同期に作成することが可能だが、ベストプラクティスとしてEBSを停止した状態で実行することが良いとされている

::: note warn
+ ルートデバイスとして機能するEBSボリュームのスナップショットを作成する場合は、スナップショットを取る前にインスタンスを停止する
+ 休止したインスタンスからスナップショットを作成することはできない
:::



### EBS Snapshots Archive
90日以上保持するアクセス予定がない全量のスナップショットをアーカイブしてストレージコストを最大75％削減可能。標準のスナップショットにリストアするのに24～72時間かかる

### Amazon DLM(Date Lifecycle Manager)
EBSボリュームをバックアップするためのスナップショットの生成、保存、削除のライフサイクルを**自動化して、定期的なバックアップスケジュール**を実施して貴重なデータの保護や古いバックアップを削除してストレージコストを削減することができる

### 高速スナップショット(fast snapshot restore)
特定のAZで特定のスナップショットから有効にすることができる。作成時に完全に初期化された状態になり、ブロックの初回アクセス時におけるI/Oオペレーションのレイテンシーがなくなる。プロビジョンドパフォーマンスが素早く実現される

# RAID構成

### そもそもRAID（レイド）とは？
「Redundant Array of Inexpensive Disks」の頭文字の略。複数のHDDを1つのドライブのように認識させたり表示させたりする技術のこと。あるHDDが故障しても交換するだけでデータを復旧することができ、特定のHDDが故障・復旧していたりしてもデータに問題なくアクセスすることができる。

また、パソコンから送られてきたデータを自動で分散し、複数のHDDへ一度に書き込む機能があるためデータ書き込みの高速化も可能。

### RAIDの種類
HDDへのデータの割り振り方や冗長化の方法によって様々なレベルが存在する

#### RAID0
HDDの記憶容量を最も効率的に使える。データをブロック単位に分割し、複数のディスクに分散して配置することで、読み込み・書き込み速度があがる。冗長性がないので1台でも故障した場合ファイルの復旧が不可となり、安全性の向上は実現されない。

これをEBSボリュームで設定した場合、**IOPSの向上をすることができるが、セット内のボリューム1つ失われた場合データが完全に失われる**

![raid0](https://www.elecom.co.jp/pickup/column/storage_column/image/0601.png)

::: note alert
**RAID1,RAID5,RAID6も存在するのだがAWS公式では推奨されていない**。
:::






# Amazon EFS(Elastic File System)
EC2インスタンスからLAN上にあるNASのように利用可能な共有ファイルストレージサービス。**複数のEC2インスタンスから接続可能なストレージ**で、S3と異なり**インターネットから直接のアクセスができない**。完全な内部サーバー向けストレージとしてセキュリティを強化することができる
⇒**高速データ処理のストレージレイヤー向き**

::: note info
**NFS(Network File System)とは？**
LinuxなどのOSに標準で実装されているファイルサーバ機能。ネットワークを介してファイルサーバ上のストレージ領域をローカルサーバのハードディスクなどと同様に利用可能。
:::

### 特徴
+ アプリケーションを中断することなく、ペタバイト単位までオンデマンドで拡張可能
+ **永続的なストレージを提供する**
+ ストレージコストの自動最適化する機能
+ アクセス制御機能
+ ファイルの入出力負荷が急増しても自動的に拡大及び縮小する

### パフォーマンスモード
| モード名 | 内容 |
|:-:|:-:|
| 汎用モード  | 一般的な用途を想定したモード。デフォルトで推奨されており、レイテンシーが最も低い。１秒あたりのファイルシステム操作を7000に制限  |
| 最大I/Oモード  | 何十～何千というクライアントからの同時アクセスが必要な大規模構築に利用。合計スループットを優先してスケールするが、レイテンシーが多少長くなる  |

### スループットモード
| モード名 | 内容 |
|:-:|:-:|
| バースト  | ピーク時にクレジットを消費してバーストを実行して一時的な性能を向上させる方式。最大スループットとバースト時間に制限があり、スループットの性能向上にストレージ容量の増大が必要  |
| プロビジョンド  | 一貫したスループットを事前に設定する方式。1日に1回だけスループット性能を減少できる  |





### ストレージクラス
AWSリージョンの1つ以上のAZが利用できない場合でも、データを継続的に利用できるように設計されたリージョンストレージクラス。
| クラス名 | 内容 |
|:-:|:-:|
| 標準クラス  | 頻繁にアクセスされるファイルに使用される。顧客データが最初に書き込まれるストレージクラス。  |
| 低頻度(EFS IA)クラス  | 毎日アクセスしないファイルに対して最適化されたコスト効率の料金、パフォーマンスを提供する。  |

### ライフサイクル管理
有効にすると標準ストレージから IAストレージへのファイルの移動を自動化する。コンソールを使用してファイルシステムを作成すると、ライフサイクル管理がデフォルトで有効になり前回のアクセスから30日間という設定になる。