・Amazon EBS(Elastic Block Store)
EBSはEC2インスタンスに割り当てられるブロックストレージで、物理ハードディスクドライブと同じように利用できる。
ブロックストレージとは記憶媒体を「ブロック」という固定長の単位で分割して管理するストレージのこと。AWSには「Amazon EBS」というブロックストレージのストレージサービスがあります。
・EBSとEC2インスタンス
EBSは必要に応じて複数作成し、EC2インスタンスにアタッチ(取り付け)して利用します。ただし作成したボリュームは1つのEC2インスタンスからのみアタッチでき、基本的には同時に2つ以上のインスタンスからアクセスすることはできない。
一部のボリュームタイプでは複数インスタンスからのアタッチが可能な「マルチアタッチ」機能に対応。ただし、利用できるインスタンスタイプやリージョンが限られているなどの制限事項があります。
また、EBSは各AZに独立して存在します。あるAZに存在するEC2インスタンスは同じAZに存在するEBSボリュームをアタッチできますが、別のAZに存在するEBSボリュームはアタッチできません。同じAZに存在するEBSボリュームであれば、一つのEC2インスタンスに複数アタッチすることもできます。
・ボリュームタイプ
EBSには容量や性能の異なるボリュームタイプがあり。EBSボリュームを作成する際に、以下のボリュームタイプから用途に合ったものを選択。
1、汎用SSD(gp2、gp3)ーEC2インスタンスの起動ボリュームや開発環境。1GiB〜16TiB。16000iOPS。250MiB/s(gp2)、1000Mib/s(gp3)
2、プロビジョンドIOPS SSD(io1)ー汎用より高い性能が要求されるシステム。大規模DBなど。4Gib~16TiB。64000IOPS。1000MiB/s。
3、プロビジョンドIOPS SSD(io2)ーio1より高性能、高信頼性、100倍の耐久性、10倍のIOPS。4Gib~16TiB。64000IOPS。1000MiB/s。
4、スループット最適化(st1)ービッグデータやシーケンシャル、ログの処理。ECインスタンスの起動ボリュームには選択できない。500Gib~16TiB。500IOPS。500MiB/s。
5、コールドHDD(sc1)ー利用頻度の低いログやバックアップのデータ保管用。ECインスタンスの起動ボリュームには選択できない。500Gib~16TiB。250IOPS。250MiB/s。
io1とio2は同じ「プロビジョンドIOPS SSD」ですが、io2はio1と比べて耐久性と性能に優れています。耐久性について、io1では99.8~99.9%、io2では99.999%と設計されており、io2はio1より100倍高い耐久性があります。また容量あたりのIOPS性能も、io1では1GiBあたり50IOPSであったのに対して、io2では1GiBあたり500IOPSと10倍の性能を発揮できるように設計されています。
1GBあたりの利用料金は、高価なものから順に「プロビジョンドIOPS SSD(io1、io2)」、「汎用SSD(gp2)」、「スループット最適化HDD(st1)」、「コールドHDD(sc1)」となっています。
・DeleteOnTermination(終了時に削除)
EBSボリューム上に保存したデータは、EC2インスタンスを終了(削除)すると削除される。保持したい場合はEBSの設定「終了時に削除」のチェックを外すか、「DeleteOnTermination」の値を「false」に設定。
「終了時に削除」のチェックはEC2インスタンスの起動(作成)時に設定する必要がある。
終了時に削除(DeleteOnTermination)のデフォルト値は、EBSがEC2インスタンスのルートボリュームかそうでないかで異なります。ルートボリュームの場合は「true(削除される)」、ルートボリュームではない場合は「false(削除されない)」に設定されています。
ルートボリューム(ルートデバイスボリューム)... OSの起動イメージが格納されていたり、システムによって使用されるデータが格納されたボリューム
なお、EC2インスタンスの動作中に設定を変更したい場合は、コンソールではなくAWS CLIを利用。
・スナップショット
EBSは、データのバックアップ手段としてスナップショット機能を備えています。スナップショットとはある時点のストレージの状態(保存されているファイル群など)を取得したもののこと。例えばデータが破損した場合やある時点のデータに戻したい場合、スナップショットをリストアすることでストレージ上のデータが復元。
EBSではスナップショットから新しいEBSボリュームを作成することもできます。スナップショットを基にEBSボリュームを作成する際は、異なるAZを選択できたり、暗号化機能を付与することもできます。
スナップショット機能およびスナップショットからのボリュームの作成機能を利用することで、別のAZへデータを移行することができます。
・暗号化
EBSでは、ボリュームやスナップショットを暗号化することで機密性を高めることができる。暗号化する際はAWS KMS(Key Management Service:暗号化に使用するキーを作成・管理するサービス)を利用。
暗号化の設定はEBSボリューム作成時に指定。作成したボリュームの暗号化ステータスは後から変更できないので注意。
暗号化を行うには、事前にKMSにおいて暗号化に使用するキーを作成し「マスターキー」欄へ入力。
なお、作成済みのEBSボリュームの暗号化ステータスは変更できないが、スナップショットからEBSボリュームを作り直すことで、既存のデータを保持したまま暗号化ステータスの異なるEBSボリュームを作成できます。
・RAID(Redundant Arrays of Inexpensive Disks:レイド)
EBSでは、アタッチしているEC2インスタンスのOSの機能を利用してEBSボリュームのRAID構成を組むことができます。
RAIDとは複数のボリュームを論理的に1つのボリュームとして構成する技術のことです。RAIDにはいくつかの種類がありますが、そのうちの1つ「RAID 0」は、複数のボリュームへデータを分散して書き込むことによって、1台のボリュームに続けて書き込むよりも高速にデータアクセスを行います(ストライピング)。
EBSボリュームの性能上限はio1またはio2のプロビジョンドIOPS次第ですが、上限値を超えた性能が必要な場合、RAID 0を構成することによって性能向上を見込めます。
ただし、RAIDを構成している場合はスナップショットの取得時に注意が必要です。単独のEBSボリュームだけではリストア時にデータの不整合など問題が発生する可能性があるため、複数のボリュームに対してスナップショットを取得する「マルチボリュームスナップショット」を使用します。
マルチボリュームスナップショットでは、特定のボリュームではなく、ボリューム群をアタッチしているEC2インスタンスを指定してスナップショットを取得します。