コンテナ(ゾーン)内で ZFS : やっぱり Sun がスキ! やっぱり Sun がスキ!

やっぱり Sun がスキ!

http://blogs.sun.com/yappri/date/20061106 2006年 11月 06日 月曜日

コンテナ(ゾーン)内で 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 と同様にスナップショット/ ロールバックが出来ることが確認出来ました。 事実上個数無制限のスナップショットを使って、要所要所で スナップショットをとると少し前のデータに簡単にアクセスできて 便利ですよね。

投稿されたコメント:

コメント
  • HTML文法 不許可