やっぱり Sun がスキ! : Weblog やっぱり Sun がスキ!

やっぱり Sun がスキ!

http://blogs.sun.com/yappri/date/20061128 2006年 11月 28日 火曜日

戦場に咲いた一輪の花 Sun Fire X4600 の華麗な性能

  Sun Fire T2000 で世界記録樹立!
  BEAがSun Fire Blade x8400 で世界記録を樹立!

きらびやかに世界記録のプレスをSunが発表すると、競合他社も負けじとこれに迫るような性能値で応戦する。
業界標準のアプリケーションサーバの性能指標として名高いSPECjAppServer2004においてもこのような攻防は活発でして、特に Sun が Sun Fire T2000を使用した性能値を発表した昨年秋頃から各社の応酬は激化してきており、今後も予断を許さない状況が続きそうです。

今日は「こんな主戦場にまた一つ大物(性能値)が投入されました。」というお知らせではなく、そんな白兵戦の最中、最前線からは一歩距離を置いた所で知的に光る逸品(性能値)があるのを皆さまに知って頂きたくて筆をとりました。きっと皆さんもあらためて Sunが好きになるはずです。

タイトルにもあります通り、その「逸品」とは Sun Fire X4600 を使用して今年 2006年8月 に発表した SPECjAppServer2004 の性能値になります。尚、Sun Fire X4600とは Sunが今年の夏に発表した AMD Opteronチップを 8CPU/16コア搭載する高さ 4RUのサーバです。

http://www.spec.org/jAppServer2004/results/res2006q3/jAppServer2004-20060802-00033.html

1000.86JOPSに秘められた意味
1000.86 JOPS
なんの変哲もない性能値と思われた方、いらっしゃるかもしれません。
確かにこの数字、これだけを見るとぱっと見、あまり見栄えがしないかもしれません。 他にも 1000.86 JOPS を上回る値ならたくさんあります。

でも、実はこの数値、他の構成にはない大きな特徴をもっているのです。よく見てみると。もうお気づきですか?

そう、実は Solaris Container を使用しているのです。それもアプリケーションサーバ 6台に加えて、データベースサーバ 1台を統合する形で。Solaris Container とは、一台のサーバーハードウェア上で、SolarisOSを複数仮想的に稼働することを実現するOS仮想化技術で、他のOS仮想化技術と比較して低いオーバーヘッドが長所として挙げられます。

詳しい構成にご興味がある方のために少しだけ解説しますと、X4600 は下記の図のように構成されています。 WebLogicサーバ 6インスタンスのために各 1CPU/2Core のコンテナを計6つ構成し、またデータベースのために2CPU/4Coreのコンテナを1つ構成しています。



なぜ、アプリケーションサーバベンチにデータベースまで統合したのか?
ベンチマークに詳しい方、経験のある方なら分かって頂けると思いますが、SPECjAppServer2004 に限らず OLTP系の性能を計測する時、そのチューニングの範囲はアプリケーションサーバだけでなくデータベースまで及びます。これは、データベースサーバの性能を向上させないとアプリケーションサーバの性能を最大限引き出すことが難しいためというごく当たり前の摂理によります。ですので、通常アプリケーションサーバーの性能指標である SPECjAppServer2004の計測をする際はデータベースは別サーバ上で稼働させ、わざわざアプリケーションサーバと統合するようなことはしません。では、なぜ、この X4600 の性能値だけがわざわざデータベースまで統合しているのでしょうか?

それは、Sun が提案する未来を見据えた性能指標があるからなのです。
Space Watt and Performance、略して SWaP という指標は、単なる高いパフォーマンスやこれをコストで割っただけのコストパフォーマンスでは本当によい性能、システムが見つからないのではという指摘から来ています。
どういうことかと言いますと、システム選定時は何かとパフォーマンスにばかり目がいきがちになりますが、現実のシステム管理者はラックスペースや消費電力といった別の制約に縛られながら性能を求めなくてはなりません。そこで、パフォーマンスに加えて、スペースと消費電力も加味した形で提案されたのが SWaP という性能指標なのです。下記はその算出式になります。

                パフォーマンス
   SWaP = ---------------------------------
            ラックスペース x 消費電力



新しく見えてくる X4600 の真価
SWaPに関するより詳しい情報はこちらをご覧頂きたいと思いますが、ここでは SWaP を使って今まで私たちが見慣れた SPECjAppServer2004 の値を見直してみたいと思います。

下記がその結果になります。SWaP値が高い程、優位であることになります。


Sun/HP/IBM の SWaP値比較
ベンダ 構成 パフォーマンス スペース 消費電力 SWaP値
Sun 1ノードのX4600(App/DB) 1000.86 4RU 1200ワット 0.21
HP 6ノードのDL380(App)

1ノードのrx8620(DB)

1664.36 23RU 5482ワット 0.01
IBM 5ノードのx365 (App)

2ノードのx365(DB)

1343.47 21RU 4984ワット 0.01


どうですか?
その差が歴然としていませんか?
それもそのはずです。なぜならば、X4600の値は一台に集約しているのですから、圧倒的にスペースが節約できているのです。そして、これを支えているのが、皆さんお馴染みの Solaris Cotainer による低いオーバーヘッドという大きな武器であることはもうお分かりですよね?
OS仮想化技術の課題の一つにオーバヘッドをいかに低く抑えるかというのがありますが、Solaris Container の場合、グローバルゾーンという各コンテナを管理する親玉コンテナのカーネルを各コンテナが共有することで、これを最小限に抑えることができているのです。

しかも、BEA WebLogicサーバも IBM社の DB2も Solaris Containerに対応するライセンス体系を既に発表していますので、X4600という 8CPU/16コア構成でも、それぞれのアプリケーションはそれが稼働するコンテナ分のライセンスを取得すればよいので、アプリケーションの観点からも不要なライセンスを余計に購入する心配は要りません。

  BEA WebLogic Server    1CPU/2コアのコンテナ  6個 → 6CPU分のライセンスでOK
  IBM DB2 データベース   2CPU/4コアのコンテナ  1個 → 2CPU分のライセンスでOK

X4600が発表された頃、よく社外の方から「こんなに大きな AMD Opteronマシンの用途が分からないよ。」とご指摘を頂くことがありました。Solaris Containerが発表された頃も、よく皆さまから「他のOS仮想化技術があるのに、なぜ、わざわざコンテナなの?」とご指摘を頂くこともありました。事実、的確にお答えできずに慌てたこともあります。

でも、今こうやって両者を合わせてみてどうでしょう。
ハードウェアに加えて、OSまで設計している Sunならではの「8CPU AMD OpteronサーバとSolaris Container の組み合わせ」という提案が、データセンターにおける課題に見事に応えられていると言えないでしょうか。

今回は SPECjAppServer2004 における X4600を取り上げていますが、このような視点で既にある性能値を見直してみると、今まで見えていなかったサーバの新しい素顔が見えてくるかもしれませんので、是非試して頂きたいと思います。
そして、Sun Fire X4600 も Solaris Containerも、色んな用途に使えるマシン、技術ですので是非今後もご贔屓にして頂ければ幸いです。

[1] Standard Performance Evaluation Corporation web site.
http://www.spec.org
[2]APPLICATION AND DATABASE SERVER CONSOLIDATION ON
THE SUN FIRE" X4600 SERVER USING SOLARIS" CONTAINERS
http://www.sun.com/blueprints/1006/820-0040.html
[3]HP DL380の SPECjAppServer2004の数値
http://www.spec.org/jAppServer2004/results/res2005q3/jAppServer2004-20050802-00015.html
[4]IBM x365の SPECjAppServer2004の数値
http://www.spec.org/jAppServer2004/results/res2004q4/jAppServer2004-20041123-00006.html
[5] HP DL380、rx8620 の仕様
http://h18004.www1.hp.com/products/quickspecs/12166_na/12166_na.html
http://h18000.www1.hp.com/products/quickspecs/11849_div/11849_div.HTML
[6] IBM x365 の仕様
http://www.redbooks.ibm.com/abstracts/REDP3826.html?Open

http://blogs.sun.com/yappri/date/20061127 2006年 11月 27日 月曜日

Sunグッズ紹介(6)

Sun のロゴ入りグッズ紹介の第六弾です。


・Java Ring
先日、GPLv2 (GNU general Public Licence v2) として オープンソース化された Java のロゴ入りシルバーリングです。
Java のロゴが指元にキラリと光ります!





・Sun のロゴ入りシステム手帳
Sun のロゴ入りシステム手帳です。
手触りのいい、皮製表紙のシステム手帳です。





・Sun のロゴ入り手帳
Sun のロゴ入り手帳です。
今の時期にぴったりの手帳です。
皆様は来年度の手帳は用意されましたでしょうか?





・Sun のロゴ入りバッテリーチェッカー
Sun のロゴ入りバッテリーチェッカーです。
各種電池のバッテリーの残量が確認でき便利です。





・Sun と Java のロゴ入りメモ帳
Sun と Java のロゴ入りメモ帳です。
電話の時などのちょっとしたメモに最適です。




http://blogs.sun.com/yappri/date/20061126 2006年 11月 26日 日曜日

Solaris で NAT ルータ

Solaris 10 にデフォルトでインストールされている Solaris IP Filter を使ってNAT ルータを作る事ができます。 シンプルな構成であれば、以下のように簡単に設定可能です。

例えば、以下の環境で、LAN 内部の全てのマシンからの外部へのアクセスを、
10.14.3.168 というアドレスで行いたい場合を考えます。

まず、IP Filter 機能を有効化するため、NAT ルータにするマシン上の
/etc/ipf/pfil.ap ファイルを編集し、 使用するインタフェースの行のコメントを外します。
eri0 と ce0 をフィルタリングしたいならば、
...
#qfe    -1      0       pfil
eri    -1      0       pfil
ce     -1      0       pfil
#bge    -1      0       pfil
...
次に、/etc/ipf/ipnat.conf を作成して、NAT のルールを定義します。
ce0 から出て行く全てのパケットの送信元アドレスを 10.14.3.168 に変換するには
map ce0 192.168.128.0/24 -> 10.14.3.168/32 portmap tcp/udp 20000:30000
map ce0 192.168.128.0/24 -> 10.14.3.168/32
1行目は、TCP と UDP 用、2行目は ICMP (ping等) 用です。
編集後、リブートし、パケット転送を有効化し、ipfilter を起動すると、NAT ルータが完成です。
# init 6
# svcadm enable network/ipfilter
# routeadm -u -e ipv4-forwarding
しっかり NAT が動作しているか、確認してみましょう
NAT ルータマシン上で下記のコマンドを実行してパケットを監視しながら
# snoop -V -r -d eri0 icmp or port telnet
# snoop -V -r -d ce0  icmp or port telnet
LAN 内部のクライアントマシンから ping や telnet をしてみましょう。
% ping (ターゲットマシンのIP)
% telnet (ターゲットマシンのIP)
IP アドレスが 書き換えられていたり、ポート番号が変換されていたりする様子を
読み取る事ができます。

このほかにも、IP Filter は NAT での静的ポートマッピングや、 パケット通過・破棄などの
ファイアウォールとしての機能も備えており、 システムに合わせて柔軟な設定が可能です。

http://blogs.sun.com/yappri/date/20061124 2006年 11月 24日 金曜日

パワーカリキュレータ

サーバの消費電力値は、主に最大構成時の値で公表されている場合が多いと思います。 昨今、エコが叫ばれる時代になって、構成毎の電力値も気にされる様に なりました。

実は Sun も、新しい x64 サーバにおいては、構成毎に消費 電力を計算できるページを用意していますのでご紹介致します。

この情報は、製品紹介ページの中にひっそりとリンクされているだけで、 見つけづらい状態でしたので、リンクをまとめてみました。


是非いろんな構成の消費電力を計算して、消費電力マスターになって下さい。

http://blogs.sun.com/yappri/date/20061122 2006年 11月 22日 水曜日

VMwareでSolarisを動かす

自分の PC と共に Solaris 環境をいつでも持ち歩きたい、というのはいつの 時代も Solaris 使いにとって共通した願いです。しかし、様々な事情により Windows 環境を日常的に使用せざるを得ない人々にとって、パーティション を切り直してリブートで切り替えるデュアルブート環境は使い勝手が悪く、 特に初心者にはドライバ設定などもありハードルが高かったのも事実です。 しかし最近の PC の高性能化により、仮想化ソフトウェアのゲスト OS として Solaris を GNOME Desktop と共に動作させることも現実的になってきまし た。幸い仮想化ソフトウェアには無償で提供されているものもあり、これを 使えば非常に良い Solaris 学習環境が整います。そこで試しに私の PC にも 無償の仮想化ソフトウェアの一つである VMware Server をインストールして みました。

今回使用する PC のスペックは次の通りです。

ACER Aspire 5102WLMi
 * AMD Turion64 x2 TL-50 (1.6 GHz, 512 KB L2, 256 KB L1 on each core)
 * 1.5 GB DDR2 RAM
 * ATI Radeon xPress 1100 integrated graphics card
 * Realtek 10/100Mbps Ethernet
 * Atheros Wireless 802.11 a/b/g

まず、必要なソフトウェア、VMware Server と Solaris 10 (または Solaris Express) を入手します。

VMware Server は VMware のウェブサイトからダウンロードできます。

http://www.vmware.com/ja/products/server/

シリアルキーが必要なためユーザー登録が必要です。

Solaris 10 と Solaris Express は Sun のダウンロードセンターから 入手します。

 - http://www.sun.com/software/solaris/get.jsp
 - http://www.sun.com/software/solaris/solaris-express/get.jsp

次に VMware Server をインストールし、起動して仮想サーバーを作成 します。ゲスト OS のタイプは Sun Solaris を選択します。さらに今回は PC に AMD64 プロセッサである Turion64 X2 が搭載されているので、 Solaris バージョンとして Solaris 10 64-bit を選択します。メモリ容量 は recommended minimum では 256MB となっていますが 350MB か 400MB くらいあったほうが良いでしょう。ディスクは Solaris 10 フルインストール で 5GB 程度ですが、ディスクイメージファイルは圧縮効率が良いようで、 NTFS の圧縮フォルダに作成してみると、容量 4.58GB のディスクイメージ が 2.45GB まで圧縮されました。

仮想マシンを作成したら Solaris をインストールします。PC の DVD ドライブを使ってインストールすることもできますが、ダウンロードした ISO イメージを直接指定することもできます。DVD メディアからの インストールはやはり仮想マシン、若干時間がかかりますので、ISO イメージ を使う方がおすすめです。

Solaris のインストールが完了したら VMware Tools をインストール しておきましょう。VMware コンソールのプルダウンメニューから "VM" -> "Install VMware Tools" を選択します。すると仮想マシン内の Solaris GNOME Desktop に仮想 CDROM がポップアップしてきます。ちょっと不思議な 感じですが、仮想 CDROM 内に現れたパッケージをゲスト内でインストール すれば完了です。VMware Tools によりグラフィクス処理とマウスの動きが 改善するのが分かると思います。

後は画面サイズを PC に合わせればインストールは完了です。仮想マシン の動作環境を確認してみると、

# isainfo
amd64 i386
#
# psrinfo -vp
The physical processor has 1 virtual プロセッサ (0)
  x86 (AuthenticAMD family 15 model 72 step 2 clock 1600 MHz)
        AMD Turion(tm) 64 X2 Mobile Technology TL-50
The physical processor has 1 virtual プロセッサ (1)
  x86 (AuthenticAMD family 15 model 72 step 2 clock 1600 MHz)
        AMD Turion(tm) 64 X2 Mobile Technology TL-50
#

ちょっと予想外でしたが、32bit の Windows XP 上で確かに 64-bit Solaris が動作しています。

ネットワークはどうでしょうか。

# ifconfig -a
lo0: flags=2001000849 mtu 8232 index 1
        inet 127.0.0.1 netmask ff000000
e1000g0: flags=1000843 mtu 1500 index 2
        inet 192.168.159.10 netmask ffffff00 broadcast 192.168.159.255
        ether 0:c:29:8d:6a:21

Intel PRO/1000 がエミュレーションされているようです。

ディスクの inquiry データは format コマンドで見ると次の通りです。

# format
Searching for disks...done

AVAILABLE DISK SELECTIONS:
       0. c1t0d0 
          /pci@0,0/pci1000,30@10/sd@0,0
Specify disk (enter its number): 0
selecting c1t0d0
[disk formatted]
....
format>
format> inq
Vendor:   VMware,
Product:  VMware Virtual S
Revision: 1.0
format>

参考までに prtdiag の結果はこんな感じです。

# prtdiag -v
System Configuration: VMware, Inc. VMware Virtual Platform
BIOS Configuration: Phoenix Technologies LTD 6.00 04/17/2006

==== Processor Sockets ====================================

Version                          Location Tag
-------------------------------- --------------------------
                                 CPU socket #0
                                 CPU socket #1

==== Memory Device Sockets ================================

Type    Status Set Device Locator      Bank Locator
------- ------ --- ------------------- --------------------
DRAM    in use 0   RAM slot #0         RAM slot #0
DRAM    in use 0   RAM slot #1         RAM slot #1
DRAM    in use 0   RAM slot #2         RAM slot #2
DRAM    empty  0   RAM slot #3         RAM slot #3

==== On-Board Devices =====================================
VMware SVGA II
ES1371

==== Upgradeable Slots ====================================

ID  Status    Type             Description
--- --------- ---------------- ----------------------------
0   unknown   ISA              ISA Slot J8
0   unknown   ISA              ISA Slot J9
0   unknown   ISA              ISA Slot J10
1   in use    PCI              PCI Slot J11
2   in use    PCI              PCI Slot J12
3   in use    PCI              PCI Slot J13
4   in use    PCI              PCI Slot J14
#

パワーのある PC なら仮想マシンをいくつも立ち上げて仮想クライアント サーバーシステムや仮想グリッドコンピューティングなども可能です。皆さん も是非 PC に Solaris 仮想マシンをインストールして今までに無い快適な Solaris ライフを楽しんでください。


http://blogs.sun.com/yappri/date/20061121 2006年 11月 21日 火曜日

ZFS のレプリカを作成する

今回は、ZFS のファイルシステムを筐体間でレプリカを作成する方法を 紹介します。

ZFS は、ファイルシステムのスナップショットをバックアップ/リストアする 機能を備えており、これを使う事でファイルシステムのリモートコピーを作成す る事ができます。 さらに、ZFSはスナップショットの差分バックアップも取得可能なので、 バックアップ/リストアする為のデータ量を最小限に抑える事も可能です。



それでは、実際にファイルシステムのレプリカを作成してみましょう。
今回は、motoサーバにある pool/testdata1 ファイルシステムを、sakiサーバ の pool/testdata2 にレプリカを作成してみます。

このテストを行う前提環境として、ファイルシステムのレプリカ情報を ssh で自動 転送する為に、root 権限で ssh の自動ログインが可能な環境を構築する必要があります。

<Step.1>
まずは、コピー元のサーバ(moto)にて最新のスナップショット(pool/testdata1@snap-1) を作成します。
moto# zfs snapshot pool/testdata1@snap-1
<Step.2>
最初の一回だけ ZFS pool 内の全データをコピー先サーバ(saki)に転送します。
moto# zfs send pool/testdata1@snap-1 | ssh saki zfs recv pool/testdata2@snap-1
この時点でコピー元サーバ(moto)のスナップショット testdata1@snap-1 がコピー先サーバ(saki)に 反映されました。
<Step.3>
ここで差分を作成する為に pool/testdata1ファイルシステム内に新規ファイルを数個作成します。
<Step.4>
最新ファイルシステムのスナップショット(pool/testdata1@snap-2)を作成します。
moto# zfs snapshot pool/testdata1@snap-2
<Step.5>
差分データ(snap-1と snap-2 の差分)を抽出してレプリカを作成します。
もし、コピー先のファイルシステムに対して内容が変更され、前回のスナップショット (pool/testdata2@snap-1) と違う 内容になっていた場合、前回のスナップショットにロールバックする必要があります。
moto# zfs send -i pool/testdata1@snap-1 pool/testdata1@snap-2 | \
      ssh saki zfs recv pool/testdata2


これで正・副ファイルシステムの同期が可能になりました。これ以降は Step.4 〜 Step.5 を 繰り返す事により差分バックアップによる ZFS ファイルシステムの筐体間レプリカが作成可能 になります。

この手順は、リアルタイムでの同期は難しいですが、一日一回の同期をとる(バックアップをとる) 運用には向いているのではないでしょうか? X4500 などニアラインストレージとして使用する場合、 ファイルシステムのレプリカを別筐体に作成する運用も多いと思います。


[注意事項]
レプリケート実行中は、コピー先のファイルシステムはアンマウントされる為、 アンマウントができない状態の時は失敗します。

 [エラー内容]

cannot unmount '/pool/testdata2': デバイスは使用中です
cannot receive: dataset is busy
cannot mount '/pool/testdata2': directory is not empty


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