概要
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秒