システムエンジニア・サポートエンジニアのためのSolaris/Javaトレーニングガイド Sun Training Guide (Solaris/Java)

トップページ | 技術情報 | トレーニング・セミナー情報 | キャンペーン情報 | 認定試験 | ニュース | 旅日記 | その他

今さらといえば今さらですが、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: Ultra10
Solaris 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.gz
s8containers-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 #

コメント
コメントは無効になっています。