2008年 1月 22日 火曜日
やっぱり Sun がスキ!
ZFS クローン、プロモーション機能
前回
、 ZFS のスナップショット、ロールバック機能に関して解説しましたが、
今回は、ZFS のクローンとプロモーション機能を紹介します。
ZFS のクローン機能は、作成したスナップショットを複製する機能なのですが、
スナップショットのデータは Read Only でアクセス可能なのに対して、クローン
を作成すると、複製したファイルシステムに対して Read/Write が可能になります。
さらに、プロモーション機能は、ZFS のクローンと、マスタとなるファイルシステム
の依存関係を交換する事ができます。
この機能のおかげで、ZFS のクローンを残したままマスタのファイルシステムを削除する事が
可能になりました。
(通常、クローンは、マスタとなるファイルシステムと依存関係がある為、マスタの
ファイルシステムを削除する際は、クローンも一緒に削除されてしまいます。)
それでは実際にクローンとプロモーション機能の動きを見てみましょう。
まずは、クローンを作成する準備をします。
testpool/home ファイルシステムに 1M Byte のファイル aaa,bbb を
作成します。
# mkfile 1m /testpool/home/aaa # mkfile 1m /testpool/home/bbb # ls /testpool/home aaa bbb続いて testpool/home ファイルシステムのスナップショット @monday を作成します。
# zfs snapshot testpool/home@monday # zfs list NAME USED AVAIL REFER MOUNTPOINT testpool 2.16M 252M 38.2K /testpool testpool/home 2.04M 252M 2.04M /testpool/home testpool/home@monday 0 - 2.04M -これで準備が整いました。
それでは、まずスナップショット testpool/home@monday からクローン testpool/test ファ イルシステムを作成してみます。
# zfs clone testpool/home@monday testpool/test # zfs list NAME USED AVAIL REFER MOUNTPOINT testpool 2.17M 252M 39.6K /testpool testpool/home 2.04M 252M 2.04M /testpool/home testpool/home@monday 0 - 2.04M - testpool/test 0 252M 2.04M /testpool/testzfs list の結果から判る通り、クローンもスナップショットと同様、物理 コピーでなく差分で管理される為、最初の USED は 0 Byte になります。
作成した /testpool/test クローンに対して Write 可能かファイルを作成して 確かめてみます。
# mkfile 1m /testpool/test/ccc # mkfile 1m /testpool/test/ddd # ls /testpool/test aaa bbb ccc ddd正常に Write ができました。
今度は、プロモーションの機能を試す為、マスタとなるファイルシステム /testpool/home が破棄できない事を確かめてみます。
# zfs list NAME USED AVAIL REFER MOUNTPOINT testpool 4.22M 250M 39.6K /testpool testpool/home 2.04M 250M 2.04M /testpool/home testpool/home@monday 0 - 2.04M - testpool/test 2.04M 250M 4.04M /testpool/test # zfs destroy -r testpool/home 'testpool/home' を破棄できません: filesystem に依存しているクローンがあります 次のデータセットを破棄するには、'-R' を使用してください: testpool/test予想通り、マスタのファイルシステムを破棄しようとすると、マスタを参照している クローンが依存している為、破棄できません。
それでは、プロモーション機能を使って、依存関係を交換してみます。
# zfs promote testpool/test # zfs list NAME USED AVAIL REFER MOUNTPOINT testpool 4.22M 250M 39.6K /testpool testpool/home 0 250M 2.04M /testpool/home testpool/test 4.08M 250M 4.04M /testpool/test testpool/test@monday 33.7K - 2.04M -これで依存関係が入れ替わりました。
ちなみに、依存関係が逆転した為、 @monday スナップショットが/testpool/test ファイル システムの方に移動しています。
それでは、本来マスタとなっていたファイルシステムを破棄してみましょう。
# zfs destroy testpool/home # zfs list NAME USED AVAIL REFER MOUNTPOINT testpool 4.21M 250M 38.2K /testpool testpool/test 4.08M 250M 4.04M /testpool/test testpool/test@monday 33.7K - 2.04M -正常に testpool/home ファイルシステムを破棄できました。
もし、クローンのファイルシステム名を元あったマスタのファイルシステム名と と同じにしたい場合は、リネームするコマンドがあります。
# zfs rename testpool/test testpool/home # zfs list NAME USED AVAIL REFER MOUNTPOINT testpool 4.21M 250M 38.2K /testpool testpool/home 4.08M 250M 4.04M /testpool/home testpool/home@monday 33.7K - 2.04M - # ls /testpool/test aaa bbb ccc dddはい、これで testpool/test が testpool/home にリネームされました。
(最後に)
今回紹介した ZFS の機能を含め、ZFS のスナップショット、ロールバック、クローン、プロモーション、 リネーム機能は是非試してみて下さい!
(参考情報) やっぱりSunがスキ! ZFS 関連 blog
- スナップショット、ロールバック機能紹介
- ファイルシステムの複製方法紹介
- ホットスペア機能紹介
- USB メモリで ZFS
Posted at 04:44午後 1 22, 2008 by Naoyuki Yamada in Sun | 投稿されたコメント[0]