InfraAcademy

InfraAcademy Blog

【AWS】EC2のバックアップと復旧の方法は?EBSスナップショットについて解説します

| #aws #ec2
Linuxをブラウザで試してみる

Linux・ネットワーク・AWSを、環境構築なしで実践学習できます

こんにちは、フルスタックエンジニアのryuです。

今回の記事では、EC2のバックアップと復旧方法について解説します。

EC2でWebサーバーやアプリケーションを運用する場合、障害や操作ミスに備えてバックアップを用意しておくことが大切です。

AWSでは、EC2に接続しているEBSボリュームのバックアップとしてEBSスナップショットを利用できます。

ただし、EBSスナップショットとAMIは役割が違います。

元の記事では「EBSスナップショットを作成 → AMIを作成 → EC2を復旧」という流れだけを紹介していましたが、実際にはデータを戻したいのか、EC2そのものを作り直したいのかによって使い分けます。

この記事では、EBSスナップショットの仕組みから作成方法、復旧方法、AMIとの違い、自動バックアップまで初心者向けに解説します。

EC2のバックアップと復旧の方法とは?

EC2のバックアップを考えるとき、まず理解しておきたいのがEC2とEBSの関係です。

EC2は仮想サーバーですが、OSやファイルなどのデータは主にEBSボリュームへ保存されています。

EC2インスタンス
     │
     └── EBSボリューム
           ├── OS
           ├── 設定ファイル
           └── アプリケーションデータ

そのため、EBSの状態をバックアップする方法としてEBSスナップショットを利用します。

AWS公式でも、EBSスナップショットはEC2のEBSボリュームをバックアップするための重要な仕組みとして案内されています。

EBSスナップショットとは?

EBSスナップショットは、EBSボリュームの特定時点の状態を保存するバックアップです。

たとえば、Webサーバーの設定変更前にスナップショットを取得しておけば、設定を壊してしまったときに過去の状態から新しいEBSボリュームを作成できます。

EBSボリューム
     ↓
スナップショット
     ↓
新しいEBSボリューム

スナップショットは最初の取得時には対象データを保存し、その後は前回から変更されたブロックを保存する増分方式で管理されます。

EBSスナップショットとAMIの違い

EBSスナップショットとAMIは似ていますが、目的が異なります。

項目 EBSスナップショット AMI
主な用途 EBSボリュームのバックアップ EC2を起動するためのイメージ
復旧対象 ディスクのデータ EC2の構成・OSなど
復旧方法 新しいEBSボリュームを作る 新しいEC2を起動する
関係 AMI作成時にも利用される EBSスナップショットを含む場合がある

たとえば、データ用EBSだけ壊れた場合は、そのボリュームのスナップショットから復旧できます。

一方、EC2そのものを同じ構成で作り直したい場合は、正常な状態のEC2からAMIを作成しておく方法が分かりやすいです。

【関連記事】AMIについては、EC2のAMIとは?AMIを利用してインスタンスを作成する方法で詳しく解説しています。

Amazon EBSスナップショットを作成する

では、EBSスナップショットを作成してみましょう。

EC2のコンソール画面から「Elastic Block Store」の中の「スナップショット」をクリックします。

EC2のバックアップ

スナップショットの作成」をクリックします。

EC2バックアップの作成

スナップショットの設定

スナップショット作成画面では、バックアップ対象となるEBSボリュームを選択します。

バックアップの設定

どのEBSボリュームがEC2に接続されているか分からない場合は、EC2インスタンスの「ストレージ」からボリュームIDを確認します。

たとえば、

vol-0123456789abcdef0

のようなIDです。

対象を間違えないように、EC2やEBSへNameタグを付けておくと管理しやすくなります。

設定できたら「スナップショットの作成」をクリックします。

作成直後はpendingになり、完了するとcompletedになります。

これでEBSスナップショットの作成は完了です。

スナップショット取得時のデータ整合性に注意する

スナップショットは実行中のEBSボリュームからでも作成できます。

ただし、アプリケーションが大量にデータを書き込んでいる途中で取得すると、アプリケーション側から見たデータの整合性を考える必要があります。

たとえばデータベースをEC2上で動かしている場合、

DBが書き込み中
↓
EBSスナップショット取得
↓
復旧時にアプリケーション側の整合性確認が必要

というケースがあります。

重要なシステムでは、アプリケーションを停止したり、ファイルシステムやデータベースのI/Oを適切にフラッシュしたりしてから取得する設計も検討します。

Amazon Data Lifecycle Managerでは、Systems Managerと連携して事前・事後スクリプトを利用し、アプリケーション整合性を考慮したスナップショットを自動化する方法もあります。

単にスナップショットを作ればすべてのアプリケーションが完全に復旧できる、とは考えないようにしましょう。

バックアップからEBSボリュームを復旧する

EBSスナップショットからデータを復旧する基本的な方法は、スナップショットから新しいEBSボリュームを作成することです。

作成したスナップショットを選択し、アクションからボリュームを作成します。

復旧の流れは次の通りです。

EBSスナップショット
     ↓
新しいEBSボリュームを作成
     ↓
EC2へアタッチ
     ↓
マウントしてデータを確認

ここで注意したいのがAvailability Zoneです。

EBSボリュームをEC2へアタッチするには、EC2とEBSが同じAvailability Zoneに存在する必要があります。

たとえばEC2が、

ap-northeast-1a

にあるなら、復旧用EBSも同じAvailability Zoneに作成します。

作成後、EC2へアタッチしてマウントすれば、必要なファイルだけ取り出すこともできます。

EC2全体を復旧したい場合はAMIを利用する

EC2そのものを作り直したい場合は、AMIを用意しておく方法があります。

元記事では、EBSスナップショットを選択してAMIを作成する流れを紹介していました。

作成したスナップショットにチェックを付けて、「アクション」をクリックします。

バックアップの復旧

アクションの中から「イメージの作成」をクリックします。

イメージの作成

イメージに名前を付けて作成します。

イメージの設定

ルートボリュームのスナップショットからAMIを作成することはできます。

ただ、通常の運用では正常に動いているEC2インスタンスからAMIを直接作成する方法も分かりやすいです。

EC2コンソールから、

インスタンス
→ アクション
→ イメージとテンプレート
→ イメージを作成

と進むことで、EBS-backed AMIを作成できます。

AWSのデフォルト設定では、AMI作成時にデータの整合性を保つためインスタンスを再起動してスナップショットを取得します。

AMIからEC2を復旧する

作成したAMIは、EC2コンソールのAMI一覧から確認できます。

AMIの設定

AMIを選択して「AMIからインスタンスを起動」を実行すると、新しいEC2を作成できます。

正常なEC2
   ↓
  AMI
   ↓
新しいEC2

この方法なら、OSやインストールしたソフトウェアなどを含めた構成を再利用しやすくなります。

ただし、固定されたElastic IP、DNS、IAMロール、セキュリティグループなど、EC2外部の設定まで自動的に元通りになるわけではありません。

障害復旧では、EC2だけではなく周辺リソースも含めて手順を考えておく必要があります。

バックアップは自動化する

本番環境で毎日手作業でスナップショットを作成するのは現実的ではありません。

EBSスナップショットを定期取得する場合は、Amazon Data Lifecycle Managerを利用できます。

Data Lifecycle Managerでは、EBSスナップショットやEBS-backed AMIの作成・保持・削除を自動化できます。

たとえば、

毎日 2:00 にスナップショット作成
↓
7世代保持
↓
古いスナップショットを自動削除

といったポリシーを設定できます。

バックアップは取得するだけではなく、何日分残すのかも重要です。

古いスナップショットを無制限に残すとストレージコストが増えるため、必要な保持期間を決めておきましょう。

スナップショットは別リージョンへコピーできる

障害対策をさらに考える場合は、スナップショットを別リージョンへコピーできます。

たとえば東京リージョンで作成したスナップショットを大阪リージョンなどへコピーしておけば、リージョン障害を想定したバックアップとして利用できます。

東京リージョン
EBSスナップショット
        ↓ コピー
大阪リージョン
EBSスナップショット

ただし、別リージョンへのコピーや保存にも料金が発生するため、必要性とコストを考えて設計します。

本番システムでは、RPOやRTOなど復旧要件に合わせてバックアップ方式を決めることが重要です。

バックアップを取るだけでは不十分

バックアップで意外と忘れやすいのが、本当に復旧できるか確認することです。

スナップショットを毎日取っていても、復旧手順を一度も試していなければ、障害時に初めて操作することになります。

学習環境でも一度、

1. EBSスナップショットを作成
2. スナップショットから新しいEBSを作成
3. EC2へアタッチ
4. ファイルを確認

まで試してみるのがおすすめです。

AMIについても、作成したAMIからテスト用EC2を起動し、SSH接続やアプリケーションの起動まで確認すると理解が深まります。

バックアップは作成できたかではなく、復旧できたかまで確認して初めて意味があります。

EC2のバックアップと復旧の方法まとめ

今回の記事では、EC2のバックアップと復旧方法について解説しました。

ポイントを整理すると次の通りです。

やりたいこと 主な方法
EBSのデータをバックアップ EBSスナップショット
EBSのデータを復旧 スナップショットから新しいEBSを作成
EC2を同じ構成で作り直す AMI
定期バックアップ Data Lifecycle Manager
災害対策 別リージョンへのコピーなど

元記事では「スナップショット → AMI → EC2」という1つの手順だけを紹介していましたが、実際には目的に合わせて使い分けます。

EBSスナップショットはディスクのバックアップ、AMIはEC2を起動するためのイメージと覚えると分かりやすいです。

また、バックアップは作成するだけではなく、定期取得、保持期間、料金、復旧テストまで考えることが大切です。

InfraAcademyでは、AWSやLinuxなどインフラの基礎を実際に操作するイメージで学習できます。

AWSを基礎から学びたい方は、AWS講座をご覧ください。

EC2へ接続した後のLinux操作から学びたい方は、Linux入門講座も用意しています。

Next Action

記事で読んだ内容を、講座で実装してみましょう

InfraAcademyでは、ブラウザ上でLinuxやネットワークの実践環境を使いながら学習できます。無料で始められる講座から、学習の流れを試せます。

この記事を書いた人

ryu

InfraAcademy運営 / エンジニア

エンジニア歴10年。Linux、ネットワーク、クラウドを中心に、実務で役立つインフラ技術を初心者にもわかりやすく解説しています。

X: @ryu63614894

Related

関連記事

ブログ一覧へ

Roadmap

まずはこの4講座から

ログインすれば無料で始められる講座です。気になったテーマから手を動かして学べます。

講座一覧を見る