AWS EC2 データ保護のための EC2 インスタンスのスナップショット作成方法
Elastic Compute Cloud(EC2)でEC2インスタンス(VM)を実行するためにAmazon Web Services(AWS)をご利用の場合、ソフトウェアの障害、マルウェア感染、誤削除などによるデータ損失からワークロードを保護する方法はいくつかあります。 その選択肢の一つが、EC2インスタンス向けのAWS標準機能である"EBSスナップショット"です。本ブログ記事では、EBSボリュームスナップショットを使用してEC2インスタンスのスナップショットを作成する方法について、設定プロセスの詳細な例を交えて解説します。
EBSスナップショットとは何ですか?
EBSスナップショットは、Elastic Block Store(EBS)ボリュームの増分コピーであり、Amazon S3に保存されます。つまり、初めてEBSスナップショットを作成する際にはフルバックアップが作成され、その後のEBSスナップショットでは変更されたデータのみがコピーされます。EBSボリュームは、EC2インスタンスにアタッチされた仮想ディスクです。
EBSスナップショットはAmazon S3に保存されますが、S3ストレージ内のスナップショットに手動でアクセスすることはできません。 これらのスナップショットは、EC2管理コンソールで管理できます。
注: "AWS EC2 スナップショット"や"Amazon スナップショット"という用語は、EBS スナップショットを指す場合にも使われることがあります。
EBSスナップショットの仕組み
EBSスナップショットは、EC2インスタンスのデータをブロック単位でバックアップしたものであり、スナップショットコマンドが実行された特定の時点におけるEBSボリュームの状態を表しています。つまり、インスタンスが稼働中の場合、スナップショットの取得が開始された後にEBSボリュームに書き込まれたデータブロックは ではない スナップショットに保存されます。その結果、EBSスナップショットは クラッシュ一貫性のあるバックアップと、アプリケーション一貫性のないバックアップ.
EBSスナップショットは、VMware vSphereやMicrosoft Hyper-Vにおけるスナップショットとは異なる点に注意してください。Hyper-Vおよび VMwareのスナップショットはバックアップではありません また、適切なバックアップの代わりにはなりません。
ただし、 EBSスナップショットの制限事項これには、スケジュール設定や保存期間のオプションがないこと、オンプレミスでのコピーを作成できないこと、および復旧を簡素化するためのアプリケーション一貫性のあるEC2スナップショットの作成が複雑であることが含まれます。
AWSコンソールでEC2インスタンスのスナップショットを作成する方法
AWS Management Console は、EBS スナップショットの作成を含め、AWS のすべてのコンピューティング、ストレージ、およびその他のリソースを管理するために使用される GUI ウェブインターフェースです。
スナップショットを作成したい EC2 インスタンスにアクセスするには:
- EC2インスタンス、EBSボリューム、およびEBSスナップショットを作成するための必要な権限を持つアカウントを使用して、AWS Management Consoleにサインインしてください。
- クリック
Servicesそして、そのComputeセクションで、[クリック]EC2EC2インスタンス、EBSボリューム、およびその他のEC2機能の管理コンソールを開くには。
EBSスナップショットの作成手順を説明するために、EC2インスタンスを用意しました。EBSスナップショットを使用してバックアップおよび復元を行うこのEC2インスタンスのパラメータは、以下の通りです:
Name: ブログ用テンプレート
EC2インスタンスID: i-0071290000000cb84
インスタンスタイプ: t2.micro
アベイラビリティゾーン: eu-central-1c
EBS 第1巻: vol-0617000000000763c
ボリュームの種類: gp2
巻数: 8 GB
EC2インスタンス上で動作しているゲストOSは、Ubuntu Server(Linux)です。
EBSボリュームへのファイル書き込み
スナップショットを作成する前に、EC2インスタンスにアタッチされた仮想ディスク上に2つのファイルを作成しましょう。こうすることで、EBSスナップショットからインスタンスを復元した後、これらのファイルが復元されているかどうかを確認できます。ユーザーホームディレクトリに2つのファイルを作成します:
lspci > file01.txt
echo "test EC2 snapshot 01" > snapshot01.txt
インスタンスの準備
スナップショットに一貫性のあるデータが含まれるように、EC2インスタンスを停止してください。その理由は、EBSボリュームがブロックレベルで動作するためです。EBSスナップショットが作成されると、その時点でのEBSボリュームの状態が保存されます。ストレージブロックはそのままの状態で保存されます。システムは、その時点でファイルシステムレベルで行われたファイル操作を認識しません。スナップショット作成時にEBSボリュームへのファイル書き込みが行われている場合、スナップショットには一貫性のないデータが含まれてしまいます。 この影響は、ファイルの書き込み中に物理コンピュータの電源ケーブルを抜くのと同様です。
非システム用 EBS ボリュームのスナップショットを取得する場合は、ボリューム上でファイル書き込み操作が行われていないことを確実にするために、オペレーティングシステムからファイルシステムをアンマウントできます。EC2 インスタンスのスナップショットを取得するには、ハイバネーションを無効にする必要があります。
EC2 インスタンスをスナップショット取得用に準備するには:
- EC2管理コンソールで、EC2インスタンスの一覧が表示されたページを開きます。インスタンス名を右クリックし、コンテキストメニューから
Stop instance.
- EC2インスタンスが使用しているボリュームを探します。[ ] をクリックします。
Storageタブをクリックし、該当するEBSボリュームのボリュームIDをクリックします(vol-0617000000000763c (当方のケースでは)。
スナップショットを撮る
EC2インスタンスのスナップショットを作成する準備が整いました:
- EBSボリュームを選択し(行の左側にあるチェックボックスをクリック)、[クリック]
Actions>Create Snapshot.
- 説明を入力し、暗号化設定を行い、タグを追加します。私は以下のパラメータを使用しています:
- 説明: EBSスナップショットブログ 01
- 暗号化: 暗号化されていない
クリック Create Snapshot.
注: 暗号化されていないボリュームを使用し、暗号化されていないスナップショットを作成します。この場合、スナップショットの暗号化設定は手動で設定できます。暗号化されたボリュームのスナップショットを作成すると、そのスナップショットは自動的に暗号化されます。
- 次のようなメッセージとスナップショットIDが表示されるはずです:
スナップショットの作成リクエストが成功しました
snap-0778000000000ab40
スナップショットのIDをクリックすると、スナップショットのオプションとステータスが表示されたページが開きます。
- その 保留中 "スナップショット作成中"というステータスは、EBSボリュームのデータが現在Amazon S3へ転送されていることを意味します。スナップショットの作成が完了するまでお待ちください(ステータスが 完了)。所要時間は、スナップショットに保存されるデータのサイズによって異なります。
複数ボリュームのスナップショットを作成する方法
EC2インスタンスが複数のEBSボリュームを使用しているケースはよくあります。この場合、Amazon EC2のバックアップとして、そのEC2インスタンスにアタッチされているすべてのEBSボリュームを対象としたマルチボリュームスナップショットを作成できます。
このセクションでは、以下の内容について説明します:
EC2インスタンス用に2つ目のEBSボリュームを作成する
まず、デモ用に使用しているEC2インスタンスに、2つ目のEBSボリュームを追加してみましょう:
- EC2管理コンソールのナビゲーションペインで、[ ] に移動します
Elastic Block Store>Volumes. クリックCreate Volume.
- ~のために アベイラビリティゾーン、その領域はインスタンスの領域と同じでなければなりません(eu-central-1c (当方のケースでは)。
ボリュームの種類とサイズを入力し、暗号化オプションを設定して、タグを入力します。タグは、ボリュームの一覧から目的のボリュームを見つけるのに役立ちます。ここでは、ボリュームサイズを 1 GiB に設定し、以下のタグを使用します:
-
凡例: ブログ
-
値: 『temp』第2巻
クリック Create Volume.
- ボリュームのIDを覚えておく(または書き留めておく) (vol-0b4a0000000003d01 (当方の環境では)。ボリュームIDをクリックして、ボリュームのプロパティを開きます。
- ボリュームをEC2インスタンスにアタッチします。ボリュームを右クリックするか、[クリック] をクリックします。
Actionsそして、表示されるメニューで、[クリック]Attach Volume.
- EBSボリュームをアタッチするインスタンスを選択してください。EC2インスタンスIDを選択する必要があります。今回の例では、インスタンスIDは i-0071290000000cb84.
ゲストOS上で、接続されたボリュームにアクセスするために使用するデバイスを選択できます。今回のケースでは /dev/sdf が使用されます。
クリック Attach 新しいボリュームをEC2インスタンスにアタッチします。
注: ディスクデバイスの名前変更に関する有用な情報が注記に表示されています。今回のケースでは /dev/sdf は次のように名前が変更されます /def/xvdf ゲストOS内で。

現在、2つのボリュームが当社のEC2インスタンスにアタッチされています(ブログ-temp):
vol-0617000000000763c
vol-0b4a0000000003d01
2番目のEBSボリュームへのデータ書き込み
次に、2つ目のEBSボリューム上にファイルを作成します。このファイルは、EBSスナップショットからボリュームを復元した後、すべてのデータが復旧されているかを確認するために使用されます。そのため、パーティションを作成し、ファイルシステムを作成して、EC2インスタンス上で実行されているゲストLinux OSにそのファイルシステムをマウントします。
ここでは、EC2インスタンス上で実行されているゲストLinux OSでの操作ではなく、EBSスナップショットを用いた操作に焦点を当てていますが、ボリュームの操作をより深く理解するために、使用するコマンドを記載します。
Managing storage
- 使用
lsblkLinuxでブロックデバイスの詳細を表示するには。 - 使用
df -hマウントされたディスクの空き容量を確認するには。 - 使用
mountマウントされたディスクを確認するには。
パーティションの作成とマウント
parted を使用して 2 番目の EBS ボリュームにパーティションを作成し、フォーマットする:
sudo parted -l
parted /dev/xvdf
(parted) mklabel msdos
(parted) print
(parted) mkpart primary ext4 1MB 955MB
(parted) print
(parted) quit
準備したパーティションにファイルシステムを作成する:
mkfs.ext4 /dev/xvdf1
マウントポイントとして使用するディレクトリを作成します:
mkdir disk2
ファイルシステムを含むパーティションを作成したディレクトリにマウントする:
mount /dev/xvdf1 /disk2/
マウントされたパーティションのディレクトリに移動します:
cd /disk2
2つのEBSボリュームへの変更内容を記録する
- Linux を実行している EC2 インスタンスにアタッチされた 2 番目の EBS ボリューム上のパーティションに、ファイルを作成します:
echo "EBS snapshot for disk 2" > /disk2/d2-file01.txt
- 最初のディスクに変更を加え、EC2インスタンスで使用されている最初のボリュームの新しいEBSスナップショットを作成します。両方のボリュームには、前回のスナップショットが作成された時点からの変更が含まれている必要があります。
私たちは snapshot02.txt 第1ボリュームのファイルに保存することで、第1ボリュームの新しいスナップショットに保存された変更をより簡単に検出できるようにします。
新しいデータを含む2つのEBSボリュームをEC2インスタンスにアタッチしたら、マルチボリュームスナップショットを作成できます。
複数ボリュームのスナップショットの作成
- 移動
Elastic Block Store>SnapshotsEC2インスタンス管理ページのナビゲーションペインで。クリックCreate Snapshot.
- リソースの種類を選択してください: インスタンス.
- EBSスナップショットを使用してボリュームをバックアップしたいEC2インスタンスのインスタンスIDを入力してください。
選択したインスタンスにアタッチされているすべてのボリュームが自動的に選択されます。
- 必要に応じてAWSでEBSスナップショットを検索しやすいように、説明を入力してください。この例では、説明は EBSスナップショットブログ 02.
- [選択] ボリュームからタグをコピーする EBSボリュームに割り当てられたタグを使用する場合は、このチェックボックスにチェックを入れてください。
- 一度当たると
Create Snapshot、選択されたすべてのボリュームのスナップショットが作成されます。
処理が正常に完了すると、次のようなメッセージが表示されます:
スナップショットの作成リクエストが成功しました
2つのAmazonスナップショット識別子が表示されます: snap-0f95000000000de71 そして パチン–0a91000000000769b 私たちの場合。
これらのID値を保存しておき、そのうちの1つをクリックしてスナップショットの作成状況を確認できます。スナップショットの作成を開始した直後、操作の状態は 保留中 および変更点 完了 処理が完了したら。
各ボリュームに対して新しいスナップショットが作成されました。
AWS CLI を使用したスナップショットの作成
コマンドラインインターフェースを好む場合や、スナップショットの作成を自動化する必要がある場合は、AWS Management Consoleの代わりにAWS CLIを使用できます。
AWS CLIでEBSスナップショットを作成するコマンドは次のとおりです:
aws ec2 create-snapshot --volume-id vol-0b4a51e1cea333d01 --description "This is a test snapshot for the blog"
出力は次のようになります:
{
"Description": "This is a test snapshot for the blog",
"Tags": [],
"Encrypted": false,
"VolumeId": "vol-0b4a51e1cea333d01",
"State": "pending",
"VolumeSize": 8,
"StartTime": "2021-08-28T21:06:01.000Z",
"Progress": "",
"OwnerId": "012345678910",
"SnapshotId": "snap-0689749a39a7b822b"
}
タグ付きスナップショットを作成するコマンド:
aws ec2 create-snapshot --volume-id vol-0b4a51e1cea333d01 --description 'Prod backup' --tag-specifications
'ResourceType=snapshot,Tags=[{Key=Blog,Value=Test},{Key=AWS,Value=EC2-snapshot}]'
EBSスナップショットを使用してEC2インスタンスを復元する方法
Amazon EC2インスタンスにアタッチされたEBSボリュームのスナップショットを作成しました。これらのスナップショットは、AWSにおけるデータバックアップの一種です。それでは、スナップショットからEC2インスタンスを復元して作成する方法を見ていきましょう。
- AWS内の特定のEBSボリューム
- EC2インスタンス全体
2番目のEBSボリュームの復元
スナップショットから2番目のEBSボリューム(サイズ1GiB)を復元しましょう。このボリュームはファイルの保存に使用されており、オペレーティングシステムはこのボリュームにはインストールされていません。
- EC2管理コンソールのナビゲーションペインで、[ ] に移動します
Elastic Block Store>Snapshots.
""と入力しますブログ検索フィールドに""と入力すると、このブログ記事の作成に使用したEC2インスタンスのEBSボリュームに対して作成されたすべてのスナップショットが表示されます。これが、説明文やタグを追加する価値がある理由の一例です。
- 1 GiBのボリュームのスナップショットを選択し、そのスナップショットから新しいボリュームを作成します。スナップショットを右クリックし、表示されるメニューで
Create Volume.
- 必要なボリュームパラメータを ボリュームを作成する ページ:ボリュームの種類を選択し、ボリュームのサイズ、アベイラビリティゾーン、暗号化オプション、タグ、キー、および値を指定します。
アベイラビリティゾーンは、EC2インスタンスのものと同じである必要があります(eu-central-1c (今回のケースでは)。
この例では、ボリュームサイズは元のバックアップ対象ボリュームのサイズ(1 GiB)と同じです。
タグキーは ブログ そして、その値は 復元された巻1.
- ヒット
Create VolumeEBSスナップショットを使用してEBSボリュームの作成を完了します。
次のメッセージが表示されます:
ボリューム作成リクエストが成功しました
ボリュームIDを保存できます。新しいボリュームIDは vol-09cd000000000b502 私たちの場合。
システムボリュームの復元
EC2インスタンスを復元するには、オペレーティングシステムがインストールされているEBSボリュームを復元する必要があります。この場合、ゲストオペレーティングシステムで使用されているEBSボリュームのスナップショットからイメージを作成し、そのイメージを使用してインスタンスを起動することができます(これが復元されたEC2インスタンスとなります)。
画像の作成
- EC2管理コンソールで、[ ] に移動します
Elastic Block Store>Snapshotsそして、ゲストOSがインストールされているEBSボリュームの必要なスナップショットを選択します。
ゲストOS(Ubuntu Server)で使用されている8 GiBのボリュームの最新のスナップショットを選択します。このEBSボリュームのスナップショットは、EC2インスタンスのマルチボリュームスナップショットを作成した際に作成されたものです。
スナップショットを右クリックし、表示されるメニューから Create Image.
- 開いたウィンドウで、必要な情報を入力し、EBSスナップショットからイメージを作成するためのオプションを選択します。ここでは、以下のパラメータを使用します。
名前: ブログが復旧しました
説明: EBSスナップショットから復元(ブログ)
その他の設定はデフォルトのままにします。
ヒット Create.
- その 画像作成のリクエストを受信しました ダイアログボックスが表示されます。画像のIDをクリックすると、その画像に関する情報を表示できます(ami-08ed800000000872a (当方のケースでは)。画像の作成が完了するまでお待ちください。
画像の表示
画像を作成したら、その画像を右クリックして Launch.
新しいEC2インスタンス作成ウィザードが開きます。インスタンスのオプションを選択する必要があります。バックアップ元のVMで選択されていたものと同じオプションを選択することも可能です。また、より高性能な新しいEC2インスタンスにインスタンスを復元することもできます。
注: 次のページにリダイレクトされます Step 2 ウィザードの(代わりに Step 1. Choose AMI) すでに選択済みですので、 ブログが復旧しました AMI一覧ページからAMIを選択します。
Step 2: Choose an Instance Type. 私たちは選定します t2.micro インスタンスタイプとして。クリック Next ウィザードの各ステップで、続行してください。
Step 3: Configure Instance. 要件に応じて、ネットワーク設定、IAMロール、シャットダウン時の動作など、詳細を設定してください。
Step 4: Add Storage EBSスナップショットを使用してEC2インスタンスを復元する際は、これが重要です。クリック Add New Volume. このページに、ボリュームのオプションを含む新しい行が追加されます。必要なボリュームスナップショットのIDを Snapshot フィールド。
入力します snap-0a91000000000769b, これは、1 GiBのボリュームのスナップショットのIDです。この例では、デフォルトで8 GiBのボリュームサイズが選択されています。元のEBSボリュームの設定に合わせて、ボリュームサイズを1 GiBに設定することも可能です。また、ストレージデバイス、ボリュームタイプ、暗号化、および終了時に削除するオプションも選択できます。
Step 5: Add Tags. タグが検索に役立つものであることを確認してください。タグはすべてのボリュームおよびインスタンスに適用されます。この例では、タグのキーは ブログ そして、その値は 復旧したVM 01.
Step 6: Configure Security Group. EC2インスタンスのネットワークトラフィックを制御するために、パラメータを編集してください。
Step 7: Review Instance Launch. インスタンスの起動詳細を確認し、[実行]をクリックしてください Launch 完了するには、EC2インスタンスにアクセスするためにキーペアを選択するか、新しいキーペアを作成する必要があります。
- その 打ち上げ状況 ページが表示されます。クリックしてください
View instances.
- 復元するインスタンスの名前を入力してください(ブログが復旧しました (当方のケースでは)。復元されたE2インスタンスの状態は 走行中EBSスナップショットから復元された両方のEBSボリュームは、EC2インスタンスにアタッチされています(下のスクリーンショットを参照)。
復元されたファイルの確認
最新のスナップショットを作成する前に作成されたファイルが復元されているか確認してみましょう:
接続されているブロックデバイスを一覧表示します:
lsblk
ユーザーの現在の(ホーム)ディレクトリにあるファイルを一覧表示します:
ls -al
その snapshot01.txt そして snapshot2.txt OSがインストールされているEBSボリュームの1回目および2回目のスナップショットを撮影する前に作成されたファイルが存在します。
2番目のディスク(EBSボリューム)にあるパーティションをマウントします:
sudo mount /dev/xvdb1 /disk2/
パーティション名が変更されました /dev/xvdb1. 必要に応じて編集する必要があるかもしれないことに留意してください /etc/fstab インスタンスを復元した後、自動マウントを行う。
ls -al /disk2/
d2-file01.txt 復元後、2番目のEBSボリュームに保存されたファイルシステム上に存在します。
AWS EC2インスタンスおよびそれにアタッチされているすべてのEBSボリュームは、EBSスナップショットから正常に復元されました。必要なデータはすべて保持されています。
結論
単一のボリュームをバックアップすることも、マルチボリュームスナップショットを使用してすべてのボリュームをバックアップすることも可能です。これは、データ保護や災害復旧において非常に便利なAWSのネイティブ機能です。 ただし、AmazonクラウドにEBSスナップショットを保存する際は、追加のクラウドストレージが使用されるため、追加費用が発生することに注意してください。さらに、EBSスナップショットをバックアップに使用する場合、スナップショット作成システムがスナップショット取得の瞬間に書き込まれているファイルを認識できないなど、その他の制限もあります。その結果、EBSスナップショットを使用して作成されたバックアップは、クラッシュ一貫性(crash-consistent)は保たれますが、アプリケーション一貫性(application-consistent)は保たれません。
NAKIVO Backup & Replication は、以下の作成をサポートするデータ保護ソリューションです アプリケーションを意識したバックアップ およびAmazon EC2インスタンスのレプリカ。また、このソリューションを活用することで、バックアップと復旧のプロセスを大幅に簡素化・自動化できます。EBSボリュームの復旧やEC2インスタンスの作成、作成したEC2インスタンスへのボリュームの手動アタッチといった作業を行うことなく、バックアップからEC2インスタンス全体を迅速に復旧できます。






























