2006年 11月 06日 月曜日
やっぱり Sun がスキ!
コンテナ(ゾーン)内で ZFS
ゾーン内でも ZFS が使えるのをご存じですか?
ゾーン内でスナップショットの作成やロールバック、
新たな ZFS のファイルシステムを作成可能なので結構便利です。
かなり簡単に作成できますので、Solaris 10 6/06 で実際に確認しました。
プロンプト "global# " は global zone で実行したコマンド、 プロンプト"zonezfs# " は zonezfs という名前の non-global zone で 実行したコマンドです。
1. global zone でプールやファイルシステム作成
今回は tank/zone/zonezfs を non-global zone である "zonezfs" の配下に置きます。 non-global zone 内でどのように見えるか確認するために、 関係ないファイルシステム(tank/test01, tank/zone/test01)を作成してみてます。
global# zpool create tank raidz c1t0d0 c1t0d1 c1t0d2 c1t0d3 global# zfs create tank/test01 global# zfs create tank/zone global# zfs create tank/zone/zonezfs global# zfs create tank/zone/test01 global# zfs list NAME USED AVAIL REFER MOUNTPOINT tank 366K 350M 53K /tank tank/test01 49K 350M 49K /tank/test01 tank/zone 149K 350M 51K /tank/zone tank/zone/test01 49K 350M 49K /tank/zone/test01 tank/zone/zonezfs 49K 350M 49K /tank/zone/zonezfs
2. non-global zone 作成
"add dataset" がポイントです。
global# zonecfg -z zonezfs zonezfs: そのような構成済みゾーンはありません 'create' を使用して、新しいゾーンの構成を開始してください。 zonecfg:zonezfs> create zonecfg:zonezfs> add net zonecfg:zonezfs:net> set address=192.168.32.51 zonecfg:zonezfs:net> set physical=hme0 zonecfg:zonezfs:net> end zonecfg:zonezfs> set zonepath=/export/home/zonezfs zonecfg:zonezfs> add dataset zonecfg:zonezfs:dataset> set name=tank/zone/zonezfs zonecfg:zonezfs:dataset> end zonecfg:zonezfs> verify zonecfg:zonezfs> commit zonecfg:zonezfs> global# zoneadm -z zonezfs install Preparing to install zone. Creating list of files to copy from the global zone. Copying <2569> files to the zone. Initializing zone product registry. Determining zone package initialization order. Preparing to initialize <1072> packages on the zone. Initialized <1072> packages on zone. Zone is initialized. The file contains a log of the zone installation. global# zoneadm -z zonezfs boot
3. non-global zone で ZFS の操作
3.1. ZFS の確認
global zone では tank/test01, tank/zone/test01 という zonezfs には関係ないファイルシステムを作成していますが、zonezfs では 表示されません。つまり自分の親階層のデータセット以外表示されない仕組みに なっています
zonezfs# zfs list NAME USED AVAIL REFER MOUNTPOINT tank 366K 350M 53K /tank tank/zone 149K 350M 51K /tank/zone tank/zone/zonezfs 49K 350M 49K /tank/zone/zonezfs
3.2. ファイルシステムの作成
新しいファイルシステム作成も一瞬でした
zonezfs# zfs create tank/zone/zonezfs/test01 zonezfs# zfs create tank/zone/zonezfs/test02 zonezfs# zfs list NAME USED AVAIL REFER MOUNTPOINT tank 100M 250M 53K /tank tank/zone 100M 250M 51K /tank/zone tank/zone/zonezfs 153K 350M 55K /tank/zone/zonezfs tank/zone/zonezfs/test01 49K 350M 49K /tank/zone/zonezfs/test01 tank/zone/zonezfs/test02 49K 350M 49K /tank/zone/zonezfs/test02
3.3. スナップショットの作成
特に問題無く non-global zone 内でスナップショット作成も可能でした
zonezfs# cd /tank/zone/zonezfs/test01 zonezfs# touch a zonezfs# zfs snapshot tank/zone/zonezfs/test01@today zonezfs# pwd /tank/zone/zonezfs/test01 zonezfs# cd .zfs/snapshot/today/ zonezfs# ls a
3.4. ロールバック
特に問題無く non-global zone 内でロールバックが可能でした。
zonezfs# zfs list NAME USED AVAIL REFER MOUNTPOINT tank 100M 250M 53K /tank tank/zone 100M 250M 51K /tank/zone tank/zone/zonezfs 151K 350M 53K /tank/zone/zonezfs tank/zone/zonezfs/test01 49K 350M 49K /tank/zone/zonezfs/test01 tank/zone/zonezfs/test01@today 0 - 49K - tank/zone/zonezfs/test02 49K 350M 49K /tank/zone/zonezfs/test02 zonezfs# touch /tank/zone/zonezfs/test01/b zonezfs# ls /tank/zone/zonezfs/test01/ a b zonezfs# cd zonezfs# zfs rollback tank/zone/zonezfs/test01@today zonezfs# ls /tank/zone/zonezfs/test01/ a
non-global zone 内でも global zone と同様にスナップショット/ ロールバックが出来ることが確認出来ました。 事実上個数無制限のスナップショットを使って、要所要所で スナップショットをとると少し前のデータに簡単にアクセスできて 便利ですよね。
Posted at 11:44午前 11 06, 2006 by Chizu Kitano in Sun | 投稿されたコメント[0]