AWS Backup でお手軽に EFS バックアップを取得する

これまで EFS としては標準機能でのバックアップというものはなく、EFS-to-EFS のような仕組みが必要でした。ただバックアップを取得したいだけなのに手間やコストが掛かるという点で、「ちょっと使いにくいなぁ・・・」という印象がありましたが、先日リリースされた AWS Backup によって、超簡単に EFS のバックアップ/リストアが出来るようになりましたので紹介いたします。

AWS Backup についてはコチラの記事も参考にどうぞ。

【新サービス】 AWSの各種サービスのバックアップを管理するAWS Backupが登場!

AWS Backup は、まだ東京リージョンで使えませんので、ご注意を。来る日のために予習ということで読んでいただければと思います。

やってみる

検証環境

  • オレゴンリージョン(us-west-2)
  • EFS
    • 汎用パフォーマンスモードで作成しました
  • EC2
    • Amazon Linux 2(Amazon Linux 2 AMI (HVM), SSD Volume Type - ami-032509850cf9ee54e)
    • t3.nano
    • amazon-efs-utils で /efs に mount しました

EFS にテストファイルの配置

EFS の作成および、mount は完了している前提からはじめます。EFS のファイルシステムである /efs に以下のようなテストファイルを配置しました。

$ ls -ltr
-rw-r--r-- 1 root root 10485760  1月 17 15:21 testfile1
-rw-r--r-- 1 root root 10485760  1月 17 15:21 testfile2

AWS Backup

今回は Backup plans を作成せず、on-demand backup で検証したいと思いますので、AWS Backup の管理ページから Protected resources を開き、Create on-demand backupをクリックします。

Create on-demand backup 画面が開きますので、各パラメータを指定します。

  • Resource
    • Resource type は EFS を選択
    • File system ID は該当の EFS ID を選択
  • Backup window
    • 検証のためすぐに取得したかったので Create backup now を選択
  • Lifecycle
    • いずれも Never(デフォルト) のまま
    • cold storage を指定される場合、一度、cold storage に移行されたバックアップは最短で 90日 の保存期間があります。うっかり cold storage に移行されてしまってから削除しても90日までの残り日数は課金されますので、ご利用は計画的に。

Backup vault は default を使わずに Create new Backup vault をクリックし作成。ひとまず、Backup vault name のみを指定し、その他はデフォルト値のまま Create Backup vault をクリック。

先の画面にもどり、残りのパラメータを指定し、Create on-demand backup をクリックします。

  • Backup vault
    • 先ほど作成したものを指定
  • IAM role
    • 検証のため Default role のまま

Create backup now で作成していますので、直ちにバックアップが実行されます。

しばらく待ってステータスが Completed になれば EFS のバックアップは完了です。簡単過ぎる!!

リストアしてみる

バックアップが取得できたので、次にリストアを試してみます。/efs はmount 状態のままやってみました。リストアを実行するため、Backup vaults をクリック、さきほど作成した test-vault を開きます。リストア対象のバックアップを選択し、Restore をクリックします。

Restore backup 画面が開きますので、各パラメータを指定し、Restore backup をクリックし実行します。

  • Settings
    • リストアタイプは Restore to directory in source file system を指定し、mount したままの EFS にリストアするように指定
    • Restore to a new file system の場合は、新規に EFS が作成されます
  • Restore role
    • 検証のため Default role のまま

対象サイズとしては数十 MB の小さなものでしたが、10分ほど待って Completed になりました。EBS のようなスナップショットではなく、何らかのバックアップ用のリソースを準備しているのかもしれませんね。

リストアが完了したので mount したままの /efs を確認します。

$ ls -ltr /efs
-rw-r--r-- 1 root root 10485760  1月 17 15:21 testfile1
-rw-r--r-- 1 root root 10485760  1月 17 15:21 testfile2
drwxr-xr-x 3 root root 6144  1月 17 16:18 aws-backup-restore_2019-01-17T16-18-24-972Z

$ ls -ltr /efs/aws-backup-restore_2019-01-17T16-18-24-972Z/
-rw-r--r-- 1 root root 10485760  1月 17 15:21 testfile1
-rw-r--r-- 1 root root 10485760  1月 17 15:21 testfile2
drw--w---- 2 root root    38912  1月 17 16:18 aws-backup-lost+found_2019-01-17T16-18-09-774Z

ファイルシステムの中身がごっそり置き換わるのではなく、aws-backup-restore_<TimeStamp> というディレクトリが作成されています。その配下にファイルがリストアされる動作であることが確認できました。aws-backup-lost+found_<TimeStamp>には、リストアが完了しなかったものが含まれるようですので、リストア後は確認しておいたほうが良さそうですね。

なお、Restore to a new file system を指定して、新規 EFS を作成しても、aws-backup-restore_<TimeStamp> という形でリストアされる形式は同じでした。

クレジット消費

公式ガイドによればAWS Backup を使ったバックアップでは、EFS のバーストクレジットを消費せず、また汎用パフォーマンスモードの制限である 7000ファイル/秒 の制限にもカウントされない、との記載があります。

Using AWS Backup doesn't consume accumulated burst credits, and it doesn't count against the General Purpose mode limit of 7,000 file system operations per second.

Cloudwatch で BurstCreditBalance のメトリクスを確認すると、確かにテストファイル配置時にクレジットを消費して以降、バックアップおよびリストアの時間帯ではバーストクレジットが減ることはありませんでした。

EFS-to-EFS バックアップ方式の場合、行っていることは通常のファイルコピーと同じであるため、クレジット消費を考慮する必要がありましたが、AWS Backup なら心配無用のようです。

さいごに

これまで EFS-to-EFS によるバックアップ方式では、EFS のコストが二重に掛かるし、バーストクレジットは消費するし、ちょっと使いたいだけにしては手間だし、、などなど、利用するにはやや辛みがあったかと思います。今回のフルマネージドな EFS バックアップ機能のリリースによって、たくさんの人が幸せになれそうな予感がしますね!また、EFS にバックアップ機能がないために、EFS の採用を見送った方も、これを機に EFS を再検討してみてはいかがでしょうか!

あとは東京リージョンに来るのを待つだけですw

以上!大阪オフィスの丸毛(@marumo1981)でした!