EC2インスタンスのバックアップ方法

Amazon EC2はAmazon.comが提供する「Amazon Web Services(AWS」の一つです。EC2インスタンスは仮想化されたWebサーバーのコンピュータリソースが小分けされたものです。ここでは、EC2インスタンスのバックアップ方法について解説していきます。

01: AMIとSnapshot

EC2インスタンスのバックアップ方法には主にAMIとSnapshotの2つが存在します。

AMI(Amazon Machine Image)

AMIはEC2インスタンスの元になるテンプレートです。AMIから即座にインスタンスを立ち上げられるため、例えばサーバーが突然、ダウンしたときにすぐにインスタンスを復旧させられます。テンプレートは以下の情報を含んでいます。

  • インスタンスのルートボリュームのテンプレート(オペレーティングシステム、アプリケーションサーバー、アプリケーションなど)
  • 起動許可(AMIを使用してインスタンスを起動する権限を特定のAWSアカウントに与える。)
  • インスタンス起動時にアタッチするボリュームを指定するブロックデバイスをマッチングする。

Snapshot

SnapshotはHDDのイメージファイルを指しており、データだけでなく、基本ソフト(OS)を丸ごと複製できる。ある瞬間の複製バックアップが可能で、プログラムの更新情報やテスト環境を一時的に作るなどに使用できる。また、Snapshotに管理情報を加えたものがAMIになっている。 AMIは即座にインスタンスを立ち上げられるのに対して、SnapshotはHDDイメージファイルのためにすぐにインスタンスを復旧させられない。SnapshotからAMIを作れるため、このAMIからインスタンスを立ち上げる必要がある。

Windows、有償Linuxなどのライセンスが必要となる基本ソフト(OS)ではSnapshotから作ったAMIから起動できないとの情報もあるため、バックアップ方法としてAMIを選択する。

Snapshotの容量について

Snapshotは圧縮処理が施されるため、実際のディスクサイズより少なくなります。また2回目以降は差分のみの取得となるため、さらに容量は小さくなります。下記は圧縮処理を考慮していない例となっており、Snapshotの総容量は45GBです。

No. 内容 ディスクサイズ Snapshotの容量
1 ECインスタンスの容量が100GBの内40GBを使用している。 40GB 40GB
2 2GBのファイルを更新した。 40GB 2GB
3 No.2と関係ない3GBのファイルを更新した。 43GB 3GB

Snapshotの削除について

No.2のSnapshotを削除してしまうとNo.3の復元ができないと思うかもしれない。しかしながらAWSではSnapshotを削除しても裏で復元に必要なデータを保持する仕組みとなっているため、No.3の復元が行える。下記はNo.2のSnapshotを削除した例となっており、Snapshotの総容量は40GBです。

No. 内容 裏で保持されているデータ容量
1 No.2で更新された2GB、No.3で更新された3GBのファイルは不要になる。 35GB(40GB-2GB-3GB)
2 No.3を復元するために残る。 2GB
3 No.2と関係ない3GBのファイルを更新した。 3GB

02: AMIをバックアップ

「インスタンス」から、バックアップ対象のインスタンスを選択し、アクションの「インスタンスの状態」→「停止」を選択することで、AMIのバックアップを開始する前にインスタンスを停止させる。 「インスタンス」から、バックアップ対象のインスタンスを選択し、アクションの「イメージ」→「イメージの作成」を選択する。 「イメージの作成」ダイアログのイメージ名に「ami-backup-yyyymmddhhmm」、イメージの説明に「backup」、そして再起動しないにチェックを付けて、「イメージの作成」を押下する。 イメージの作成中は「AMI」、「スナップショット」の画面にスピナーが表示される。自分の場合は10分程度で作成される。 Snapshotに作成したAMIとSnapshotの関連付けが分かるようにタグを付ける。「スナップショット」から作成したSnapshotを選択し、「タグの追加/編集」を押下する。 「タグの追加/編集」ダイアログの「タグの作成」を押下する。 キーに「AMI」、値に「ami-backup-yyyymmddhhmm」を入力し、「保存」ボタンを押下する。

03: Snapshotを使ってファイルのレストア

Snapshotを使ってファイルのレストアを行います。     03-A:ボリュームのアタッチ     03-B:マウント

03-A:ボリュームのアタッチ

「スナップショット」からレストア対象のSnapshotを選択し、アクションの「ボリューム作成」を選択する。 表示された「ボリュームの作成」ダイアログでは何も変更しないで、「作成」ボタンを押下する。 ボリュームが正常に作成されれば、下記のダイアログが表示される。 「ボリューム」から作成したボリュームを選択し、アクションの「アタッチ」を選択する。 表示された「ボリュームのアタッチ」ダイアログではアタッチするインスタンスを選択し、「アタッチ」ボタンを押下する。

「インスタンス」のブロックデバイスにアタッチしたボリュームが追加されている。ここでは/dev/sdfとして追加されている。

03-B:マウント

SSH接続を使ってサーバーへログインする。 「lsblk」コマンドでアタッチしたボリュームを確認する。
「02-A」で確認したボリューム名と異なります。ここではxvdf1と表示されている。
「mount」コマンドでアタッチしたボリュームをマウントする。 マウントした内容を確認する。