データロストに備えてQNAPのNASのデータをクラウドストレージ上に定期バックアップすることにした


動機

現在自宅で運用しているNASには、写真やドキュメントなどの日常生活で取り出して使うデータおよび自宅鯖のアプリケーションのDBのデータ等が保存されている。

これらのデータを保全するために、日次のスナップショットRAID構成で耐障害性を高めているが、これらはあくまでバックアップではないので、オペレーションミスや不慮の事故でデータロストする不安が常につきまとっていた。

そのため、今回AWSのS3上にデータを定期バックアップすることで、その不安を払拭しようと思った次第である。

今回は写真やドキュメントなどの日常生活で取り出して使うデータ(DataVol1)のみをバックアップ対象とすることにした

因みにQNAPのNASにはクラウドサービスを含む外部ストレージへのバックアップおよび復元をサポートする機能が搭載されていて、今回利用するS3もそのサポート範囲だ。

Hybrid Backup Sync | ライセンスフリー・ハイブリッドクラウドバックアップ | QNAP

ライセンスフリーおよびマルチサービスのファイルバックアップ、リカバリおよび同期ソリューションによって、ビジネスの継続を確実にします。

www.qnap.com favicon image www.qnap.com

見積もり

リージョン

まず、S3を利用するにあたって、コストを見積もることにした。

料金 - Amazon S3 |AWS

Amazon S3 の料金は、実際に使用した分だけです。無料利用枠を使用することで、無料で開始いただけます。リージョンごとのストレージ料金やストレージマネジメント料金、リクエスト、データ転送、レプリケーション等の料金についてご覧いただけます。

aws.amazon.com favicon image aws.amazon.com

AWSのサービスの料金はリージョン毎に違いがあり、例えばS3(ストレージクラス:標準)を利用する際の料金の違い(2023/07/16現在)は以下の通り。

東京バージニア北部
~50TB/月0.025USD/GB0.023USD/GB
~500TB/月0.024USD/GB0.022USD/GB
500TB以上/月0.023USD/GB0.021USD/GB

ご覧の通り東京リージョンは米国リージョンに比べて高い価格設定になっている。

今回のデータバックアップ用途であればアクセス頻度も高くなく、レイテンシの大小はさほど問題にならないので、一番価格の低いリージョンを選ぶことにした。

この時点で候補は、us-east-1(バージニア北部)、us-west-2(オレゴン)、us-east-2(オハイオ)の3つ。 正直どれでも良いが、ネットで調べたところpingの応答が比較的早いようだったので、us-east-1(バージニア北部)を利用することにした。

ストレージクラス

S3はデータへのアクセス頻度やデータの重要性に応じて複数のストレージクラスが選べるようになっている。

それぞれの特徴については、以下にわかりやすくまとまっているので必要に応じて参照されたい。

6つのS3ストレージクラスの選択に迷った時みるチャートをつくってみた | DevelopersIO

ご機嫌いかがでしょうか、豊崎です。 S3のストレージクラスは現在6つあります。どういったユースケースでどのS3のストレージクラスを選択したら良いのか、整理したかったので、チャートを作ってみました。 それではまずはS3の種 …

dev.classmethod.jp favicon image dev.classmethod.jp

利用することにしたのは、記事冒頭にもあるとおりGlacier Deep Archiveというストレージクラスで、これは以下の特徴を持つ。(数値は2023/07/16現在の値)

  • 主にアーカイブ目的
  • データ取り出しまでの許容時間が12~48時間以内である1
  • 毎月のデータ保存容量に対する月額料金は全ストレージクラスの中で最安(0.00099USD/GB)
  • 最低で180日利用しないと追加で料金を支払う必要がある
  • S3 Glacier APIへのリクエストに対して課金され、例えばPUT、COPY、POST、LISTリクエストの場合0.05USD(/1000requests)2

仮に4TBのデータをアーカイブしているとしたら、月額料金は$$0.00099(\mathrm{USD}) × 4 × 1024(\mathrm{GB}) = 4.05504\mathrm{USD}$$で現在のレートで550円ちょっと。

これに差分のバックアップリクエスト料金を含めると、1000リクエストあたり0.05USDなので毎月10000ファイルほど追加したとしても月額50円くらい。(実際そんなに追加しないので、もっと低いはず)

初月のみ大量のファイルをアップロードする必要があるので、そのリクエスト料金が結構かさむくらいか。 実際約1,000,000ファイルアップロード予定だったので、$$1000000(\mathrm{reqs}) × 0.05(\mathrm{USD}) ÷ 1000 = 50.0(\mathrm{USD}) \fallingdotseq 7000円$$くらいはかかる想定をしておいた。

手順

大まかな手順は以下の通り。

  1. QNAP NASでバックアップに必要なアプリ「HBS 3 Hybrid Backup Sync」をAppCenterからインストールしておく
  2. AWS側でS3FullAccessポリシーを許可したIAMユーザを作成し、シークレットキーを作成しておく
  3. HBS 3 Hybrid Backup Sync上から、「ストレージ領域」→「作成」→「Amazon S3 & S3互換」3を選択し、作成しておいたアクセスキーと秘密キーを入力
  4. 「バックアップ&復元」から「作成」→「新しいバックアップジョブ」を選択
  5. バックアップしたいソースフォルダを選択し、バックアップのスケジュールやその他ルールを選んでいく

オプションでジョブ作成後にその場でバックアップをすることも可能。前回バックアップから差分のあるファイルのみバックアップしないと、クラウド破産するので注意。

おわりに

実際の請求は7000円強になった。おおよそ見積もり通りで安心した。(一瞬左側の予測コストを見てビビった)

イニシャルコストは高くつくが、今後毎月ワンコインでデータロストに怯えなくて済むと思うと、安い買い物だと思う。


  1. アーカイブの取り出しオプション - AWS ↩︎

  2. Amazon S3の料金 - AWS ↩︎

  3. ここでAmazon Glacierは選択しない。分かりにくいがAmazon GlacierとS3 Glacierは別物。 ↩︎