AWS EC2データ保護のためのEC2インスタンスのスナップショットの取得方法

AWSを使用してEC2インスタンス(VM)を実行している場合、Elastic Compute Cloudでデータ損失を防ぐためのいくつかの方法があります。ソフトウェアの障害、マルウェア感染、誤った削除などによる。利用可能なオプションの1つは、EC2インスタンス用のAWS組み込みバックアップ機能であるEBSスナップショットです。このブログ投稿では、EBSボリュームスナップショットを使用してEC2インスタンスのスナップショットを作成する方法を、構成プロセスの詳細な例とともに説明します。

EBSスナップショットとは何ですか?

EBSスナップショットは、Amazon S3に保存されるElastic Block Store(EBS)ボリュームの増分コピーです。これは、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スナップショットを作成する複雑さが含まれます。

EC2インスタンス用のAWSコンソールでスナップショットを作成する方法

AWS管理コンソールは、AWSのコンピューティング、ストレージなどのすべてのリソースを管理するGUI Webインターフェースであり、EBSスナップショットを作成するためのものです。

スナップショットを作成したいEC2インスタンスにアクセスするには:

  1. AWS管理コンソールにログインし、EBSインスタンス、EBSボリューム、EBSスナップショットを作成するのに必要な権限を持っているアカウントを使用します。
  2. サービスをクリックし、Computeセクションで、EC2をクリックして、EC2インスタンス、EBSボリューム、およびその他のEC2機能の管理コンソールを開きます。

EBSスナップショットの作成手順を示すためにEC2インスタンスを準備しました。EBSスナップショットを使用してバックアップおよびリカバリするEC2インスタンスのパラメータは次のとおりです:

名前:blog-temp

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インスタンスをスナップショット取得の準備をするには:

  1. EC2管理コンソールのEC2インスタンスのリストページを開きます。インスタンス名を右クリックし、コンテキストメニューで インスタンスの停止 をクリックします。

  1. EC2インスタンスで使用されているボリュームを見つけます。 ストレージ タブをクリックし、適切なEBSボリュームのボリュームID(vol-0617000000000763c の場合)をクリックします。

スナップショットの取得

EC2インスタンスのスナップショットの作成準備が整いました:

  1. EBSボリュームを選択します(行の左側のチェックボックスをクリック)し、 アクション > スナップショットの作成 をクリックします。

  1. 説明を入力し、暗号化設定を設定し、タグを追加します。次のパラメーターを使用します:
  • 説明:EBSスナップショットブログ01
  • 暗号化されていません

クリックスナップショットの作成

注意:非暗号化のボリュームを使用して非暗号化のスナップショットを作成します。この場合、スナップショットの暗号化設定は手動で設定できます。暗号化されたボリュームのスナップショットを作成すると、スナップショットは自動的に暗号化されます。

  1. 以下のメッセージとスナップショットIDが表示されます:

スナップショットの作成リクエストに成功しました
snap-0778000000000ab40

スナップショットIDをクリックして、スナップショットのオプションとステータスが表示されるページを開きます。

  1. 保留中のスナップショットステータスは、EBSボリュームからデータが現在Amazon S3に転送されていることを意味します。スナップショットの作成が完了するのを待ちます(ステータスが完了に変わります)。時間はスナップショットに保存されたデータのサイズに依存します。

マルチボリュームスナップショットの取り方

複数のEBSボリュームを使用しているEC2インスタンスを見つけることは一般的です。この場合、そのEC2インスタンスに接続されたすべてのEBSボリュームに対してマルチボリュームスナップショットを作成できます。Amazon EC2のバックアップ用です。

このセクションでは、次の内容をカバーします:

EC2インスタンス用に2番目のEBSボリュームを作成する

まず、デモンストレーション目的で使用しているEC2インスタンスに2番目のEBSボリュームを追加します。

  1. EC2管理コンソールのナビゲーションペインで、 Elastic Block Store > ボリューム に移動します。 ボリュームの作成 をクリックします。

  1. 使用可能ゾーン には、リージョンはインスタンスのリージョンと同じである必要があります(私たちの場合は eu-central-1c )。

ボリュームタイプ/サイズを入力し、暗号化オプションを設定し、タグを入力します。タグはボリュームのリストでボリュームを見つけるのに役立ちます。ボリュームサイズを1 GiBに設定し、次のタグを使用します。

  • キー: ブログ

  • 値: 一時ボリューム2

ボリュームの作成をクリックします。

  1. ボリュームのIDを覚えて(またはメモして)ください(私たちの場合は vol-0b4a0000000003d01 )。ボリュームのプロパティを開くには、ボリュームIDをクリックします。

  1. ボリュームをEC2インスタンスにアタッチします。ボリュームを右クリックするか、 アクション をクリックし、開いたメニューで ボリュームのアタッチ をクリックします。

  1. EBSボリュームをアタッチするインスタンスを選択します。EC2インスタンスIDを選択する必要があります。私たちの場合、インスタンスIDは i-0071290000000cb84 です。

アタッチされたボリュームにアクセスするために使用されるゲストオペレーティングシステム内のデバイスを選択できます。私たちの場合、 /dev/sdf が使用されます。

新しいボリュームをEC2インスタンスにアタッチするには、 アタッチ をクリックします。

注意: ディスクデバイスの名前変更に関する便利な情報がノートに表示されます。私たちの場合、/dev/sdf はゲストOS内で/def/xvdfに名前が変更されます。

現在、2つのボリュームがEC2インスタンス(blog-temp)にアタッチされています:

vol-0617000000000763c

vol-0b4a0000000003d01

2番目のEBSボリュームにデータを書き込む

次に、2番目のEBSボリュームにファイルを作成します。このファイルは、EBSスナップショットからボリュームを復元した後にすべてのデータが回復されているかどうかをチェックするために使用されます。そのため、パーティションを作成し、ファイルシステムを作成し、ファイルシステムをEC2インスタンスで実行されているゲストLinux OSにマウントします。

EBSスナップショットの操作に焦点を当てているため、EC2インスタンスで実行されているゲストLinux OSでの操作ではなく、ボリュームとの操作をより良く理解するために使用されるコマンドをリストします。

ストレージの管理

  • Linuxでブロックデバイスの詳細を表示するには、lsblkを使用します。
  • マウントされたディスクのストレージスペースを確認するには、df -hを使用します。
  • マウントされたディスクを確認するには、mountを使用します。

パーティションの作成とマウント

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ボリュームに変更を書き込む

  1. Linuxを実行しているEC2インスタンスに接続された2番目のEBSボリュームのパーティションにファイルを作成する:

echo “EBS snapshot for disk 2” > /disk2/d2-file01.txt

  1. 前のスナップショットが取得された状態からの変更が含まれるように、最初のディスク上で変更を行い、EC2インスタンスによって使用される最初のボリュームの新しいEBSスナップショットを作成する。両方のボリュームには、以前のスナップショットが取得された状態からの変更が含まれている必要があります。

最初のボリュームにsnapshot02.txtファイルを作成して、最初のボリュームの新しいスナップショットに保存された変更をより便利に検出します。

新しいデータを持つ2つのEBSボリュームがEC2インスタンスにアタッチされると、マルチボリュームスナップショットを作成できます。

マルチボリュームスナップショットの作成

  1. EC2インスタンス管理ページのナビゲーションペインで、Elastic Block Storeを選択してスナップショットに移動します。 スナップショットの作成をクリックします。

  1. リソースタイプを選択します:インスタンス
  2. バックアップしたいEC2インスタンスのインスタンスIDを入力してください。

選択したインスタンスにアタッチされているすべてのボリュームが自動的に選択されます。

  1. AWSで必要な場合にEBSスナップショットを見つけるのに役立つ説明を入力してください。 例として、説明はEBSスナップショットブログ02です。
  2. ボリュームからタグをコピーのチェックボックスを選択して、EBSボリュームに割り当てられたタグを使用する場合は、チェックします。
  3. スナップショットの作成をクリックすると、選択したすべてのボリュームのスナップショットが作成されます。

プロセスが成功した場合、次のメッセージが表示されます:

スナップショットの作成リクエストが成功しました

Amazonスナップショットの識別子が2つ表示されます:snap-0f95000000000de71およびsnap0a91000000000769b(この場合)。

これらのID値を保存し、そのうちの1つをクリックしてスナップショットの作成状態を確認できます。 スナップショットの作成を開始した直後、操作の状態は保留中になり、プロセスが終了すると完了に変わります。

A new snapshot for each volume has been created.

AWS CLIを使用してスナップショットを作成する

必要に応じて、コマンドラインインターフェイスを好むか、スナップショットの作成を自動化する場合は、AWS CLIを使用できます。

AWS CLI で EBS スナップショットを作成するコマンドは次のとおりです:

aws ec2 create-snapshot --volume-id vol-0b4a51e1cea333d01 --description "これはブログのテストスナップショットです"

出力は次のようになります:

{

    "Description": "これはブログのテストスナップショットです",

    "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=ブログ,Value=テスト},{Key=AWS,Value=EC2-スナップショット}]'

Amazon EC2 インスタンスから EBS ボリュームのスナップショットを作成しました。これらのスナップショットは AWS のデータバックアップの一形態です。では、スナップショットから EC2 インスタンスを復元して EC2 インスタンスを作成する方法を説明します:

AWS にアタッチされた EBS ボリュームの

  • 特定の EBS ボリューム
  • EC2 インスタンス全体

2番目の EBS ボリュームの復元

スナップショットから2番目のEBSボリューム(サイズは1 GiB)を復元しましょう。このボリュームはファイルを保存するために使用され、オペレーティングシステムはこのボリュームにインストールされていません。

  1. EC2管理コンソールのナビゲーションペインで、Elastic Block Store > Snapshotsに移動します。

ブログ」を検索フィールドに入力して、このブログ投稿のために使用されるEC2インスタンスのEBSボリュームのすべてのスナップショットを表示します。これは、説明やタグを追加する価値がある理由の例です。

  1. 1 GiBボリュームのスナップショットを選択し、そのスナップショットから新しいボリュームを作成します。スナップショットを右クリックし、開いたメニューでCreate Volumeをクリックします。

  1. Create Volumeページで必要なボリュームパラメータを定義します:ボリュームタイプを選択し、ボリュームサイズ、可用性ゾーン、暗号化オプション、タグキー、および値を定義します。

可用性ゾーンは、EC2インスタンスと同じでなければなりません(この例ではeu-central-1c)。

ボリュームサイズは、バックアップされた元のボリュームのサイズと同じです(この例では1 GiB)。

タグキーはブログで、値は復元されたボリューム1です。

  1. Create Volumeをクリックして完了し、EBSスナップショットを使用してEBSボリュームを作成します。

以下のメッセージが表示されます:

Create Volume Request Succeeded

ボリュームIDを保存できます。新しいボリュームIDはこの例ではvol-09cd000000000b502です。

システムボリュームの復元

EC2インスタンスを復元するには、ゲストオペレーティングシステムがインストールされているEBSボリュームを復元する必要があります。この場合、ゲストOSが使用するEBSボリュームのスナップショットからイメージを作成し、このイメージを使用してインスタンスを起動することができます(復元されたEC2インスタンス)。

イメージの作成

  1. EC2管理コンソールで、Elastic Block Store > Snapshotsに移動し、ゲストOSがインストールされているEBSボリュームの必要なスナップショットを選択します。

ゲストOS(Ubuntu Server)が使用する8-GiBボリュームの最新のスナップショットを選択します。このEBSボリュームのスナップショットは、EC2インスタンスのマルチボリュームスナップショットを作成する際に作成されました。

スナップショットを右クリックし、開いたメニューでCreate Imageをクリックします。

  1. 開いたウィンドウで、必要な情報を入力し、EBSスナップショットからイメージを作成するオプションを選択します。以下のパラメータを使用します。

Name: blog-recovered

Description: EBS snapshotから復元(blog)

他の設定はデフォルトのままにします。

Createをクリックします。

  1. Create Image request receivedダイアログボックスが開きます。イメージIDをクリックしてイメージの情報を表示します(この例ではami-08ed800000000872a)。イメージの作成が完了するまで待ちます。

イメージの起動

イメージが作成されたら、イメージを右クリックしてLaunchをクリックします。

新しいEC2インスタンス作成ウィザードが開きます。 インスタンスのオプションを選択する必要があります。 バックアップされた元のVMで選択されたオプションと同じオプションを選択できます。 また、インスタンスを新しいより強力なEC2インスタンスに復元することもできます。

注意:私たちはAMIのリストページからblog-recovered AMIを既に選択したため、ウィザードのステップ2 にリダイレクトされます(ステップ1. AMIを選択ではなく)。

ステップ2: インスタンスタイプを選択します。 インスタンスタイプとしてt2.microを選択します。ウィザードの各ステップで次へをクリックして続行します。

ステップ3: インスタンスの設定。 ネットワーク設定、IAMロール、シャットダウン動作など、要件に応じて詳細を構成します。

ステップ4: ストレージの追加は、EBSスナップショットを使用してEC2インスタンスを復旧する場合に重要です。 新しいボリュームを追加をクリックします。このページにボリュームオプションが追加されます。 スナップショットフィールドに必要なボリュームスナップショットのIDを入力します。

私たちはsnap-0a91000000000769bを入力します。これは1 GiBボリュームのスナップショットのIDです。 ボリュームサイズは8 GiBがデフォルトで選択されています。私たちの例では、元のEBSボリュームに設定されているようにボリュームサイズを1 GiBに設定できます。 ストレージデバイス、ボリュームタイプ、暗号化、終了時に削除するオプションを選択することもできます。

ステップ5:タグを追加します。 検索目的に役立つタグを確認してください。 タグはすべてのボリュームとインスタンスに適用されます。 この例では、タグキーは blog で、値は 回復したVM 01 です。

ステップ6:セキュリティグループを構成します。 EC2インスタンスのネットワークトラフィックを制御するためのパラメーターを編集します。

ステップ7:インスタンス起動を確認します。 インスタンスの起動の詳細を確認し、完了するには起動をクリックします。 EC2インスタンスにアクセスするためにキーペアを選択するか、新しいキーペアを作成する必要があります。

  1. 起動ステータスページが表示されます。 インスタンスを表示をクリックします。

  1. 回復したインスタンスの名前を入力します(ブログ-回復の場合)。回復したE2インスタンスの状態は実行中です。 EBSスナップショットから回復した両方のEBSボリュームがEC2インスタンスにアタッチされています(以下のスクリーンショットを参照)。

復元されたファイルを確認します。

最新のスナップショットを撮る前に作成されたファイルが回復されているかどうかを確認しましょう:

アタッチされたブロックデバイスをリストアップします:

lsblk

ユーザーの現在の(ホーム)ディレクトリのファイルをリストアップします:

ls -al

最初と2番目のスナップショットを撮ったEBSボリューム(OSがインストールされているボリューム)の snapshot01.txtsnapshot2.txtファイルが存在します。

2番目のディスク(EBSボリューム)にあるパーティションをマウントします:

sudo mount /dev/xvdb1 /disk2/

/dev/xvdb1というパーティション名が変更されました。インスタンスを復元した後、自動マウントのために/etc/fstabを編集する必要があります。

ls -al /disk2/

d2-file01.txtは、復元後の2番目のEBSボリュームに保存されているファイルシステムに存在しています。

すべての添付されたEBSボリュームを持つAWS EC2インスタンスが、EBSスナップショットから正常に復元されました。必要なすべてのデータが保持されています。

結論

単一のボリュームをバックアップするか、マルチボリュームスナップショットを使用してすべてのボリュームをバックアップすることができます。これは、データ保護と災害復旧のための非常に便利なAWS固有の機能です。ただし、AmazonクラウドにEBSスナップショットを保存する際には追加のクラウドストレージが使用されるため、追加のコストが発生します。さらに、EBSスナップショットをバックアップに使用する際の他の制限事項もあります。たとえば、スナップショットの作成システムがスナップショットを取る瞬間に書き込まれているファイルを認識していないことなどです。その結果、EBSスナップショットで作成されたバックアップはクラッシュ整合性があり、アプリケーション整合性がありません。

NAKIVO Backup & Replicationは、Amazon EC2インスタンスのアプリケーションに対応したバックアップとレプリカの作成をサポートするデータ保護ソリューションです。また、このソリューションを使用して、バックアップとリカバリプロセスを大幅に簡素化および自動化することもできます。バックアップからすぐにEC2インスタンス全体を回復し、EBSボリュームを回復する必要がなく、EC2インスタンスを作成し、手動でボリュームを作成したEC2インスタンスに添付する必要がありません。

Source:
https://www.nakivo.com/blog/how-to-create-snapshots-of-ec2-instance/