15.11. ファイルシステムのスナップショット

寄稿: Tom Rhodes.

FreeBSD 5.0 は Soft Updates と協調するファイルシステムスナップショットという新しい機能を提供します。

スナップショットは指定したファイルシステムのイメージを作成し、 また、ファイルとして扱うことができるようになります。 スナップショットファイルはアクションが実行されるファイルシステム内で作成されなければなりません。 また、ユーザは一つのファイルシステムあたり 20 までスナップショットを作成することができます。 有効なスナップショットはスーパーブロック内に記録されるので、 リブートしてから永続的にアンマウントおよびリマウントを記録します。 スナップショットが必要無くなったときは、 標準の rm(1) コマンドを用いて削除することができます。 スナップショットはどんな順番で削除してもよいのですが、 その他のスナップショットが開放されたブロックのうちいくらかをおそらく必要とするので、 使用されていたすべてのスペースを得られるとは限りません。

初めてスナップショットを作成すると、root でさえも書き込めないように schg フラグ (chflags(1) のマニュアルページを参照) が設定されます。 unlink(1) コマンドは、スナップショットに schg フラグが設定されていてもそれらを削除することのできる例外です。 したがって、スナップショットファイルを削除する前に、 schg フラグをクリアする必要はありません。

スナップショットは mount(8) コマンドを用いて作成されます。 /var のスナップショットを /var/snapshot/snap に作成したいときは、 以下のコマンドを使用します。

# mount -u -o snapshot /var/snapshot/snap /var

また、スナップショットを作成するのに mksnap_ffs(8) も使えます。

# mksnap_ffs /var /var/snapshot/snap

スナップショットにはいくつかの利用法があります。

これで /mnt にマウントした 凍結状態の /var ファイルシステム構造を探索できます。 すべてがスナップショットが作成された時と同じ状態になるはずです。ただし、 以前に作成されたスナップショットがサイズ 0 のファイルとして現れることが唯一の例外です。 スナップショットの使用を終えた場合、以下のようにアンマウントできます。

# umount /mnt
# mdconfig -d -u 4

softupdates およびファイルシステムスナップショットに関する詳細については、 http://www.mckusick.com/ にある Marshall Kirk McKusick のウェブサイトを参照してください。 ここには技術的な論文もあります。