前回の記事では、EC2インスタンスの起動と接続方法について解説しました。本記事では、EC2のストレージサービスであるEBS(Elastic Block Store)と、インスタンスのテンプレートであるAMI(Amazon Machine Image)について詳しく解説します。EBSボリュームの種類と選び方、スナップショットによるバックアップ、AMIの作成と活用方法を理解し、EC2インスタンスのストレージ管理スキルを身につけましょう。
EC2のストレージオプション
EC2インスタンスで使用できるストレージには、大きく分けて「EBS(Elastic Block Store)」と「インスタンスストア」の2種類があります。それぞれの特性を理解し、用途に応じて適切に選択することが重要です。
EBSとインスタンスストアの違い
graph TB
subgraph "EC2ストレージの種類"
subgraph EBS["EBS(ネットワーク接続)"]
E1[永続的ストレージ]
E2[スナップショット対応]
E3[サイズ変更可能]
E4[別インスタンスに付け替え可能]
end
subgraph Instance["インスタンスストア(ローカル)"]
I1[一時的ストレージ]
I2[高速I/O]
I3[追加コストなし]
I4[停止・終了でデータ消失]
end
end
EC2[EC2インスタンス] --> EBS
EC2 --> Instance| 特性 | EBS | インスタンスストア |
|---|---|---|
| 接続方式 | ネットワーク経由 | 物理的に接続 |
| データ永続性 | インスタンス停止後も保持 | 停止・終了でデータ消失 |
| バックアップ | スナップショットで対応 | 手動でコピーが必要 |
| サイズ変更 | 動的に変更可能 | 変更不可 |
| 料金 | 使用量に応じた課金 | インスタンス料金に含まれる |
| レイテンシー | ネットワーク経由のため若干の遅延 | 非常に低レイテンシー |
| 用途 | OS、データベース、永続データ | キャッシュ、一時ファイル、バッファ |
インスタンスストアの特徴
インスタンスストア(エフェメラルストレージ)は、EC2インスタンスが動作するホストコンピューターに物理的に接続されたディスクです。高いI/O性能を提供しますが、データの永続性が保証されません。
インスタンスストアのデータが失われるケース
- インスタンスの停止(Stop)
- インスタンスの終了(Terminate)
- ホストコンピューターのハードウェア障害
- インスタンスの休止(Hibernate)
インスタンスストアが適しているユースケース
- バッファ、キャッシュ、スクラッチデータ
- 一時的なコンテンツ(セッションデータなど)
- 複製されているデータ(分散ファイルシステムのレプリカなど)
インスタンスストアは、すべてのインスタンスタイプで利用できるわけではありません。i3、d3、c5dなどの特定のインスタンスタイプでのみ利用可能です。
EBS(Elastic Block Store)の基礎
EBSは、EC2インスタンスで使用する永続的なブロックストレージサービスです。ファイルシステムの作成、データベースの実行、OSのインストールなど、幅広い用途で利用されます。
EBSの主な特徴
| 特徴 | 説明 |
|---|---|
| 高可用性 | 同一AZ内で自動的に複製され、99.8%〜99.999%の耐久性 |
| スケーラビリティ | 1 GiBから16 TiB(io2は64 TiB)まで柔軟にサイズ設定 |
| パフォーマンス | IOPS、スループットを用途に応じて選択可能 |
| スナップショット | S3に増分バックアップを作成可能 |
| 暗号化 | AWS KMSによる透過的な暗号化をサポート |
EBSボリュームのライフサイクル
EBSボリュームは、インスタンスとは独立したライフサイクルを持ちます。インスタンスを終了してもボリュームを保持したり、別のインスタンスにアタッチし直したりできます。
stateDiagram-v2
[*] --> creating: ボリューム作成
creating --> available: 作成完了
available --> in_use: アタッチ
in_use --> available: デタッチ
in_use --> in_use: スナップショット作成
available --> deleting: 削除
deleting --> [*]: 削除完了EBSとインスタンスの関係
1つのEBSボリュームは、基本的に1つのインスタンスにのみアタッチできます(マルチアタッチ機能を使用する場合を除く)。一方、1つのインスタンスには複数のEBSボリュームをアタッチできます。
graph LR
subgraph "EC2インスタンス"
EC2[インスタンス]
end
subgraph "EBSボリューム"
Root[ルートボリューム<br/>/dev/xvda]
Data1[データボリューム1<br/>/dev/xvdb]
Data2[データボリューム2<br/>/dev/xvdc]
end
EC2 --> Root
EC2 --> Data1
EC2 --> Data2ルートボリュームとデータボリューム
- ルートボリューム: OSがインストールされているボリューム。インスタンス起動時に自動的に作成される
- データボリューム: アプリケーションデータ用に追加でアタッチするボリューム
EBSボリュームタイプの種類と選び方
EBSには複数のボリュームタイプがあり、パフォーマンス要件とコストのバランスに応じて選択します。大きく「SSDベース」と「HDDベース」に分類されます。
SSDベースのボリュームタイプ
SSDベースのボリュームは、ランダムI/Oが多いワークロードに適しています。IOPSがパフォーマンスの主要指標です。
gp3(汎用SSD)
gp3は、コストパフォーマンスに優れた汎用SSDボリュームです。多くのワークロードで第一選択となります。
| 項目 | 仕様 |
|---|---|
| ボリュームサイズ | 1 GiB〜16 TiB |
| ベースラインIOPS | 3,000 IOPS(ボリュームサイズに関係なく) |
| 最大IOPS | 16,000 IOPS |
| ベースラインスループット | 125 MiB/秒 |
| 最大スループット | 1,000 MiB/秒 |
| レイテンシー | 10ミリ秒未満 |
| 料金(東京リージョン) | 約$0.096/GiB/月 |
gp3では、IOPS とスループットをボリュームサイズとは独立してプロビジョニングできます。必要な分だけ性能を追加できるため、コスト効率が高いです。
gp2(汎用SSD、旧世代)
gp2は、gp3の前世代の汎用SSDボリュームです。IOPSがボリュームサイズに比例する特性があります。
| 項目 | 仕様 |
|---|---|
| ボリュームサイズ | 1 GiB〜16 TiB |
| ベースラインIOPS | 3 IOPS/GiB(最小100 IOPS) |
| 最大IOPS | 16,000 IOPS |
| バースト機能 | 3,000 IOPSまでバースト可能(クレジット制) |
| 最大スループット | 250 MiB/秒 |
gp2は新規利用には推奨されません。既存のgp2ボリュームはgp3への移行を検討してください。
io2 Block Express(プロビジョンドIOPS SSD、最高性能)
io2 Block Expressは、ミッションクリティカルなワークロード向けの最高性能ボリュームです。
| 項目 | 仕様 |
|---|---|
| ボリュームサイズ | 4 GiB〜64 TiB |
| 最大IOPS | 256,000 IOPS |
| 最大スループット | 4,000 MiB/秒 |
| レイテンシー | ミリ秒未満 |
| 耐久性 | 99.999% |
| IOPS対GiB比率 | 最大1,000:1 |
io2 Block Expressの用途
- 大規模なリレーショナルデータベース(Oracle、SQL Server、SAP HANA)
- NoSQLデータベース(MongoDB、Cassandra)
- I/O集約的なトランザクション処理
io1(プロビジョンドIOPS SSD)
io1は、io2の前世代のプロビジョンドIOPSボリュームです。
| 項目 | 仕様 |
|---|---|
| ボリュームサイズ | 4 GiB〜16 TiB |
| 最大IOPS | 64,000 IOPS |
| 最大スループット | 1,000 MiB/秒 |
| 耐久性 | 99.8%〜99.9% |
io1は高い性能が必要な場合に使用しますが、可能であればio2への移行を推奨します。
HDDベースのボリュームタイプ
HDDベースのボリュームは、シーケンシャルI/Oが多いワークロードに適しています。スループットがパフォーマンスの主要指標です。
st1(スループット最適化HDD)
st1は、高スループットを必要とするワークロード向けの低コストHDDボリュームです。
| 項目 | 仕様 |
|---|---|
| ボリュームサイズ | 125 GiB〜16 TiB |
| 最大IOPS | 500 IOPS |
| ベースラインスループット | 40 MiB/秒/TiB |
| 最大スループット | 500 MiB/秒 |
| 料金(東京リージョン) | 約$0.054/GiB/月 |
st1の用途
- ビッグデータ処理
- データウェアハウス
- ログ処理
- ETL処理
sc1(Cold HDD)
sc1は、アクセス頻度の低いデータ向けの最低コストHDDボリュームです。
| 項目 | 仕様 |
|---|---|
| ボリュームサイズ | 125 GiB〜16 TiB |
| 最大IOPS | 250 IOPS |
| ベースラインスループット | 12 MiB/秒/TiB |
| 最大スループット | 250 MiB/秒 |
| 料金(東京リージョン) | 約$0.018/GiB/月 |
sc1の用途
- アーカイブデータ
- バックアップ
- アクセス頻度の低いデータ
ボリュームタイプの比較と選択基準
flowchart TD
Start[ボリュームタイプ選択] --> Q1{ブートボリューム?}
Q1 -->|はい| SSD[SSDを選択]
Q1 -->|いいえ| Q2{高IOPSが必要?}
Q2 -->|はい| Q3{最高性能が必要?}
Q2 -->|いいえ| Q4{高スループットが必要?}
Q3 -->|はい| io2[io2 Block Express]
Q3 -->|いいえ| gp3_1[gp3]
Q4 -->|はい| Q5{アクセス頻度は?}
Q4 -->|いいえ| gp3_2[gp3]
Q5 -->|高い| st1[st1]
Q5 -->|低い| sc1[sc1]
SSD --> gp3_3[gp3]| ユースケース | 推奨ボリュームタイプ |
|---|---|
| ブートボリューム | gp3 |
| 汎用ワークロード | gp3 |
| 中規模データベース | gp3(高IOPSをプロビジョニング) |
| 大規模データベース | io2 Block Express |
| ビッグデータ、ログ処理 | st1 |
| アーカイブ、バックアップ | sc1 |
EBSボリュームの操作
EBSボリュームの作成
AWSマネジメントコンソールからEBSボリュームを作成する手順を説明します。
- EC2コンソールを開き、左メニューから「ボリューム」を選択
- 「ボリュームを作成」をクリック
- 以下の設定を入力
- ボリュームタイプ: gp3など
- サイズ: 必要なサイズ(GiB)
- IOPS: gp3/io2の場合、必要に応じて設定
- スループット: gp3の場合、必要に応じて設定
- アベイラビリティゾーン: インスタンスと同じAZを選択
- 暗号化: 推奨
- 「ボリュームを作成」をクリック
EBSボリュームのアタッチ
作成したボリュームをインスタンスにアタッチする手順です。
- ボリューム一覧から対象ボリュームを選択
- 「アクション」→「ボリュームのアタッチ」を選択
- アタッチ先のインスタンスとデバイス名を指定
- 「アタッチ」をクリック
デバイス名の命名規則
| デバイス名 | 用途 |
|---|---|
| /dev/xvda | ルートボリューム |
| /dev/xvdb〜/dev/xvdp | データボリューム |
Linuxでのボリュームマウント
アタッチしたボリュームをLinuxで使用するには、ファイルシステムの作成とマウントが必要です。
|
|
永続的なマウント設定
再起動後も自動マウントするには、/etc/fstabに設定を追加します。
|
|
EBSボリュームのサイズ変更
EBSボリュームは、ダウンタイムなしでサイズを拡張できます(縮小はできません)。
コンソールでのサイズ変更
- ボリュームを選択し、「アクション」→「ボリュームの変更」を選択
- 新しいサイズを入力
- 「変更」をクリック
ファイルシステムの拡張(Linux)
ボリュームサイズ変更後、ファイルシステムも拡張する必要があります。
|
|
EBSスナップショット
EBSスナップショットは、EBSボリュームのポイントインタイムバックアップです。Amazon S3に保存され、増分バックアップとして効率的に管理されます。
スナップショットの特徴
graph TB
subgraph "スナップショットの仕組み"
Vol[EBSボリューム] -->|初回| Snap1[スナップショット1<br/>フルバックアップ]
Vol -->|2回目| Snap2[スナップショット2<br/>変更分のみ]
Vol -->|3回目| Snap3[スナップショット3<br/>変更分のみ]
Snap1 --> S3[(Amazon S3)]
Snap2 --> S3
Snap3 --> S3
end| 特徴 | 説明 |
|---|---|
| 増分バックアップ | 変更されたブロックのみを保存し、コストを削減 |
| リージョン間コピー | 別リージョンにコピーしてDR対策が可能 |
| 暗号化 | 暗号化ボリュームのスナップショットも暗号化される |
| 即時利用 | 復元中でも新しいボリュームを使用可能(遅延読み込み) |
| 耐久性 | S3の11 9s(99.999999999%)の耐久性 |
スナップショットの作成
|
|
コンソールでの作成手順
- ボリュームを選択し、「アクション」→「スナップショットを作成」を選択
- 説明とタグを入力
- 「スナップショットを作成」をクリック
スナップショットからのボリューム復元
スナップショットから新しいEBSボリュームを作成できます。
|
|
スナップショットのライフサイクル管理
Amazon Data Lifecycle Manager(DLM)を使用して、スナップショットの自動作成と保持期間の管理を自動化できます。
graph LR
subgraph "Data Lifecycle Manager"
Policy[ライフサイクルポリシー] --> Schedule[スケジュール<br/>毎日 03:00]
Schedule --> Create[スナップショット作成]
Create --> Retain[保持<br/>7日間]
Retain --> Delete[古いスナップショット削除]
endDLMポリシーの設定例
|
|
スナップショットのクロスリージョンコピー
災害復旧(DR)対策として、スナップショットを別リージョンにコピーできます。
|
|
AMI(Amazon Machine Image)
AMIは、EC2インスタンスを起動するためのテンプレートです。OS、アプリケーション、設定、EBSボリュームの構成情報が含まれており、同じ構成のインスタンスを繰り返し作成できます。
AMIの構成要素
graph TB
subgraph "AMIの構成"
AMI[AMI]
subgraph "起動許可"
Public[パブリック]
Private[プライベート]
Shared[共有]
end
subgraph "ブロックデバイスマッピング"
Root[ルートボリューム<br/>スナップショット]
Data[データボリューム<br/>スナップショット]
end
AMI --> Public
AMI --> Private
AMI --> Shared
AMI --> Root
AMI --> Data
end| 構成要素 | 説明 |
|---|---|
| ルートデバイステンプレート | OS、アプリケーション、設定を含むスナップショット |
| 起動許可 | AMIを使用できるAWSアカウントを制御 |
| ブロックデバイスマッピング | インスタンス起動時にアタッチするボリュームの定義 |
AMIの種類
AMIは、ルートデバイスのタイプによって2種類に分類されます。
| タイプ | 説明 | 特徴 |
|---|---|---|
| EBS-backed AMI | ルートデバイスがEBSボリューム | 停止・再起動が可能、推奨 |
| Instance store-backed AMI | ルートデバイスがインスタンスストア | 停止不可、終了するとデータ消失 |
現在は、EBS-backed AMIが主流です。
カスタムAMIの作成
既存のインスタンスからカスタムAMIを作成する手順を説明します。
作成前の準備
- インスタンスにインストールしたソフトウェアや設定を確認
- 不要なファイル(ログ、キャッシュ、秘密鍵など)を削除
- 必要に応じてインスタンスを停止(データの整合性を確保)
|
|
コンソールでのAMI作成
- EC2コンソールでインスタンスを選択
- 「アクション」→「イメージとテンプレート」→「イメージを作成」を選択
- 以下の情報を入力
- イメージ名: 識別しやすい名前
- イメージの説明: 用途やバージョン情報
- 再起動しない: チェックを外す(推奨、データ整合性のため)
- 「イメージを作成」をクリック
AWS CLIでのAMI作成
|
|
AMIの活用パターン
graph TB
subgraph "AMI活用パターン"
Base[ベースAMI<br/>Amazon Linux 2023]
Base --> Custom1[カスタムAMI<br/>Webサーバー]
Base --> Custom2[カスタムAMI<br/>アプリサーバー]
Base --> Custom3[カスタムAMI<br/>バッチサーバー]
Custom1 --> Instance1[本番Webサーバー1]
Custom1 --> Instance2[本番Webサーバー2]
Custom1 --> Instance3[開発Webサーバー]
Custom2 --> ASG[Auto Scalingグループ]
endゴールデンイメージパターン
組織で標準化されたAMI(ゴールデンイメージ)を作成し、すべてのインスタンスで使用するパターンです。
| メリット | 説明 |
|---|---|
| 一貫性 | すべてのインスタンスが同じ構成で起動 |
| セキュリティ | セキュリティパッチや設定が適用済み |
| 起動時間短縮 | アプリケーションがプリインストール済み |
| 運用効率化 | インスタンス起動時の設定作業を削減 |
AMIのバージョン管理
AMIの命名規則を定め、バージョン管理を行うことが重要です。
{プロジェクト名}-{用途}-{バージョン}-{日付}
例: myapp-web-v1.2.0-20260125
AMIのクロスリージョンコピー
AMIを別リージョンにコピーして、マルチリージョン展開やDR対策に活用できます。
|
|
AMIの共有
AMIを他のAWSアカウントと共有できます。
|
|
AMI共有時の注意点
- 暗号化されたAMIを共有する場合、KMSキーも共有が必要
- 機密情報が含まれていないか確認
- 共有先アカウントを定期的に確認
EBSの暗号化
EBSボリュームとスナップショットの暗号化は、データ保護の重要な要素です。AWS KMS(Key Management Service)を使用した透過的な暗号化を提供します。
暗号化の仕組み
graph LR
subgraph "EBS暗号化の流れ"
App[アプリケーション] -->|平文データ| EC2[EC2インスタンス]
EC2 -->|暗号化| EBS[EBSボリューム]
EBS -->|暗号化データ| Snap[スナップショット]
KMS[AWS KMS] -->|データキー| EC2
end| 暗号化される内容 | 説明 |
|---|---|
| ボリューム内のデータ | 保存データ(Data at Rest)が暗号化 |
| インスタンス間の転送データ | EC2とEBS間の通信が暗号化 |
| スナップショット | 暗号化ボリュームから作成されたスナップショット |
| 復元されたボリューム | 暗号化スナップショットから作成されたボリューム |
デフォルト暗号化の有効化
アカウントレベルでデフォルト暗号化を有効にすると、新規作成されるすべてのEBSボリュームが自動的に暗号化されます。
|
|
既存ボリュームの暗号化
既存の非暗号化ボリュームを暗号化するには、スナップショットを経由して暗号化ボリュームを作成します。
graph LR
A[非暗号化ボリューム] -->|スナップショット作成| B[非暗号化スナップショット]
B -->|コピー(暗号化オプション有効)| C[暗号化スナップショット]
C -->|ボリューム作成| D[暗号化ボリューム]
|
|
EBSのパフォーマンス最適化
EBS最適化インスタンス
EBS最適化インスタンスは、EBSとの通信に専用の帯域幅を確保し、ネットワークトラフィックとの競合を防ぎます。
| インスタンスタイプ | EBS最適化 | 専用帯域幅 |
|---|---|---|
| t3.micro | デフォルトで有効 | 最大2,085 Mbps |
| m5.large | デフォルトで有効 | 最大4,750 Mbps |
| m5.xlarge | デフォルトで有効 | 最大4,750 Mbps |
現行世代のほとんどのインスタンスタイプでは、EBS最適化がデフォルトで有効になっています。
IOPSとスループットの関係
I/O性能は、IOPSとスループットの両方で決まります。
スループット(MiB/秒) = IOPS × I/Oサイズ(KiB) ÷ 1,024
| I/Oサイズ | IOPS | 計算上のスループット |
|---|---|---|
| 16 KiB | 3,000 | 46.9 MiB/秒 |
| 256 KiB | 3,000 | 750 MiB/秒 |
小さいI/OサイズではIOPSがボトルネックになり、大きいI/Oサイズではスループットがボトルネックになります。
パフォーマンスモニタリング
CloudWatchメトリクスを使用してEBSのパフォーマンスを監視します。
| メトリクス | 説明 | 推奨アクション |
|---|---|---|
| VolumeReadOps/VolumeWriteOps | 読み取り/書き込み操作数 | IOPSの上限に達していないか確認 |
| VolumeReadBytes/VolumeWriteBytes | 読み取り/書き込みバイト数 | スループットの上限に達していないか確認 |
| VolumeQueueLength | I/Oキューの長さ | 1を超える場合はI/O待ちが発生 |
| VolumeTotalReadTime/VolumeTotalWriteTime | 合計I/O時間 | レイテンシーの確認 |
まとめ
本記事では、EC2のストレージサービスであるEBSとAMIについて解説しました。
- EC2ストレージの種類: EBS(永続的)とインスタンスストア(一時的)の2種類があり、用途に応じて選択
- EBSボリュームタイプ: gp3が汎用的に推奨、高性能が必要な場合はio2 Block Express、大容量データにはst1/sc1
- スナップショット: 増分バックアップ方式でS3に保存、DLMで自動化可能
- AMI: インスタンスのテンプレート、ゴールデンイメージパターンで運用効率化
- 暗号化: デフォルト暗号化の有効化を推奨、既存ボリュームはスナップショット経由で暗号化
次回の記事では、EC2の料金体系と最適化について解説します。オンデマンド、リザーブドインスタンス、スポットインスタンス、Savings Plansの違いと使い分けを学び、コスト効率の高いEC2運用を実現しましょう。