Amazon EBS

## はじめに
この記事はAWS SAA試験勉強のための、Amazon EBSに関する知識のまとめです。

## Amazon EBSとは

Elastic Block <font color="Red">**Store**</font>の略。データを保存するためにEC2インスタンスにネットワーク経由でアタッチするストレージ。EC2インスタンスで処理される常に変化するデータを保存するのに最適。

EC2インスタンス起動時の「ストレージタイプの選択」において、選択できるストレージタイプ。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/359600/c84fc6ee-8466-453d-f661-88d0754af794.png)



デフォルト設定ではEC2インスタンスが削除されると、EBSボリュームも同時に削除されますが、設定次第ではEC2インスタンスが削除されてもEBSを保持できます。

EC2インスタンスを休止状態にすることで、インスタンスメモリの内容がEBSルートボリュームに保存されます。

Amazon EBS では時間単位のインスタンス料金にコストが加算されるため、インスタンスストアほどコスト効率が高くないです。インスタンスのライフサイクルを超えてデータの永続性を提供するので、永続性が必要ないユースケースでは不適切です。


## スナップショット
EBSスナップショットはEBSボリュームのバックアップです。EBSボリュームから**スナップショットを取得すると**、そのEBSが設置されているリージョン内のS3バケットにスナップショットを保存します。

- EBSボリュームのスナップショットを別リージョンにコピーすることで最も安くEBSデータのバックアップを別リージョンに保持することができ、BCP対策になります
- EBSのスナップショットはEBSの利用状況に関係なく、非同期に作成することができます
- EBSスナップショットは増分バックアップであり、どの世代のスナップショットを削除しても他のスナップショットに影響はありません。また、スナップショットの世代数に制限はありませんが、世代数を指定することもできます。
- EBSのポイントインタイムスナップショットでは、増分バックアップして、単一のスナップショットを維持することにより、ストレージコストを節約できます。



## Amazon DLM

Amazon Data Lifecycle Manager (Amazon DLM)を利用して、Amazon EBSのスナップショット取得のライフサイクルポリシーを設定できます。

## ボリュームタイプ

EBSでは対応する速度に応じた４つのボリュームタイプ(ストレージタイプと書いている本もあります)が用意されています。

### HDDとSSD
HDD(Hard Disk Drive)の方がSSD(Solid State Drive)よりも低コストで、HDDの方が大きなストリーミングに向いています。

### IOPSとMB/秒

IOPSは1秒間に処理できる入出力操作の数を示し、MB/秒は1秒間に転送できるデータ量を示します。



### 汎用SSD（gp2およびgp3）

汎用SSD（gp3）は3,000IOPSが保証されているEBSです。そのため、仮想デスクトップやMySQLサーバー、開発環境を構築する時に最適なEBSです。容量は1GB〜16TBまでの間で設定可能です。
最大IOPSは16000です。「1秒あたり数百万のIOPSが求められる」という要件は、Amazon EBSでは条件を満たすことができません。インスタンスストアが適切です。

汎用 SSD ストレージは、プロビジョンド IOPS ストレージよりもコスト効率に優れています。

汎用 SSD (gp3) には、ボリュームサイズに関係なく、追加コストなしで 3,000 IOPS が含まれています。

汎用 SSD ストレージのベースライン I/O パフォーマンスは、GiB あたり 3 IOPS です。334 GiB のストレージの場合、ベースラインパフォーマンスは 1,002 IOPS になる。gp2 で 334 GiB のストレージをプロビジョニングすると、50 GiB の gp3 を使用するよりもコストがかかります。


![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/359600/6bd5fff5-49e9-5f0d-984c-b96fd60fb94c.png)

- gp2のボリュームあたりの最大スループットは128～250MB/秒。gp3は1000MB/秒。
- <font color="Red">**ボリュームのサイズが10GBなど小さい場合は、gp2が一番安い**</font>です。

### プロビジョンドIOPS SSD(io1およびio2)

レイテンシーの影響が大きいトランザクションワークロード向けに設計された極めてパフォーマンスの高い SSD ボリューム。コストは高いですが最も高い性能が期待できます。データベースサーバーなどに利用されます。**読み取り、書き込みが多く発生するようなデータベースで利用します。**
2020年2月より Multi-Attach 機能が追加されました。Amazon EBS プロビジョンド IOPS io1またはio2 ボリュームを利用している場合のみMulti-Attach を有効化して、単一のボリュームを同じアベイラビリティーゾーン内の最大 16 個の AWS Nitro システムベースの Amazon Elastic Compute Cloud (Amazon EC2) インスタンスに同時にアタッチできます。


プロビジョンドIOPSボリュームのIOPS性能とボリュームサイズ（GiB単位）の最大比は50：1で設定できます。
実際に利用しているストレージ容量に対する課金に加え、指定したIOPS数に対しても課金されます。
EBS プロビジョンド IOPS SSD (io2)は最大スループットが4000 MB/秒。

最大IOPSは256,000


CloudWatchに1分ごとにメトリクスを送信します。

### スループット最適化DHH
ボリュームごとに 500 IOPS に制限される HDD バックアップストレージデバイス。
ボリュームあたりの最大スループットは500MB/秒。
以下の用途に用いられます。
- シーケンシャルにアクセスする大容量データを格納する
- データウェアハウスとして利用する
### コールドHDD
ボリュームあたりの最大スループットは250MB/秒。

### マグネティック

旧世代のボリュームタイプ

## EBSにできないこと

EBSは自動拡張されず、AZ障害発生時には利用できなくなるので、高可用ストレージとしては適切ではない。

## DeleteOnTermination 属性

EC2のインスタンスを終了する際、EC2はインスタンスに接続されていたEBS ボリュームの DeleteOnTermination 属性に基づいて、そのボリュームを存続させるべきか、一緒に削除すべきかを判断する。
デフォルトでは、インスタンスのルートボリュームのDeleteOnTermination属性は有効化されており、EC2インスタンスの削除とともにEBSボリュームも削除される。

## 暗号化

EBSボリュームは**作成時にのみ**暗号化を適用できます。

## RAID
### RAID 1
EBSのRAID１構成は耐障害性が I/O パフォーマンスより重要な場合に利用されるストレージ構成です。１つのEBSボリュームが故障したとしてもデータの消失を防ぐことができ、RTO1分以内の回復が可能です。 


## ディスクサイズ

EBSのディスクサイズはオンラインで変更でき、拡大のみ可能。またOSレベルでのファイルシステムの拡張作業も必要。

## 新しいEBSボリュームをLinux EC2インスタンスにアタッチ後に必要な設定

1.デバイスの確認
2.ファイルシステムの作成
```bash:
sudo mkfs -t ext4 /dev/xvdf
```
3.マウントポイントの作成
4.ボリュームのマウント
5.永続的なマウント設定
6.マウントの確認