今さらといえば今さらですが、Solaris 10 上で既存の Solaris 8 環境を動かすべく検証してみました。
Solaris 8 on Solaris 10 ゾーンのメリット
それなりのメリットがなければこんな面倒な環境を構築しませんよね。- 最新のハードウェアで既存の Solaris 8 を動かすことが可能
・アプリケーションの都合で Solaris 10 にすぐには移行できない・・・
・Solaris 8 が稼動しているシステムが EOL/EOSL・・・ - ZFSとの連携
・ZFSファイルシステム上にSolaris 8コンテナをインストール 可能
・snapshotやcloneなどのZFS機能にも対応 - Solarisコンテナとの連携
・cloneやattach/detachなどのゾーン機能に対応
・cpu,memory,rctl,poolなどのリソース管理機能に対応 - DTraceとの連携
・Solaris 8 内のプロセスを Solaris 10 グローバルゾーンから DTrace で解析可能
使用機材とOSのバージョン
Solaris 8 2/02: Ultra10Solaris 10 8/07: Sun Fire T2000 (127111-01以上のパッチが必須)
準備
・Solaris 8 Containers 1.0 ソフトウェアのダウンロード・Solaris 8 マシン上で移植用のフラッシュアーカイブの作成
# flarcreate -n s8_0202 -c /var/tmp/Solaris8.flar※必要に応じて、-x オプションでアーカイブに不要なディレクトリを排除します。
上記の準備が終わったら、両ファイルとも Solaris 10 システムの適当な場所(/var/tmpなど)に置きます。
ソフトウェアのインストールと Solaris 8 ゾーンの作成
必要なファイルがそろっていることを確認します。# pwd /var/tmp # ls Solaris8.flar s8containers-1_0-06-solaris10-sparc.tar.gzs8containers-1_0-06-solaris10-sparc.tar.gzファイルを解凍・展開し、パッケージをインストールします。
# gunzip s8containers-1_0-06-solaris10-sparc.tar.gz # tar xvf s8containers-1_0-06-solaris10-sparc.tar x s8containers-1_0-06, 0 bytes, 0 テープブロック x s8containers-1_0-06/Product, 0 bytes, 0 テープブロック x s8containers-1_0-06/Product/SUNWs8brandr, 0 bytes, 0 テープブロック ...(以下省略) # cd s8containers-1_0-06 # ls Legal Product # cd Product # ls SUNWs8brandr SUNWs8brandu SUNWs8p2v # pkgadd -d . SUNWs8brandr (出力省略) # pkgadd -d . SUNWs8brandu (出力省略) # pkgadd -d . SUNWs8p2v (出力省略)Solaris 8 ゾーンを作成します。IPアドレスはグローバルゾーンと重複しないように適当に割り当てています。
# zonecfg -z s8-zone s8-zone: そのような構成済みゾーンはありません 'create' を使用して、新しいゾーンの構成を開始してください。 zonecfg:s8-zone> create -t SUNWsolaris8 zonecfg:s8-zone> set zonepath=/zones/s8-zone zonecfg:s8-zone> set autoboot=true zonecfg:s8-zone> add net zonecfg:s8-zone:net> set address=172.17.40.202/16 zonecfg:s8-zone:net> set physical=e1000g0 zonecfg:s8-zone:net> end zonecfg:s8-zone> exit # # zoneadm list -cv ID NAME STATUS PATH BRAND IP 0 global running / native shared - s8-zone configured /zones/s8-zone solaris8 shared #あらかじめ準備しておいた Solaris 8 環境のフラッシュアーカイブ /var/tmp/Solaris8.flar を使用して、先ほど構成したゾーンにインストールをかけます。
# zoneadm -z s8-zone install -u -a /var/tmp/Solaris8.flar
Log File: /var/tmp/s8-zone.install.850.log
Source: /var/tmp/Solaris8.flar
Installing: This may take several minutes...
Postprocessing: This may take several minutes...
Result: Installation completed successfully.
Log File: /zones/s8-zone/root/var/log/s8-zone.install.850.log
# zoneadm -z s8-zone boot
# zlogin -C s8-zone
[ゾーン 's8-zone' コンソールに接続しました]
(Solaris 8 ゾーンの初期設定は省略。通常のゾーンとほぼ同じ質問に答えるだけです。)
上記の設定をした後に、Solaris 8 ゾーンを再起動してログインします。
するとログに以下のようなメッセージがひたすら出ていることが確認できます。
# zlogin s8-zone [ゾーン 's8-zone' pts/3 に接続されました] Last login: Wed Apr 30 14:38:37 on pts/2 Sun Microsystems Inc. SunOS 5.8 Generic Patch October 2001 # # tail /var/adm/messages Apr 30 14:39:57 s8-zone kkcv: AF_UNIX bind(path: /dev/kkcv): Permission denied Apr 30 14:40:02 s8-zone cssd: [ID 602758 daemon.notice] starting ccv.sh (pid#20710) Apr 30 14:40:02 s8-zone cssd: [ID 179970 daemon.error] The process "kkcv.sh" has been exited with retcode#24320 Apr 30 14:40:02 s8-zone ccv: AF_UNIX bind(path: /dev/ccv): Permission denied Apr 30 14:40:07 s8-zone cssd: [ID 602758 daemon.notice] starting kkcv.sh (pid#20711) Apr 30 14:40:07 s8-zone cssd: [ID 179970 daemon.error] The process "ccv.sh" has been exited with retcode#24320 Apr 30 14:40:07 s8-zone kkcv: AF_UNIX bind(path: /dev/kkcv): Permission denied Apr 30 14:40:12 s8-zone cssd: [ID 602758 daemon.notice] starting ccv.sh (pid#20712) Apr 30 14:40:12 s8-zone cssd: [ID 179970 daemon.error] The process "kkcv.sh" has been exited with retcode#24320 Apr 30 14:40:12 s8-zone ccv: AF_UNIX bind(path: /dev/ccv): Permission denied上記エラーは日本語Solaris 8 環境をインストールイメージとして使用した場合に起こります。日本語インプットメソッド kkcv/ccv を利用しない時には、cssd(1M) を以下のように停止することにより、対応することが可能です。
(Solaris 8 ゾーン内で行う) # mv /etc/rc2.d/S90loc.ja.cssd /etc/rc2.d/_S90loc.ja.cssd # init 6今回はSolaris 8 ゾーン内でたいしたアプリを動かしていないので、上記設定でとりあえず問題なく Solaris 8 の稼動を確認できました。
# cat /etc/release
Solaris 8 2/02 s28s_u7wos_08a SPARC
Copyright 2002 Sun Microsystems, Inc. All Rights Reserved.
Assembled 18 December 2001
# uname -a
SunOS s8-zone 5.8 Generic_Virtual sun4v sparc SUNW,Sun-Fire-T200
以下のように Solaris 10 のグローバルゾーンから Solaris 8 ゾーンのプロセスも通常とゾーンと同じように確認できます。inetd などは当たり前ですが、Solaris 8 のプロセスになっていますね。
# ps -efZ | grep inetd global root 239 1 0 13:55:30 ? 0:02 /usr/lib/inet/inetd start global root 21971 21921 0 16:21:40 pts/2 0:00 grep inetd s8-zone root 21653 1 0 14:44:57 ? 0:00 /usr/sbin/inetd -s # ps -efZ | grep syslogd global root 368 1 0 13:55:35 ? 0:00 /usr/sbin/syslogd s8-zone root 21684 1 0 14:44:57 ? 0:00 /usr/sbin/syslogd global root 21973 21921 0 16:21:53 pts/2 0:00 grep syslogd

こんにちは
最近弊社でもsol8コンテナを動かすミッションを開始し現在検証中です。
早速なんですが、弊社の環境ではゾーンの構成を保存しようとすると以下の樣なエラーが出て保存できません。
環境に問題がある樣なのですが見当がつきません。
# zonecfg -z s8-zone
s8-zone: そのような構成済みゾーンはありません
'create' を使用して、新しいゾーンの構成を開始してください。
zonecfg:s8-zone> create -t SUNWsolaris8
zonecfg:s8-zone> set zonepath=/zones/s8-zone
zonecfg:s8-zone> set autoboot=true
zonecfg:s8-zone> add net
zonecfg:s8-zone:net> set address=XXX.XXX.XX.XXX/24
zonecfg:s8-zone:net> set physical=e1000g1
zonecfg:s8-zone:net> end
zonecfg:s8-zone> exit
s8-zone: 不明なブランドです。
s8-zone: 無効な文書
構成は保存されていません; 本当に終了します (y/[n])?
よろしければご助言頂くと助かります。
Posted by 坂田 on 5月月 19日, 2008年 at 07:01 午後 JST #
Solaris8コンテナのためのパッケージを追加されてますでしょうか?
pkginfo で SUNWs8brandr と SUNWs8brandu がインストールされているかもう一度確認してみてください。
Posted by harada on 5月月 19日, 2008年 at 07:28 午後 JST #
harada様対応ありがとうございます。
調べてみましたが、pkgのインストールに問題はなさそうです。
# pkginfo | grep SUNWs8brand
system SUNWs8brandr Solaris 8 Containers: solaris8 brand support (Root)
system SUNWs8brandu Solaris 8 Containers: solaris8 brand support (Usr)
Posted by 坂田 on 5月月 20日, 2008年 at 08:38 午前 JST #
ですよね。
Solaris8ブランドを認識していないので、基本的な部分だとは思うのですが、
OSのリリースとカーネルパッチはいかがでしょうか?
# cat /etc/release
# uname -a
あたりの情報でチェックできると思います。
Posted by harada on 5月月 22日, 2008年 at 10:08 午前 JST #
カーネルパッチの当て方に問題があったようです。
マニュアルには
patchadd -G 127111-01 (127111-11を当てています)とありましたが、この-Gオプションを付けていると
上手くパッチが当たらなかった樣です。
patchadd 127111-11 と実行した後ではちゃんとゾーンの構成を作ることが出来ました。
なんか腑に落ちませんが一応解決です。
アドバイスありがとうございました。
Posted by 坂田 on 5月月 22日, 2008年 at 11:53 午前 JST #
こんにちは
zoneを使用してSolaris9を構築しようと検証しています。
上記手順だとリソースの制限はどのようになるのでしょうか?
よろしくお願いします。
Posted by T2000 on 7月月 28日, 2008年 at 01:44 午後 JST #
Solaris 9 コンテナですね。(上の例は Solaris 8 コンテナですが・・・)
上記手順ではリソースの制限はかけておりませんので、
ゾーン上の Solaris 9 からシステム全体のリソース(CPU,メモリ,ディスク容量など)を使えてしまいます。
制限をかけるのであれば、zonecfg コマンドでの構成時に
dedicated-cpu, capped-cpu, capped-memoryなどを指定したり、
zonepathに指定するディレクトリを上限をコントロールできるボリューム上で管理すればよいと思います。
詳しくは zonecfg のマニュアルを参照してください。
Posted by harada on 7月月 28日, 2008年 at 02:27 午後 JST #
ありがとうございます。
質問内容が分かりにくく申し訳ありませんでした。
マニュアルを参照していたのですが、リソースの制限をかけなかった場合、上限等があるのかが見つからなかったため質問させていただきました。
制限をしなければシステム全体のリソースを利用できるとの回答で解決しました。
本当にありがとうございました。
Posted by T2000 on 7月月 28日, 2008年 at 03:13 午後 JST #