はじめに
EFSでバックアップしたファイルを復元する方法についてまとめました。
前提条件
- EFS作成済み
- EFSにマウント設定したEC2作成済み
作成方法はこちらの記事を参考に
流れ
- バックアップ設定
- EFSを復元
- 注意点:復元にかかる時間
- 注意点:増分バックアップ
- 復元履歴確認
バックアップ設定
EFSは、自動バックアップを有効化にすると、自動でバックアップされます。
バックアップの設定は、AWS Backup
のバックアッププラン
からEFSを選択し、バックアップルール
をクリックすると確認できます。
実際にバックアップされたリソースは、バックアップボールト
から確認できます。
バックアップボールトとは「バックアップを整理するためのコンテナ」であると説明されています。EC2 のバックアップである AMI 、RDS のバックアップであるスナップショットなどをまとめて管理するための器のようなイメージを持つとよいでしょう。
バックアップボールドについての詳細はこちら↓
EFSを復元
バックアップボールト
から復元したいリソースを選択し、復元をクリックしましょう
設定
下記の画像のように設定しました。
特に説明する箇所はありませんが、項目レベルの復元
というのは、例えば、
EC2の/mnt/efs
ディレクトリにマウントされていて、復元したいファイルパスが /mnt/efs/file1
である場合は、「/file1」
と入力します
バックアップを復元
をクリックすると、以下のエラーになります。
アクセスが拒否されました
このアクションを実行するには権限が不十分です。必要な権限についてはアカウント管理者に相談してください。
原因は、EFSバックアップボールトのアクセスポリシー内のDeny backup:StartRestoreJob
があるためです。
復元が拒否されていますね。
AWS Backupのコンソールからバックアップボールト
をクリックし、EFSバックアップボールトをクリックすると、アクセスポリシーがあります。
backup:StartRestoreJob
の箇所を削除しましょう。
削除前
削除後
{
"Version": "2012-10-17",
"Statement": [
{
"Effect": "Deny",
"Principal": {
"AWS": "*"
},
"Action": [
"backup:DeleteBackupVault",
"backup:DeleteBackupVaultAccessPolicy",
"backup:DeleteRecoveryPoint",
"backup:StartCopyJob",
"backup:UpdateRecoveryPointLifecycle"
],
"Resource": "*"
}
]
}
再度、バックアップを復元
をクリックすると、復元が実行されました。
新しくEFSが作成され、aws-backup-restore_
というディレクトリ内に、ファイルやディレクトリが復元されているかと思います。
また、aws-backup-lost+found
ディレクトリが存在しています。
適切なディレクトリに復元できないデータフラグメントは、aws-backup-lost+found ディレクトリに配置されます。
バックアップの実行中にファイルシステムに変更が加えられると、フラグメントがこのディレクトリに移動される場合があります。
注意点:復元にかかる時間
ジョブを復元のステータスが完了しても数GBがある場合、数時間かかる
ことがあります。復元が完了したことは、アナウンスされませんので注意してください!
また、完全な復元を選択
した場合、EFSが作成されていると思いますが、同様に復元が完了していません。
EFSのファイルシステム一覧を確認すると、合計サイズが数KBしかありませんので、数時間待ちましょう。
ちなみに、2021年11月の時点では、2GBのEFSを復元するのに1時間かかりました
。
注意点:増分バックアップ
AWS Backup は EFS ファイルシステムの増分バックアップを実行します。
最初のバックアップ時
には、ファイルシステム全体のコピーが作成されます。
そのファイルシステムのその後のバックアップ
では、変更、追加、削除されたファイルとディレクトリのみがコピーされます。
そのため、バックアップボールト
の復旧ポイントの詳細のバイト数が少なく感じるかもしれませんが、復元時は、もっとバイト数が大きくなると思って間違いありません。
復元履歴確認
AWS Backup
のジョブ
のジョブ履歴
から復元履歴が確認できます。
参考