NASとバックアップ

2024/02/05 2024/02/05

ここ最近の我が家のNASは5900HX MiniPCのProxmox VM上でSamba/NFSを稼働させて運用していました。

以前はHDD 500GB RAID 1運用でしたが、VM化に合わせSSD 1TBを別のSSD 1TBに日次バックアップに変更して運用していた所、1年半経過したところでバックアップが失敗するように。
調べたら容量不足で、根本原因は差分バックアップ & 履歴数の溜まり過ぎでした…

単に履歴数の調整するかーと一度は思ったものの、

  • また写真を撮り始めて容量を食いそうなのでそもそも実ストレージ側も1TBじゃ足りないかも
  • 興味としてSSDでストライピング型のRAID組んでみたい
  • RAIDで組むんだったらBCP対策ついでにバックアップ先をクラウドにしよう

と頭に色々と浮かんでくるものがwww

で、色々調査・検討の上、以下を目指すため1台作ることにしましたw

  • ProxmoxさんはZFSに対応しているので、RAIDZ(RAIDZ1)でストレージを組む
  • RAIDZの最低構成ドライブ数が3台なので、容量も考えて4台構成可能なケース・マザーが必要
  • ZFSの圧縮&重複排除機能(dedup)を使って、より多くファイル保存できるようにする
  • dedupを使うと1TBあたりメモリを1.25~5GB食うらしいので、メモリは多めに
  • クラウドバックアップ先はAWS S3 Glacier Deep Archiveで国外保管

で、作ったスペックはこんな感じ。

CPURyzen 5 5600G(6C12T 3.9GHz/4.4GHz)
メモリDDR4-2666 16GB x 2(余り物)
NVMe SSDOS用M.2 SSD(WD Blue 512GB)(余り物)
SATA SSD保管用 Sandisk Ultra 3D SSD 2TB x 4
マザーASRock A520M-ITX/ac
ケースSILVERSTONE ML05B
電源300W(SILVERSTONE SST-ST30SF V2)

miniITXマザー/ケースで2.5inchが4本入ってできるだけコンパクトなケースを探したらこれになりました。
本当はホームシアター用PC(HTPC)向けのケースなので、リビングに置いても違和感ないデザインにはなっている模様です。
リビングなんかには置かないし、縦置きするしで全く無視しますがw

もう1万円台で6コアのCPUが買えるご時世なんですねぇ。
NAS的にはオーバースペック感はありますがProxmoxを稼働させるので、なにかちょろっとコンテナ動かせるかな、あわよくばVMで内蔵GPUをパススルーしたHackintoshできないかなとか思ったのでこれにしました。

ケースが小さいのにSSD4発入れてしまってるのでギッチギチです。なるだけ風通り良くなるようにもう少しケーブルはまとめておきました。

これでRAIDZで理論上6TBのNASが出来上がる算段でしたが、圧縮機能を有効にしたおかげか

# zpool list zpool1
NAME     SIZE  ALLOC   FREE  CKPOINT  EXPANDSZ   FRAG    CAP  DEDUP    HEALTH  ALTROOT
zpool1  7.27T   950G  6.34T        -         -     0%    12%  1.03x    ONLINE  -

と、最大サイズが7.27Tになりました。

そもそもRAID Z1はZFSで作るRAID5を指すようです。そんな名前のRAID構成が存在していたことすらを今回初めて知ったくらいでしたw

RAID5は停電に弱い(ライトホール問題)というのは知ってたのですが、ZFSはコピーオンライトのファイルシステムで停電等でもデータ消失しないため、これを組み合わたRAIDZはライトホール問題が起きないようです。
それを知ってしまったので個人的に使ってみたくなり、今回採用しました。

次にこのデカいサイズをどうバックアップ取っていくかになります。
BCP対策ついでにクラウドストレージにバックアップを取っていきたいなーとは思っていたのですが、いかんせんTBクラスだとお金がかかります。

最初候補にしたのはHDD故障率レポートで有名はBackblazeです。
$99/年で容量無制限。素晴らしい…と思ったのですが30日以上オフラインが続くとバックアップが消えるというエグい仕様があります…
1ヶ月も止まることはないだろうとは思いつつもズボラなワタシ的にリスクを完全排除できる保証が無いので諦めました。

そして今回の保管場所として決めた、AWS S3 Glacier Deep Archiveです。
S3かぁ、以外とお高いよねと思ってたのですが、Deep Archiveはびっくり価格。
一番安いリージョンだと$0.00099/GB/月なので、1TBなら$0.99/月です。
7TB保管したとしても$6.93/月なので$83.16 /年 = 150円/ドル換算で年間12,500円くらいで済む形となり現実的。

あとはAWS CLIでsyncコマンド一発で同期を取りに行けるのが楽ちんな所に惹かれました。
以下のようなコマンドでバックアップしてくれます。

aws s3 sync バックアップ元フォルダ s3://バックアップ先バケット名 --delete --storage-class DEEP_ARCHIVE --exact-timestamps 

取り出す時にお金がかかったり、中身どうかな~位の軽い気持ちでAWSコンソール上のS3管理画面から一覧見てしまうだけでもお金がかかりますが、基本置きっぱと考えておけばこれで問題無い形です。

1点だけ残念な点はsyncでS3上置かれるファイルのタイムスタンプはバックアップ元のタイムスタンプではなく、置いた日時となります。
syncはあくまでもS3上のタイムスタンプよりバックアップ元が更に新しいタイムスタンプのファイルになった時に対象とするだけになります。
復元したときに何時頃のファイルだったかが分からなくなるというデメリットがあります。
ここはしょうがないで許容することにし、別途バックアップ前に、

ls -l -R --time-style=+"%Y/%m/%d %H:%M:%S" > hoge.txt

みたいな感じでバックアップ先のファイルリスト(タイムスタンプ付き)をファイルに出力し、これもバックアップ対象にすることで逃げ道を作っておくことにしました。
(SSDなのもあって700MB 25万ファイルのリストで10秒かからない位でした)

取り出すときは待たされる&お金取られるという感じにはなりますが基本取り出すことは無いので取り出す時になったら考えるようにしますw

また、我が家は上りが遅い(10MB/s) & 30GB/日制限があるJCOMなので、今は3時間/日だけsyncを行うような形で稼働させてちょっとずつバックアップしてます。

ただ、Nuroの2Gbpsが2,090円/月で使える & 上りが1Gbps & J:COM併用可と聞いて、だいぶグラグラきてる状態です。
だったら10GbE化しないとなぁと思って悩み中…

関連記事

コメントとトラックバック

    コメントはありません

    コメントを残す

    CAPTCHA


    トラックバックURLhttps://e-tune-mt.net/ylab/7173/trackback