Amazon EBS

##1.Amazon Elastic Block Store (EBS)とは？##
EC2 にアタッチ可能なブロックレベルのストレージサービスです。
仮想ディスクとお考えください。



##2.特徴##

- 一つのEC2インスタンスには複数のEBSボリュームをアタッチすることができます。
- 複数のEC2インスタンスから一つのEBSボリュームへアタッチすることはできません。
- 他のインスタンスにアタッチすることが可能です。
- 別のAZにあるEC2インスタンスにアタッチすることはできません。EBSボリュームを移動するには一度スナップショットとしてAMIを生成してから、AMIのAZコピー機能を利用して他のAZにコピーします。 
- 内部的に冗長化されているので、耐久性に優れている。
- スナップショット機能でバックアップなどを撮っておくことができる。
- 暗号化されている。
- 後から容量を増やしたりなどすることができ、インスタンスを停止することなく実行できます。

参考：[AWS Black Belt Online Seminar Amazon Elastic Block Store (EBS)](https://www.slideshare.net/AmazonWebServicesJapan/aws-black-belt-online-seminar-amazon-elastic-block-store-ebs)



##3.EBSボリュームの種類##
EBSボリュームの種類は4つあります。

- 汎用 SSD (gp2)
- プロビジョンド IOPS SSD (io1)
- スループット最適化 HDD (st1)
- Cold HDD (sc1)

どのボリュームを選べば良いか?
・トランザクションワークロード向けの SSD タイプのストレージ (パフォーマンスは主に IOPS に応じて異なる) 
・スループットワークロード向けの HDD タイプのストレージ (パフォーマンスは MB/秒単位で測定されたスループットに応じて異なる) 
となる。

なので、
デフォルトのボリュームタイプは(gp2)
IOPS性能を必要とするのであれば(io1)
スループット性能を必要とするのであれば(st1)
低アクセス頻度であれば(sc1)
でしょうか。

参考：[Amazon EBS ボリュームの種類](https://docs.aws.amazon.com/ja_jp/AWSEC2/latest/UserGuide/EBSVolumeTypes.html)



##4.料金##

- すべてのボリュームタイプの料金は、月単位でプロビジョニングした量で決まります。
- IOPSも料金の計算の根拠になります。ただし、汎用 SSDの場合はあらかじめ料金に含まれます。
- スナップショットを利用した場合、保存されるデータのギガバイト月あたりの料金が発生します。
- データ転送は、受信は無料、送信のみ発生します。


##5.RPO RTO RLO##

|用語|説明|
|---|---|
| RPO | 目標復旧時点「いつ時点のデータを復旧できれば何とかなる？」の目安 |
| RTO |目標復旧時間 「どれくらいの時間で復旧できれば影響が少ない？」の目安 |
| RLO | 目標復旧レベル「どこまで復旧できれば何とかなる？」の目安 |


##6.スナップショット##
スナップショットの取得は非同期に行われるため、EBSのスナップショットの取得を実行した後は、スナップショットの作成中でも、EBSをそのまま利用可能です。
ただし、スナップショットを作成する際はデータの整合性を保つため、静止点を設けることを推奨します。
スナップショットは増分バックアップで取得されるため、スナップショットの作成時間は最小限に抑えられ、また、ストレージコストを節約することが可能です。 

非同期処理は、あるタスクが実行をしている際に、他のタスクが別の処理を実行できる方式である。
同期処理では、あるタスクが実行している間、他のタスクの処理は中断される方式である。

なお、スナップショットからAMIを作成した場合、AMI 登録した状態ではスナップショットの削除はできません。
スナップショットを削除するにはまず AMI の登録解除が必要です。


##7.demo##
EBSボリュームを作成して、EC2インスタンスにアタッチして見ます。

別のAZにあるEC2インスタンスにアタッチすることはできないことに注意しましょう。
現在稼働中のEC2インスタンスのAZは、ap-northeast-1a にあります。
![スクリーンショット 2019-01-20 14.49.02.png](https://qiita-image-store.s3.amazonaws.com/0/280929/e91320f5-21b8-e1fa-f0a2-e30363c8eea4.png)

「ボリューム」から「ボリュームの作成」
![スクリーンショット 2019-01-20 14.47.40.png](https://qiita-image-store.s3.amazonaws.com/0/280929/9ecd248c-0942-41d7-0fa5-aaf0c85b4d4f.png)

アベイラビリティーゾーンは、ap-northeast-1a を選択します。
[スナップショット ID]で既存のスタップショットをこのボリュームに復元できますが、今回はdemoなので、指定しません。
![スクリーンショット 2019-01-20 14.56.04.png](https://qiita-image-store.s3.amazonaws.com/0/280929/3ccf7fcc-d11c-0fa7-464e-a8a87004be7c.png)

作成されたボリュームを選択し、「アクション」から「ボリュームのアタッチ」
![スクリーンショット 2019-01-20 14.57.29.png](https://qiita-image-store.s3.amazonaws.com/0/280929/5ddf86e7-fd3f-c6fe-6633-e27119b18737.png)

アタッチする「インスタンス」を指定します。
Linuxインスタンスなので、[デバイス]は「/dev/sdp」を選択しました。
![スクリーンショット 2019-01-20 15.00.32.png](https://qiita-image-store.s3.amazonaws.com/0/280929/2ee76e61-801b-f432-c7d4-bfa1c97300fe.png)

インスタンスに接続して、lsblkコマンドで確認してみる。

```
lsblk
```
`xvdp    202:240  0   4G  0 disk `
と作成されていることがわかります。
![スクリーンショット 2019-01-20 15.04.05.png](https://qiita-image-store.s3.amazonaws.com/0/280929/f384b9cb-01b6-97f8-96df-d655c892c992.png)

ファイルシステムを作成しましょう。

```
mke2fs /dev/xvdp
sudo !!
```

/mntにマウントします。

```
mount /dev/xvdp /mnt
```

/mntに移動し、ファイルを作成しファイルが作成されているか確認して見ましょう。

```
cd /mnt/
sudo vi file.text
ls -la
```

umountコマンドで削除できます。

```
umount /mnt/
```

「アクション」から「ボリュームのデタッチ」でデタッチすることもできます。
![スクリーンショット 2019-01-20 15.45.41.png](https://qiita-image-store.s3.amazonaws.com/0/280929/784167bc-1a26-7c84-095f-4f73ce7d87c2.png)



#8.アップデート情報#

##io2##

- 2020/8/26
 - 既存の io1 ボリュームと同じ料金で、次の 2 つの重要なメリットを持つ io2 ボリュームタイプがリリースされました。
 - 耐久性とIOPSの設定可能値がio2より向上されています。

[新しい EBS ボリュームタイプ (io2) – 100 倍高い耐久性と 10 倍の IOPS/GiB](https://dev.classmethod.jp/articles/new-ebs-volume-type-io2/)

- 2020/12/21
 - EBS のマルチアタッチとは、EBS ボリュームを複数のインスタンスにアタッチできるものであり、これが io2 で可能になりました。
 - 対象のリージョン、EBSボリュームで、マルチアタッチを有効化するだけでよい。
 
[マルチアタッチのサポートが Amazon EBS プロビジョンド IOPS ボリュームタイプ io2 で利用可能に](https://aws.amazon.com/jp/about-aws/whats-new/2020/12/multi-attach-support-now-available-on-amazon-ebs-provisioned-iops-volume-type-io2/)
[[アップデート] EBS マルチアタッチが io2 ボリュームでもサポートされました！](https://dev.classmethod.jp/articles/multi-attach-support-now-available-on-io2/)