最近AWSのことについて学習を始めました。現在、AWSの基本的なサービスについて学習をしています。今回は、EBSについて調べたことをまとめたいと思います。
##EBS(Elastic Block Store)
EBSとはEC2にアタッチされるブロックレベルのストレージサービス。EC2にアタッチされる外付けのHDDのようなもの。
特徴として、以下のことが挙げられる。
-
OSやアプリケーション、データの置き場など様々な用途で利用される。
-
EC2とはネットワーク接続されている。
-
99.999%の可用性を持ち、サイズは1G~16TBでサイズと利用期間で課金される。
-
ボリュームデータはAZ内で複数のHWにデフォルトで複製されており、冗長化不要。
-
データは永続的に利用可能。
-
1つのEBSを複数のインスタンスで共有することはできない(一つのEC2に複数のEBSをアタッチすることは可能)。
-
同じAZのインスタンスのみ付け替えが可能。
-
EC2作成時に、デフォルトで汎用SSD型のEBSがアタッチされる。
##ストレージサービス
######ブロックストレージサービス
-
HDDやSSDの領域を一定の大きさのブロックに分けて、データを管理するストレージのことを指す。例えば、1ブロック40GBで100GBのデータを管理する場合は、3ブロックを使って管理することになる。
-
EC2にアタッチして使う。
-
AWSサービスでは、EBSが該当する。
######ファイルストレージサービス
-
複数のEC2インスタンスから同時にアタッチ可能な共有ストレージサービス。
-
ファイル形式でデータを保存。
-
AWSサービスでは、EFSが該当する。
######オブジェクトストレージサービス
-
データに目印となるラベル(メタ情報)を付けたうえで、広大な空間に配置するようなイメージ。1つ1つのデータを「オブジェクト」と呼び、画像や動画などの保存に向いている。
-
ブロック単位ではなくオブジェクト単位で管理するため、特定の欲しいオブジェクト(データ)だけをピンポイントに取り出すことが可能。その際に、REST APIを使用する。
-
拡張性にとても優れている。
-
AWSでは、S3が該当する。
##EBSのスナップショット
- ある特定の時点で、ストレージに書き込まれた内容をコピーし、そのコピーは、圧縮されて、S3に保存される。
- ストレージ上のデータは保存するが、メモリ上のデータ(アプリケーションのトランザクション情報や、ファイルシステムの更新情報など)は保存しない。この性質をクラッシュ整合性という。
- S3に保存される容量に応じて課金される。
- 前回行われたバックアップからの変更や追加されたデータのみ複製するバックアップ(増分バックアップ方式)。
- 普通にコピーするよりも、差分のみをコピーするため、容量の消費が少ない。故に、利用効率が良い。
- スナップショットからEBSの復元が可能。
- スナップショットから他のAZに同一のEBSを構築することもできる。
##AMIによるバックアップとスナップショットによるバックアップの違い
- AMI
- ある時点でのスナップショット+その他EC2に関する情報(メタデータ)をバックアップする。
- スナップショット
- ある時点でのストレージデバイスに書き込まれた情報をバックアップする。
##EBSのボリュームタイプ
主流なEBSは4つ。系統として二つに分けられる。HDD系とSDD系である。
系統 | ボリュームタイプ | 用途 | サイズ |
---|---|---|---|
HDD | コールドHDD | ログデータなどのアクセス頻度が低いデータ。バックアップやアーカイブに用いられる。ルートボリュームには利用不可。 | 500GB~16TB |
HDD | スループット最適化HDD | ビックデータ処理。DWH。大規模なETL処理やログ分析で使われる。ルートボリュームには利用不可。 | 500GB~16TB |
SDD | 汎用SSD | 仮想デスクトップや低レイテンシーを要求するアプリ、中小規模のデータベースで使われる。また、EC2にデフォルトでアタッチされる。 | 1GB~16TB |
SDD | プロビジョンドIOPS | 高いI/O性能に依存するNOSQLアプリ、10000IOPSや160MB/sのワークロード大規模DBで使われる。複数のインスタンスにアタッチ可能。 | 4GB~16TB |
##スループットとIOPSの違い
- IOPS(Input Output per second)
- ストレージが1秒あたりに処理できるI/O(書き込み・読み込み)アクセスの数を指す。 基本的にHDDは1分あたりの回転数(RPM)の限界があるためIOPSが低い。SSDはIOPSが高い。
- スループット
- 1秒あたりのデータ転送量を指す。単位は、bps.mbpsなどがある。
ディスクのスループットが大きければアプリケーションのパフォーマンスが必ず上昇するというわけではない。サイズが小さいファイルを数多く書き込む様な場合、スループットよりもIOPSの数値を重視した方がパフォーマンスが上昇する。ボリュームタイプの選定には、このことを留意した方がよさそうです。