FreeBSD ハンドブック
Prev | Chapter 15. ストレージ | Next

# 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

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

- スナップショットをバックアップ目的に使用する管理者もいます。 なぜならスナップショットは CD やテープに転送できるからです。

- ファイルの完全性を検証するために、 fsck(8) をスナップショットに実行してもよいでしょう。 スナップショットをマウントしたときにそのファイルシステムがクリーンであったとすると、 そのスナップショットをマウントするときはいつでもクリーンな (そして変更のない) 結果を得るでしょう。 これは本質的には バックグラウンド fsck(8) が行うことです。

- スナップショット上で dump(8) ユーティリティを実行すると、 スナップショットのファイルシステムとタイムスタンプが一致するダンプが返されるでしょう。 dump(8) は `-L` オプションを使用することで、 一つのコマンドでスナップショットをとり、ダンプイメージを作成して、スナップショットを削除することが可能です。

- ファイルシステムの “凍結された” イメージとしてスナップショットを mount(8) します。 `/var/snapshot/snap` のスナップショットを mount(8) するには以下のようにします。

      # mdconfig -a -t vnode -f /var/snapshot/snap -u 4
      # mount -r /dev/md4 /mnt

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

    # umount /mnt
    # mdconfig -d -u 4

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

Prev | Home | Next
ネットワーク、メモリ、そしてファイルベースのファイルシステム | Up | ファイルシステムクォータ