オブジェクトストレージって、クラウドのパーツの中で一番古いということをあまり知られていない。(自分が最初にAWSを最初に契約したときは、EC2はなく、S3のみ、その後EC2が出てきたが、EBSもなし、ターミネートするとディスクが消えるという安全設計、もとい、S3と連携前提だった。)また、オブジェクトストレージはあまりパフォーマンスがよくなく、普通のストレージとして使うにはちょっと難しい。さらに、オブジェクトストレージはあくまでも「オブジェクト」を置くストレージなので、ビジブルなファイルデータを置くのも適さない。(それをやりたがる人が多いけど)
オブジェクトストレージを使う基本は、自分からビジブルにアクセスをするのではなく、オブジェクトストレージをハンドリングできるアプリケーションから間接的に使うことだと思う。(あくまでも1例だが。)
オブジェクトストレージを一番簡単に有効利用ができるのがバックアップソフトである。バックアップソフトのバックアップストレージとしてオブジェクトストレージが使える。バックアップソフトだとリテンションをもつので、オブジェクトストレージの利用データ量がある程度制御ができる。つまりコストがある程度見える。反面、オブジェクトストレージを使えるバックアップソフトは、有償製品だったり、商用NASのアプリケーションだったり、なかなかフリーのいい感じのソフトウェアがない。
githubを彷徨っていたら、それらしきソフトを発見。「kopia」というソフトウェア。
https://github.com/kopia/kopia
この手のソフトウェアって、コマンドラインツールしかないのが多いが、なんとGUIもあった。早速触ってみた。
まず、kopiaは何ができるのか?
- バックアップ対象: ファイルパス
- バックアップストレージ:バックアップストレージをRepositoryといい、ファイルシステムやオブジェクトストレージなどが利用できる。
- バックアップの方式: スナップショット(ただし静止点まではとっていないっぽい)
- バックアップタスク: ポリシーベースの設定
- リストア: ファイルレベルリストア
つまり、ファイルバックアップをオブジェクトストレージに保存をする。
早速インストール
https://kopia.io/docs/installation/
homebrewとかでもインストールができるが、
https://github.com/kopia/kopia/releases/tag/v0.11.2/ からダウンロードしてインストールをした。Windows,Linuxなど様々のバイナリーがあり、GUI版もある。
自分の環境は、MACでGUIを使いたかったので、以下をダウンロード。ちなみにGUI版を落とすとGUIはIntelバイナリで、アプリケーション自体はUniversalバイナリ。
https://github.com/kopia/kopia/releases/download/v0.11.1/KopiaUI-0.11.2.dmg
バックアップ先のオブジェクトストレージはminioを利用した。kopiaで利用するバケットは事前に作成しておく。
アプリケーションをコピーしたらまずは実行。いきなりこんな画面になる。ここで利用したいオブジェクトストレージなどを指定する。Backblaze B2が独立したエントリーな理由はなぞ。
Minioの登録は以下のように行う。近頃、オレオレ証明書は使いにくいので、MinioにはLet’s Encryptのドメイン証明書を設定している。
Nextをクリックすると、暗号化パスワードを聞いてくる。このパスワードは、バックアップデータ自体に保存されるので、バックアップデータ自体はポータブル。ただし、パスワードを忘れるとパスワードリカバリーが不可能なので、覚えておくこと。
これで設定完了。Repository(バックアップストレージ)の情報は、全てバケットに入っているので、オブジェクトストレージの接続情報と暗号化パスワードを入力すればいつでもデータにアクセスができる。
バックアップパスの指定
バックアップの指定は、Snapshotでファイルパスを指定して行う。New Snapshotをクリック
バックアップ先はファイルパスを指定する。とりあえずローカルのgitのフォルダを指定してみた。リテンションが指定できる。
さらにバックアップスケジュールも指定できる。
スナップショット取得前に容量の見積もりができる。
1度目のスナップショット。
以後のスナップショットは変更されたファイルだけアップロードされる。
ちなみにMinioではこのように表示される。
それにしてもMinioのUIがよく変わるw
ポリシーの変更
Policiesで変更可能。
リストア
Snapshotをドリルダウン。
以下がリストアオプション
実際のリストア。リストア先のフォルダは先に作っておく。
ぱーっと流したけどこんな感じ。
ファイルバックアップをオブジェクトストレージに定期的にリテンションを持たせて保存するには便利。ポリシーも組めるので普通にバックアップ用途で使える。今回はGUIを使ったが、コマンドラインでも使える。
各UIにコマンドラインを表示してくれるボタンが付いている。
重複排除もテストしてみた。
200MBのファイルを10個つくってバックアップしてみた。2.1GBが全体量で、転送量が209.7MBだった。つまり重複排除が効いている。
コマンドラインのインストール
MAC/Linuxならbrewでのインストールが楽。自動補完まで入れてくれる。
brew install kopia
GUIで作ったRepositoryを以下のコマンドで接続してみる。
kopia repository connect s3 --bucket kopiatest --access-key xxxxxxxx --secret-access-key xxxxxxxx --endpoint="<endpoint>"
Repositoryを接続する場合は、設定されている暗号化パスワードが聞かれるので入力。
以下でスナップショットが確認できる。
kopia snapshot list --all
XXXX@XXXXXXXXXXXXXXX:/Users/XXXX/Documents/GitHub
2022-06-13 23:54:18 UTC k4dac4062a6af76dc366991ab93fdf301 1.8 MB drwxr-xr-x files:607 dirs:277 (latest-1..5,hourly-1..4,daily-1,weekly-1,monthly-1,annual-1)
+ 4 identical snapshots until 2022-06-14 02:00:00 UTC
このアプリのいいところは、開発が絶賛続いているところ。実際ファイルシステムのバックアップをオブジェクトストレージに保存するならこれで十分かもしれない。プラットフォームもかなり充実している。
別の使い方としては、コマンドラインも充実しているということから、起動時にオブジェクトストレージからデータをリストアして、シャットダウン時にオブジェクトストレージに保存し直すという、クラウドに依存しない、インスタンスをエフェメラルなものとして利用することも可能かと思う。(昔のEC2の使い方)
なんとなくオブジェクトストレージにフォルダを保存したいなぁという時にはめちゃくちゃ便利。