常時動作するバックアップシステムを求めて
ライフログシステムでは全人生をターゲットにデータを扱うため,普通のアプリケーションなどの規模を超えたデータを,永続的に扱う必要があります。
2000年前後はこれをCDなどのメディア,そのあとはDVDなどのメディアに焼いていたこともありますが,1TBを超えたあたりから,既存のメディアはバックアップには容量が小さすぎ,低速すぎる問題に直面してきました。
DVDは5GB弱で,1TBをバックアップするのには200枚以上必要になります。しかもディスクメディアは不安定なので,最低でも複数枚となると,数百枚の規模になってしまうのです。数百枚のディスクに分かれた中から,必要なデータを探し出すことはほとんど不可能です。Blu-rayなら多少改善されますが,それでも複数のディスクに分かれてしまう問題は残ります。
ディスクメディアには,もうひとつ決定的な問題があります。過去のデータは死蔵しているわけではなくて,頻繁に使用して編集することです。なにかにつけて過去のデータを呼び出し,変更し,新しい価値を見いだし付加して活用しているからです。過去のデータは固定的なものではなくて,いつでもライブなのです。
ハードディスクを試してみる
容量が少ないユーザーの場合か,すこし先の将来であれば筆者にも,クラウドが代替なる可能性もあります。筆者の場合は,容量と速度と価格のバランスから,2012年末時点では実用ではなく,テスト的に併用する段階にとどまっています。結局のところ,このような実用的な記憶システムを支えるものはハードディスク以外に存在しません。
ハードディスクは,最初はNASで運用しました。容量の点でNASは申し分ありません。しかしながら,2TBを超えるとシンクロするのに丸4日もかかるなど,ここでも速度の点で不満が出てきました。4日間もシンクロしていると,その間にエラーが出ると,もう対応できなくなってしまうからです。
速度面を追及するためにRAIDを使う手もありますが,RAIDの場合はユーザーのミスでファイルを削除した場合には取り返しが利きません。そもそもRAIDでなくても,ハードディスクを使うからには複数台のシステム運用以外にはないので,多重化のためにRAIDを使うのは無駄な投資となります。
そこで2010年頃には,USB 2.0の外づけハードディスクを複数台使用することでシステムを運用していました。現在は,メインのマシンの内蔵1TBに7年分のデータをおき,外づけの3TBと4TBのハードディスクに適宜バックアップをしています。
課題を解決できるのはハードディスク
この方式では,次の事柄をほぼすべて解決できています。
- 変更可能である
そもそもハードディスクなので,読み書きは自由自在です。データはバックアップなどで圧縮したりはしていないため,外部ハードディスクだけでも使用可能です。いつでもどのディスクに入っているデータでも任意の形で使用できます。
- ユーザーのミスに寛容
ユーザーがミスをしても,ミスをしてすぐなら,外部の複数台のマシンのどこかにシンクロしていないオリジナルデータがあり,容易に復旧できます。
- 複数台の多重バックアップ
ハードディスクは複数台を使用しているので,シンクロ中に問題が発生しても,他のバックアップで取り返しが効きます。ハードディスクは頻繁に追加しているため,使用しなくなったディスクにはその時点でのバックアップを残しておけます。ハードディスクの大容量化と小型化,低価格化は引き続き進行中なので,年々ディスクは小型化しています。
- シンクロにかかる時間
外部メディアやNASを使うのに比べて,はるかに高速です。約3時間程度です。
新たに生まれた課題
かれこれ2年ほど運用してみたところで,新たに次の課題が発生しました。
- 多重バックアップシステムの仕様による削除
- シンクロにかかる時間
シンクロには,シンクロソフトを使用していました。そのシンクロソフトは,シンクロ元とシンクロ先とを比較し,存在しないファイルを削除してシンクロするシステムです。
さてここで一般的な話ですが,普通ユーザーがファイルを削除する場合には,OSが保護をしてくれるため,削除したファイルは一時的にゴミ箱に移動し,容量などの問題のないある一定期間,データは削除されずに保護されています。ユーザーのミスに寛容なのです。
ところが,シンクロソフトで削除した場合には,ゴミ箱を使わずにいきなりファイルを消去してしまうことが多いのです。筆者が使用していたシステムではそうでした。これにより,シンクロの(あるいはシンクロを指定したユーザーの)ミスに気づかずに,ファイルを消去してしまう問題が発生します。シンクロソフトにも,ファイルを削除するときに,ファイルを完全に消去するのではなく,なんらかのフェイルセーフ機能が必要なのです。
つまり,「ユーザーのミスに寛容」という課題はじつは,ふたつに分けられるということです。
ひとつめは,「ユーザーがミスをした場合に,ミスをしたことに気づいていて直後に復旧できるかどうか」という課題。これはRAIDでは解決できず,非同期的なシンクロシステムの方が対応可能なのです。
もうひとつは,シンクロシステムによるバックアップを運用して気づいた,「ユーザーがミスをした場合に,直後はミスをしたことに気づいておらず,シンクロしてしまったあとに復旧できるかどうか」という課題です。この場合,シンクロシステムがデータを同期してしまえば,データも消えてしまうため,復旧不能になってしまいます。そこで,この新たに気づいた課題に対して,よりユーザーのミスに寛容なシステムを構築する必要に迫られました。
シンクロにかかる時間は4日間から3時間へと,大幅に短縮できました。NASの場合の100時間をUSB2.0を使用して3時間にしたのですから,約30倍の高速化を果たせたことになります。それでも,3時間を複数台でシンクロするとなると,合計して1日を超える場合も出てきました。
全体としては非同期でシンクロしているわけですが,基本的な方針としてはRAID同様にできるだけシンクロのタイムラグはないほうが望ましいわけです。最新のデータをつねに複数のバックアップでもつことができるためです。
しかも,データは年単位で格納していますが,前回のシンクロから一度も使用しなかった年の分も丁寧に比較していますので,その部分は無駄に時間をかけていることになります。シンクロ中にリアルタイムでログを出さない場合には,現在どこまで進行しているのか不明で,停止するのも躊躇するほどです。
結局,システムを動かしている限り,常時シンクロしている必要があるのです。それならばもうすこし全体の設計を見直して,ディスクアクセスを減らすほうがよいのではないか,と考えました。
ライフログ時代のシンクロシステム
このようなの理由で,ライフログシステムに必要な,新世代の新設計のシンクロシステムが必要になりました。また,すべてのシンクロソフトを試すよりも,要求を満たすシステムを制作したほうが確実であると考えました。
要求としては,次のようになります。
- ハードディスク間のシンクロシステムである
- ユーザーのミスに寛容。システム自体のミスにも寛容
- 複数台の多重バックアップを容易に設定できる
- シンクロにかかる時間は極小化する
これを満たすために,次のような設計方針を立てました。
- ログシステムに,使用したファイルを常時記録する
- シンクロはその使用したファイルのみを行う
このふたつの方針を実装したシンクロシステムを,2012年頃から運用開始しました。2012年11月の時点で,日々のシンクロにかかる時間はわずかに8分ほどになっています。
これは従来のシステムの約3時間に対して,時間にして約1/20の短縮を達成したことになります。ソフトウェアだけで1/20の高速化を実現したわけです。当初のNASに較べると,1/30×1/20=1/600の高速化です。DVDなどのメディアとの比較は計算できないくらいの規模です。
ユーザーのミス,およびシステムのミスは,ゴミ箱と独自に作成したゴミ箱システムを使用することで対応できました。バックアップの設定は,ログシステムによって自動化していますので,これも比較的容易です。
これらの要求のうち,ごみ箱機能をテストしたバージョン『syncCopy』をフリーで配布しています。