トップ 差分 一覧 ソース 検索 ヘルプ RSS ログイン

ZFSを使ってみる

概要

ZFSはSolaris10で新たに採用されたファイルシステムです。 ZFSには先進的な機能が多数盛り込まれており、以下のような特徴があります。

  • 簡単(zpool, zfsの2つのコマンドだけで管理できる)
  • 大容量(16エクサバイトのファイルを扱える)
  • 高機能(RAID、スナップショット、クローン、クォータ、...)
  • 安全(99.99999999999999999%の信頼性)
  • 無料!

ZFSの基本的な使い方をまとめてみます。

ZFSファイルシステムの作成

/export/homeパーティションをZFSに移行してみます。ルートパーティションはSolaris10 11/06の時点では残念ながらZFSにできません。

 ストレージプールの作成

まずストレージプールを作ります。 物理的なディスク(スライス)をいくつかまとめて仮想的なディスクとして扱うことができます。 ストレージプールはミラー(RAID1)、RAID-Z(RAID5)、RAID-Z2(RAID6)などの構成にすることもできます。

プールの作成にはzpool createコマンドを使います。/dev/dsk/c0d0s7からtankという名前のプールを作成してみます。/dev/dskはつけてもつけなくてもかまいません。
ZFSでは/etc/vfstabを使わないため、もしZFSで使おうとしているスライスが/etc/vfstabに書いてある場合は削除してください。

# zpool create tank c0d0s7

これでtankという名前のプールが作成され、/tankにマウントされます。ここまでわずか数秒です。

ミラー構成にする場合は以下のような感じになります。簡単でしょ?

# zpool create tank mirror c0d0s7 c0d1s7

zpool listコマンドでプールのリストを表示できます。

$ zpool list
NAME                    SIZE    USED   AVAIL    CAP  HEALTH     ALTROOT
tank                   76.5G   22.7G   53.8G    29%  ONLINE     -

 ファイルシステムの作成

tankプールにhomeファイルシステムを作成します。 ファイルシステムの作成にはzfs createコマンドを使います。

# zfs create tank/home

マウントポイントを変更します。

# zfs set mountpoint=/export/home tank/home

zfs listコマンドでファイルシステムのリストを表示できます。

$ zfs list
NAME                   USED  AVAIL  REFER  MOUNTPOINT
tank                  22.7G  52.6G  24.5K  /tank
tank/home             22.7G  52.6G  22.7G  /export/home

プールの領域はプール内のファイルシステムで共有されます。zfs quotaコマンドで容量を制限することもできます。

/export/homeの容量を20GBに制限します。

# zfs set quota=20g tank/home

スナップショット

ZFSではファイルシステムのある時点での状態をスナップショットとして保存することができます(UFSにもありましたが)。

 スナップショットの作成

スナップショットを作成するにはzfs snapshotコマンドを使います。tank/homeのスナップショットを作成します。

# zfs snapshot tank/home@snapshot1

スナップショットは数秒で作成されます。スナップショットを作った時点ではディスク容量は消費せず、ファイルを更新するたびに容量を消費していきます。

作成したスナップショットには/export/home/.zfs/snapshot/からアクセスできます。このディレクトリはlsコマンドでは見えないので注意してください(-aオプションでも見えません)。

 ある時点のスナップショットに戻す

ファイルシステムをある時点のスナップショットに戻すにはzfs rollbackコマンドを使います。

# zfs rollback tank/home@snapshot1

 スナップショットを削除する

スナップショットを削除するにはzfs destroyコマンドを使います。

# zfs destroy tank/home@snapshot1

バックアップ・リストア

バックアップ・リストアにはzfs send, zfs recvコマンドを使います。(以前はbackup/restoreというコマンドでしたがsend/receiveに変更されました。)

 バックアップ

zfs sendコマンドでバックアップしたいスナップショットを指定します。

# zfs send tank/home@snapshot1 > /backup/home.img

 差分バックアップ

差分バックアップを取る場合は-iオプションと2つのスナップショットを指定します。

# zfs send -i tank/home@snapshot1 tank/home@snapshot2 > /backup/home_sub.img

 リストア

zfs sendコマンドで出力したバックアップデータをzfs receiveコマンドでリストアします。

# zfs receive tank/home < /backup/home.img 

リンク

最終更新時間:2007年01月15日 23時29分00秒