前回はNASを構築するためのソフトウェアアプライアンス「FreeNAS」をiSCSIターゲットとして利用する方法を紹介した。今回は、FreeNASの最も魅力的な機能の1つである「スナップショット」の使い方を紹介する。

ZFSスナップショット

FreeNASはいわゆるZFSをベースとしたストレージシステムだ。ZFSはもともとサン・マイクロシステムズによってSolaris向けに開発されてきた次世代ファイルシステムである。現在では、それがオープンソース化された「OpenZFS」がFreeBSDやLinuxなどで動作するようになっており、ストレージシステムにおける重要なボリューム管理システム、およびファイルシステムとして利用されている。ストレージシステムとして必要な主機能は、基本的にZFSが提供するものだと思ってもらえれば良いと思う。

さて、そのZFSで重要な機能の1つに、スナップショットがある。スナップショットは、ファイルシステムのある状態をそのまま保持したようなもので、さらにそこからスナップショットを複製(クローン)して新しいファイルシステムを作成したり、スナップショットレベルでバックアップを取ったりすることができる。ZFSの提供するいくつもの重要な機能は、このスナップショットがベースとなっているのだ。

イメージ的に、スナップショットを作成するとその時点でのファイルシステム(データセット)の内容がそのままコピーされるような気がするかもしれないが、ZFSではそういったことはない。データセットをコピーするのではなく、メタデータを操作してスナップショットを作成するだけなので非常に短時間で完了する。

手軽にスナップショットを作成できるので、定期的にスナップショットを作成するような運用を行うことが多い。例えば過去2週間分、1時間ごとにスナップショットを作成するといったような使い方だ。こうすると、過去2週間分は1時間ごとにロールバックの対象とすることができる。ヒューマンエラーでファイルを削除してしまった場合でも、こういった運用にしておけばロールバックできるので安心だ。

ちなみに、Appleのハードディスク内蔵の無線LANルータ「Time Capsule」でバックアップを取り、Mac OS Xの「Time Machine」を使うと似たようなことはできるが、それはファイルシステムのスナップショットを使ったものではない。Time Capsuleでは本当にファイルをコピーしてバックアップを取っているので、容量を食うし動作も遅い。とは言え、Mac OS Xで使われているHFS+ベースのファイルシステムにはスナップショット機能が存在しないため、こういうことをしようとしたらファイルを実際にコピーするしかないのだ。

FreeNASスナップショット

FreeNASでは左側のメニューから「ストレージ」→「Snapshots」を選択することでスナップショット関連の機能やスケジュールを設定することができる。スナップショットはデータセットごとに設定することができ、開始時刻や終了時刻、作成間隔、保存期間、曜日指定などを行える。

スナップショットの設定

設定されたスナップショットスケジュール

スナップショット機能を有効にすると、作成したスナップショットの一覧が表示されるようになる。スナップショットの右側に表示されているアイコンはスナップショットに対して可能な操作だ。

3行目、5行目のスナップショットでは、「クローン」「削除」「ロールバック」を実行できる

スナップショットの削除

スナップショットのロールバック

作成したスナップショットへロールバックできるのは、基本的には最も新しいスナップショットとされている。より古いスナップショットへロールバックする場合、そのスナップショットまでに作成されたスナップショットは削除しなければならない。これはZFSの動作そのもので、FreeNASにも基本的にこれがそのまま反映されている。

FreeNASでは、ファイルシステムのチェックを行う「Scrub」という機能でも同じようにスケジュールを指定して実行することができるが、これを利用するかどうかはよく考えたほうがよいだろう。ZFSでは基本的にScrubは必要ないように工夫されており、明示的に実行すると負荷を上げるだけになる可能性がある。利用するのであれば、実際に運用して本当に必要か判断した上で使うようにしていただきたい。