SitefinderOracle and Sun
Secure Search

BigAdmin System Administration Portal
Solaris Containers 上でのアプリケーションのQA(Quality Assurance)
Print-friendly VersionPrint-friendly Version

Solaris Containers 上でのアプリケーションの QA(Quality Assurance)

伊草英雄, 2008年

Sun の仮想化技術の一つ、Solaris Containersは 2つの構成要素を持っています:システムの資源管理とその実行環境であるゾーン(Zone) です。 また、ゾーンには通常の Solaris の環境として使用される大域ゾーンと仮想化の環境として使用される非大域ゾーンがあります。 Solaris のアプリケーションを非大域ゾーンで動かす場合、どのような動作保証(QA) のテストをしたらよいのでしょうか?

ゾーン上でのアプリケーションテストの流れと注意点

以下にアプリケーションのテストの流れと注意点について記述します。

  1. アプリケーション用の Solaris Containers の動作環境の決定。

    テスト環境の作成の際にはアプリケーションが動作する非大域ゾーンの動作環境を決定する必要があります。
    Solaris Containers の資源管理はシステム資源を各々のゾーンに割り当てます。 例えば、最低限の CPU の量を保証する、特定の CPU を 1つのアプリケーションに割り当てる、 また、幾つかのアプリケーションで CPU を共有することが可能です。 この資源管理により各ゾーン上のアプリケーション環境も制限されることになります。

    ここではデフォルトの環境での動作確認を説明しますが、動作確認のために非大域ゾーンに制限を加えたい場合、『Solaris のシステム管理』の『資源管理』を参照してください。

  2. Solaris 上に zonecfg(1) と zoneadm(1) を使用してゾーンの環境を作成する。

    • デフォルトでは大域ゾーンの /lib, /platform, /sbin, /usr の ディレクトリは非大域ゾーンからは書き込みができません。 非大域ゾーンからアプリケーションが これらのディレクトリにファイルを書き込む場合はデフォルトの設定ではエラーになります。 (Solaris Containers の設定の変更で非大域ゾーンから書き込み可能にすることもできますが アプリケーション側で書き込み先を変更することをお勧めします。)

    • ゾーンの環境設定がアプリケーションの動作に影響します。

      zonecfg(1M)コマンドでアプリケーション用に環境設定をします。

      • inherit-pkg-dir – ゾーンへループバックマウントするシステムディレクトリ

      • fs – 大域ゾーンから非大域ゾーンへ export するファイルシステム

      • device – ゾーンで使用するデバイス

      • net – ゾーンで使用するネットワーク

      • その他


    以下はゾーン名が demo1、IP アドレスが 111.111.111.111のゾーン作成の例です。

    アプリケーションインストール用の CD-ROM のデバイスも追加してあります。

    global# zonecfg -z demo1

    demo1: No such zone configured

    Use 'create' to begin configuring a new zone.

    zonecfg:demo> create

    zonecfg:demo> set zonepath=/export/demo1

    zonecfg:demo> add net

    zonecfg:demo:net> set physical=hme0 ← ifconfig -a で調べる

    zonecfg:demo:net> set address=111.111.111.111

    zonecfg:demo:net> end

    zonecfg:demo: set dir=/cdrom

    zonecfg:demo:fs> set special=/cdrom

    zonecfg:demo:fs> set type=lofs

    zonecfg:demo:fs> add options [ro,nodevices]

    zonecfg:demo:fs> end

    zonecfg:demo> verify

    zonecfg:demo> commit

    zonecfg:demo> ^D

    global# zonecfg -z demo1 info zonepath

    zonepath: /export/demo1

    global# zoneadm -z demo1 install

    global# zoneadm -z demo1 boot


  1. アプリケーションのテストのための動作環境の確認をする。

    他のアプリケーションまたは特別なライブラリを使用しているかどうか確認:

    テストにおいて他のアプリケーションやツールを使用する場合はそのアプリケーションやツールが Solaris Containers に対応しているか確認をしておきます。

    • DB

    • Web server

    • 他の特殊なライブラリ

    これらを使用している場合はそのアプリケーションも Solaris Containers に対応しているか確認しましょう。 (一般的な DB や Web Server は Solaris Containers に対応しています。)

  1. アプリケーションのインストールのテストを行う。

    パッケージの確認:

    • 実際にアプリケーションをインストールして必要なファイルが正しくインストールされているか確認します。

      注意点

      • インストール時にエラーが出力されないか確認をします。

      • 非大域ゾーンにパッケージを追加する際には pkginfo(4) の SUNW_PKG_ALLZONES と SUNW_PKG_HOLLOW の変数の値が影響します。

  1. Solaris Containers 上でアプリケーションのそれぞれの機能のテスト

    実際にアプリケーションを起動してエラーがないか確認をします。
    既にアプリケーションを作成した際のテスト項目がある場合はその項目を使用して非大域ゾーンでテストを行います。

    後で説明をする srcheck ツールを使用する方法もあります。

    注意点

    • アップデートリリース毎に Solaris Containersの機能が向上されています。

      テストの前には『Solaris 10 の概要 』のゾーンに関する記述をチェックしましょう。

    • ネットワークについて

      • トランスポート層の下の層への直接的なアクセスは非大域ゾーンでは許されません。

      • 以下のネットワーク機能は基本的に大域ゾーンの管理者が使用することとなります。

        Routing, IP multipathing (IPMP), DHCPクライアント、/etc/system 等を利用したネットワークチューニング

    • ファイルシステムについて

      • /proc ファイルシステムは 同じゾーン内のプロセスだけを表示します。

  1. パフォーマンスのテストを行います

    大域ゾーンでアプリケーションを起動した場合とパフォーマンスを比較します。


srcheck について

srcheck と言う Solaris 上での動作環境のチェックをするツールがあります。 これにより Solaris Containers 上でのアプリケーションの動作確認を行うことができます。チェックされるのは C, C++, shell スクリプトの以下の項目です。

  • API

  • ABI

  • デバイス

  • コマンド

起動方法

  1. 以下からツールをダウンロードします

ダウンロードのためには無料登録が必要となります。

  1. srcheck_install.sh を root で大域ゾーンにインストールします

# sh srcheck_install.sh

表示される手順に従っていくとインストールが終了します。

  1. 例えばアプリケーション: App を srcheck でチェックする場合は以下のように行います。

    Global% /opt/srcheck/bin/srcheck -n App -i App_dir -t 300 -z my-zone

    • srcheck が default でインストールされるのは /opt/srcheck です

    • -i : アプリケーションが置いてあるディレクトリ

    • -t : 秒 (テストを行う時間を指定します)

    • -z: ゾーン名

  1. 指定した時間内にゾーン内でアプリケーションを動作させます。

my-zone% App

  1. 結果は指定した時間後に /tmp/srcheck.????(process ID)/summary_report.txt に出力されます。

    以下の例は、使用している shell スクリプトには問題がないですが、バイナリにおいて互換性の問題が非大域ゾーンで出る可能性があることを示しています。


    % cat srcheck.22148/summary_report.txt
    ...

    Solaris 10 COMPATIBILITY - SUMMARY REPORT

    Source code analysis - "shell" code: ISSUES: 0 OCCURRENCES: 0

    Binary code analysis - removed interfaces, s10zones check: ISSUES: 1
    2 binary objects had no problems with obsoleted libs/symbols.
    1 binary objects had no problems with ZONE COMPATIBILITY issues.
    1 potential local ZONE COMPATIBILITY issues detected.
    details:
    /tmp/srcheck.22148/private/srcheck_scan/reports/srcheck.abiscan.log
    ...

    問題の出た部分を確認しましょう。 また、使用しているシステムコール、アプリケーションによるファイルの書き込みの場所も出力されます。 アプリケーションの使用しているシステムコールに問題がないか、書き込みのできない場所に書き込みをしようとしていないか確認をしましょう。


作業工数について

工数については基本的に一般のアプリケーションと同等のテストを Solaris Containers 上で行うため、そのアプリケーションの一般の QA の工数+α と考えてください。

Solaris Containers に慣れている場合は +αの部分はそれほど多くはないですが、慣れていない場合は Solaris Containers の環境構築の時間等を含める必要があります。また、パフォーマンステストを行う場合、大域ゾーンと非大域ゾーンでの比較の為の工数が増えることになります。


参照

Solaris Containers 用に特別な項目に関しての QAを行う必要がある場合は以下の Solaris Containers FAQ や Solaris Containers のマニュアルを参照してください。


About the Author

Hideo Igusa is a technical consultant from the ISV Engineering APAC Team in Sun who has 18 years experience in software development and technical consulting. He provides technical consultation to the ISVs in Japan.

BigAdmin
  
 
BigAdmin Solaris 10 Survey
 
Oracle - The Information Company