X

Oracle Solaris, Oarcle ハードウェア製品に関する情報

  • Sun |
    January 21, 2008

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/test

zfs 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



Be the first to comment

Comments ( 0 )
Please enter your name.Please provide a valid email address.Please enter a comment.CAPTCHA challenge response provided was incorrect. Please try again.Captcha
Oracle

Integrated Cloud Applications & Platform Services