Amazon Elastic Block Store (EBS) は、Amazon EC2 インスタンスで使用するためのブロックレベルのストレージボリュームを提供します。Amazon EBS ボリュームは、EC2 インスタンスの運用状況から独立した永続性を保つオフインスタンス ストレージです。Amazon Elastic Block Store は、可用性と信頼性の高いストレージボリュームを提供します。実行中の Amazon EC2 インスタンスにマウントすることで、インスタンス内のデバイスとして使用することができます。Amazon EBS は、特にデータベース、ファイルシステム、または未使用のブロックレベルストレージが必要なアプリケーションに適しています。
Amazon EBS ボリュームは、特定の Availability Zone に 1 GB~1 TB のサイズで作成できます。ボリュームを作成した後は、同じ Availability Zone 内の Amazon EC2 インスタンスにマウントできます。マウントすると、ハードウェアやその他のブロックデバイスと同様にマウントデバイスとして表示されます。この時点で、インスタンスはローカルドライブと同じようにボリュームにアクセスし、ファイルシステムをフォーマットしたり、アプリケーションを直接インストールしたりできます。
ボリュームは、一度に1つのインスタンスにしかマウントできません。ただし、複数ボリュームを単独インスタンスにマウントすることは可能です。つまり、複数ボリュームをマウントし、ボリューム全体をストライプして入出力およびスループットのパフォーマンスを向上させることができます。この方法は、特にデータセットに対してランダム読み込み/書き込みが頻繁に発生するデータベーススタイルのアプリケーションに適しています。インスタンスにエラーが発生したり、Amazon EBS ボリュームからアンマウントされた場合は、そのボリュームを同じ Availability Zone の別のインスタンスにマウントできます。
Amazon EBS ボリュームを Amazon EC2 インスタンスのブートパーティションとして使うと、ブートパーティションを最大 1 TB まで拡張することができ、インスタンスが利用可能な限りブートパーティションのデータを格納してワンクリックで AMI をバンドルできます。さらにシステムの状態を保ちながら、短時間で Amazon EBS ボリュームからブートするインスタンスを停止または再起動することもできます。Amazon EBS を使用する場合、ユーザーには使用したリソースの量に対してのみ料金をお支払いいただきます。
Amazon EBS は、復旧用にデータのスナップショットを Amazon S3 にバックアップする機能が装備されています。Amazon EBS スナップショットは、最後にスナップショットを撮った時点から変更のあるブロックのみを保存する差分バックアップです。100 GB のデータを格納するデバイスのうち、最後にスナップショットを撮ってから 5 GB のみに変更がある場合、Amazon S3 には、変更のあった 5 GB のみが追加格納されます。スナップショットが差分ベースで保存されても、他のスナップショットが削除されたために必要がなくなったデータのスナップショットを削除できます。従って、以前どのスナップショットが削除されたかに関係なく、すべてのアクティブなスナップショットには、ボリュームの復元に必要な情報がすべて含まれています。さらに、ボリュームを復元する時間は、すべてのスナップショットで同じであり、差分の省スペースを伴うフルバックアップ時間を回復します。
スナップショットは、新しいボリュームのインスタンス作成に使用して、ボリュームのサイズを拡張したり、ボリュームを Availability Zone 内で移動したりできます。新しいボリュームを作成する時には、既存の Amazon S3 スナップショットを基に作成するかどうかを選択するオプションが表示されます。この場合、新しいボリュームは、オリジナルのボリュームを複製します。オプションでボリュームサイズを変更したり、別の Availability Zone を指定することもできます。この機能は、既存のボリュームサイズを拡大する、または新しい Availability Zone にボリュームを複製する場合に便利です。スナップショットを使ってボリュームのサイズを変更する場合は、お使いのファイルシステムまたはアプリケーションがデバイスのサイズ変更に対応していることを必ず確認してください。
既存の Amazon S3 スナップショットを基に作成された新しいボリュームは、バックグラウンドで読み込まれます。つまり、スナップショットを基にボリュームを一度作成すると、マウントしたインスタンスがそのボリュームとすべてのデータにアクセスする前にすべてのデータを Amazon S3 から Amazon EBS ボリュームに転送する時間を待つ必要はありません。インスタンスが読み込まれていないデータにアクセスすると、ボリュームは即座にリクエストデータを Amazon S3 からダウンロードしてから残りのデータを継続してバックグラウンドで読み込みます。
Amazon EBS 共有スナップショットを使うと、ユーザーは、スナップショットを同僚や AWS コミュニティの別のユーザーと簡単に共有することができます。この機能では、ユーザーが許可した相手が Amazon EBS 共有スナップショットを基に独自の Amazon EBS ボリュームを素早く作成することができます。必要に応じて、すべての AWS ユーザーに対して公開するデータを指定することもできます。アクセスを許可されたユーザーが、独自の EBS ボリュームをスナップショットを基に作成しても、元のスナップショットは変更されません。これは、開発者が Amazon EC2 コミュニティの別のユーザーとデータを共有する便利な方法であり、新規カスタマーがスナップショットを使って簡単に Amazon EBS ボリュームを作成できる方法でもあります。データはすべて Amazon クラウドに格納されるため、ユーザーは、ダウンロードに時間を費やす必要なく、即座にアクセスできます。
スナップショットは、AWS Management Console またはAPI 呼び出しを使って共有できます。ユーザーは、AWS コミュニティ全体で共有するオプションを含めて、共有スナップショット別に設定することができます。
Amazon EBS ボリュームは、データセット間で多くのランダムアクセスを実行するアプリケーションのために、Amazon EC2 インスタンスストアよりも高いスループットを提供するように設計されています。また、複数ボリュームを単独のインスタンスにマウントし、ボリューム全体をストライプして、スループットをより向上させることができます。
実際のパフォーマンスは、アプリケーションの動作(ランダムまたは順次アクセス、大量または少量処理など)により異なるため、アプリケーションとボリュームの実関係をベンチマークすることをお勧めします。Amazon EBS ボリュームでは、ネットワークアクセスが必要なため、インスタンスが大きいほど、高速処理と安定したスループットパフォーマンスが実感できます。
Amazon EBS ボリュームは、高い供給力と信頼性を提供するよう設計されています。Amazon EBS ボリュームのデータは、Availability Zone 内の複数サーバーにレプリケーションされ、1つのサーバーに不具合が発生した場合のデータ損失を防ぎます。ボリュームの持続性は、ボリュームのサイズと最後にスナップショットを作成してから変更されたデータ量に依存します。例えば、最後に Amazon EBS スナップショットを撮ってから 20 GB 以下の変更データを処理するボリュームでは、0.1%~0.5%の年間故障率(AFR)が予測されます。この場合の故障とは、ボリュームの完全損失を示します。これを一般的に約4%の AFR を示す商品ハードディスクと比較すると、EBS ボリュームは、商品ハードディスクより10倍以上も信頼性があることになります。
Amazon EBS サーバーは、1つの Availability Zone でレプリケーションされているため、同じ Availability Zone 内で複数の Amazon EBS ボリュームを隔ててデータをミラーリングしても、ボリュームの持続性を大幅に向上させるわけではありません。ただし、持続性について言えば、Amazon EBS は、ボリュームの安定したスナップショットをポイントインタイムで作成して Amazon S3 に格納し、自動的に複数の Availability Zone にレプリケーションする機能が装備されています。つまり、ボリュームのスナップショットを頻繁に撮ることは、データの持続性を長期間保つための便利かつコスト効果の高い方法と言えます。たとえ Amazon EBS ボリュームに不具合が生じても、ボリュームのスナップショットはすべて元の状態を保っているため、最後にスナップショットを撮った時点を基にボリュームを再製することができます。
Amazon Elastic Block Store では、使った分だけにお支払いいただきます。ボリュームストレージの料金は、お客様が割り当てた量に対して、解放するまでの間発生します。ボリューム入出力の料金は、ボリュームに対するリクエストの数に基づいて決定します。例えば、AWS 米国東部リージョンでの料金は、割り当て済みのストレージ1 GB ごとに月0.10 USD、入出力リクエスト100万件ごとに0.10 USD となっています。IOSTAT などのプログラムは、システムの入出力状態をいつでも正確に測定します。ただし、アプリケーションやオペレーティングシステムは、様々なレベルでキャッシングすることがあるため、すべての入出力をディスクと同期している場合を除き、請求書にはアプリケーションの実入出力回数より少ない入出力リクエストが記載されることがあります。
例えば、100 GB の中規模ウェブサイトデータベースでは、月平均で、毎秒平均100回の入出力が行われます。これは、毎月ストレージに$10(100 GB x $0.10/月)、リクエストに約$26(毎月~260万秒 x 毎秒100万回の入出力 * $0.10/100万回の入出力)の費用がかかることを示します。
スナップショットのストレージは、データが使用する Amazon S3 の容量に依存します。データは Amazon S3 に保存される前に圧縮され、Amazon EBS は空のブロックは保存しないため、スナップショットのサイズは、ボリュームサイズより小さくなる場合がほとんどです。初めてボリュームのスナップショットを撮る時は、Amazon EBS で全データを Amazon S3 にコピーします。 ただし、増分スナップショットは、Amazon EBS ボリュームの変更部分のみを Amazon S3 に保存します。