What You See Is What You Get Element

Oracle Solaris 11.2カーネル・ゾーンおよびUnified Archivesを使用したSAS® 9.4のデプロイ

Maureen Chew著

Oracle Solaris 11.2のカーネル・ゾーンでSAS環境を実行する方法と、Oracle SolarisのUnified Archivesを使用して簡単にカーネル・ゾーンをプロビジョニングして複製する方法について説明します。


2014年5月公開


目次
Oracle Solarisカーネル・ゾーン (Oracle Solaris Kernel Zones)について
カーネル・ゾーンがSASのデプロイに関係する理由
最小限のパフォーマンスへの影響
カーネル・ゾーンの作成手順
Oracle Solaris Unified Archivesを使用したクローニングとデプロイ
まとめ
付録A:Oracle Solaris 11.1からOracle Solaris 11.2へのアップグレード
付録B:ゾーンの削除
参考資料
著者について


Oracle Solarisカーネル・ゾーン(Oracle Solaris Kernel Zones)について

Oracle Solaris 11.2のカーネル・ゾーンは、物理ドメイン(オラクルのSPARC M5-32サーバーとSPARC M6-32サーバー上のPDOM)や物理パーティション(オラクルのFujitsu M10サーバー上のPPAR)、Oracle VM Server for SPARC、論理ドメイン(LDoms)、Oracle Solaris Zonesなどの、その他の仮想化テクノロジーを補完する機能です。

Oracle Solarisカーネル・ゾーンは、ホストOSの"ゲスト"として実行されるという点において通常のゾーンと似ています。しかし、カーネル・ゾーンは実行カーネルをホスト・カーネルと共有する代わりに、ホスト(グローバル)Oracle Solarisインスタンスに対するタイプ2のVirtual Machine Manager(VMM)ゲストとして実行されます。タイプ2のVMMゲストはベアメタル上で直接稼働するのではなく、OS(ホスト)上で稼働します。

この記事についてコメントする場合は、リンクをFacebookのOTN Garageのページに投稿してください。同様の記事を共有する場合は、FacebookまたはTwitterに投稿してください。みんなで議論しましょう。

Oracle Solarisカーネル・ゾーンは、独立したカーネルと独立したアップグレードおよびパッチ・レベルを維持できる機能を提供します。言い換えると、グローバル・ゾーンに依存しない個別のOSバージョンを維持できます。カーネル・ゾーンを設定するための最小要件はOracle Solaris 11.2ですが、カーネル・ゾーン内にOracle Solaris 10ゾーンを作成することはできます。また、Oracle Solaris 11.2でOracle Solaris 12のカーネル・ゾーンをホストできるようになると予想されています。

現在、カーネル・ゾーンはsun4vアーキテクチャ(オラクルのSPARC T4、SPARC T5、SPARC M5、またはSPARC M6プロセッサベースのサーバーとFujitsu M10サーバーなど)上とx64アーキテクチャ(インテルNehalem(VT-x/EPT)またはAMD Barcelona(AMDv/NPT)ベースのサーバーなど)上でサポートされています。SAS 9.3および9.4は、SPARCベースとx64ベースの両方のアーキテクチャのOracle Solaris 10以降でサポートされています。

バージョンの異なるSASとOracle Solarisが同一システム上でホストされるアーキテクチャの例

図1:バージョンの異なるSASとOracle Solarisが同一システム上でホストされるアーキテクチャの例

カーネル・ゾーンがSASのデプロイに関係する理由

次のケースでは、カーネル・ゾーン機能がSASアプリケーションのデプロイに最適であるか、または必須になります。

  • OS要件が異なるためにその他のアプリケーションを統合できない場合
  • ストレージ・デバイスへの直接的な排他アクセスが必要である場合
  • Oracle Solaris DTraceやその他のカーネルベースのパフォーマンス・ツールおよびプロファイリング・ツールへのアクセスが必要である場合
  • 日付や時間設定の変更機能などのカーネル機能にアクセスする必要がある場合、または/dev構造へのアクセスが必要な場合
  • 新しいインタフェースの習得を避けたい場合(カーネル・ゾーンでは、ゾーンに対して使用できるものと同じCLIコマンドが使用されます)

カーネル・ゾーンをOracle Solaris 11のブート環境(BE)とともに使用すると、本番、テスト、開発のすべての環境で単一のサーバーを統合テスト・サーバーとして使用でき、単一のシステム上にある複数の環境に対して独立したパッチ適用プロセスやアップグレード・プロセスを同時に実行できます。

さらに、複雑なアップグレードやテスト・シナリオを実行するための、その後の本番システムへのデプロイが容易に実行できます(実績のあるテスト環境を完全なカーネル・ゾーン単位としてクローニングまたは再デプロイできます)。 また、本番システムで問題が発生した場合、テスト・システムにこの環境をクローニングしてプロビジョニングすることで、デバッグを目的とした環境の複製が大幅に容易になります。

最小限のパフォーマンスへの影響

図2に示すように、カーネル・ゾーンでのSASテストに対するパフォーマンス・テストでは、ベースライン・テストに対するオーバーヘッドはほとんど(または、まったく)発生しませんでした。 大量のCPUやI/O、メモリを使用する40回の標準SASテストが、はじめはグローバル・ゾーンで、次にカーネル・ゾーンで実行されました。ZFSプール内に構成されたSAN LUNは当初グローバル・ゾーンに接続されていましたが、後でエクスポートされ、カーネル・ゾーンに接続および再インポートされました。このため、それぞれのテスト実行において、I/O構成はまったく同じでした。

すべてのSASプログラムには、CPUCOUNT=4memsize=512MSASWORKは同じSAN LUNを指す)が設定されました。

2回の実行間で、合計時間と個別テストのどちらに対しても実質的なパフォーマンスの影響は確認されませんでしたが、実際の結果は異なる可能性があります。

パフォーマンス・テストの結果

図2:パフォーマンス・テストの結果

カーネル・ゾーンの作成手順

概要

カーネル・ゾーンの作成は非常に簡単です。 カーネル・ゾーンでは、カーネル・デバイス・ドライバを直接インストールして、専用のプライベート・ストレージを使用できます。

次の例で、如何に簡単にカーネル・ゾーンを作成できるかを示します。基本的な手順は次のとおりです。

  • 使用するZFSプールをアンマウントしてエクスポートします(この手順は省略可能であり、ここでは説明しません)。
  • 新しいカーネル・ゾーンを作成してプロビジョニングします。
  • インストール後のタスク(ゾーンのブート、新カーネル・ゾーンに対するネットワークID、ルート・パスワード、デフォルト・ユーザー、ネーム・サービス、ディレクトリ・サービス、タイムゾーン、日付/時間の設定、ZFSプールのインポートなど)を実行します。

新しいカーネル・ゾーンが実行中になったら、Oracle Solaris 11.2のUnified Archives機能を使用することで、簡単に環境をレプリケートできます。

この記事の例では、次のハードウェア環境が使用されました。

  • オラクルのSPARC T5-2サーバー、2x3.6GHz(ソケットあたり16コア、8スレッド/コア、128の仮想CPU)
  • 512GBのRAM
  • 3PAR SANストレージ上に構成されたOracle Solaris ZFSプール

付録Aに示した手早く簡単な手順を使用して、グローバル・ゾーンt5-ptest1がOracle Solaris 11.1からOracle Solaris 11.2にアップグレードされました。Oracle Solaris 11で導入されたブート環境(BE)は、ブート・ディスク用にOracle Solaris ZFSを使用することで容易に使用できます。Oracle Solaris 11のBEを使用して後続のアップグレードを実行するために、事前の計画や複雑な手順は必要ありません。

アップグレード用に新しいBEが作成され、この新しいBE上でOracle Solaris 11.2へのアップグレードが実行されました。完了後は、次の再起動時に新しいBEがアクティブになるよう指定されました。 この素早く簡単な再起動にかかった時間のみが、アップグレードに必要なダウンタイムでした。アップグレードがうまくいかなかった場合は、単純な1つのコマンドを使用するだけで、以前使用していた元のBEを再アクティブ化できます。BEは高性能であり、システム管理者に高い評価を受けています。

前提条件

カーネル・ゾーンの作成を始める前に、virtinfo(1M)コマンドを使用して、ハードウェア、ファームウェア、OSのレベルが適切であり、出力にkernel-zoneが含まれていることを確認します。SPARC T4プロセッサとSPARC T5プロセッサを使用したサーバーでは、より新しいファームウェア・バージョンが必要になる場合があります。

$ virtinfo
NAME            CLASS     
logical-domain  current   
non-global-zone supported 
kernel-zone     supported 
logical-domain  supported

カーネル・ゾーンの作成とプロビジョニング

リスト1に示したコマンドを使用して、t5kz1という名前の新しいカーネル・ゾーンを作成します。スクリプト内では、/repoにマウントされたローカル・リポジトリに対してパブリッシャが設定されています。 zoneadm installが実行されると、グローバル・ゾーンのデフォルト・パブリッシャからカーネル・ゾーンがプロビジョニングされます。

:カーネル・ゾーンはデフォルトで、1つの(仮想)CPU、2GBのRAM、16GBのブート・ディスク、ランダムMACアドレスが指定された1つのNICから構成されます。ここで使用する例では、これらのデフォルト値を増やしています。

#!/bin/sh
ZN=t5kz1
set -x

echo Configuring zone $ZN
zonecfg -z $ZN -f zone3.txt
echo
echo Installing zone $ZN
zoneadm -z $ZN install -x install-size=20g

echo
zoneadm -z $ZN boot

リスト1:カーネル・ゾーンの作成コマンド

リスト1に示したコマンドを変更することで、システムID/プロファイルを自動的に設定できます(Oracle Solarisがインストールされたシステム上にある/usr/share/auto_install/sc_profiles/sc_sample.xmlファイルの例を参照してください)。

実行するには、次のコマンドを使用する代わりに

zoneadm -z $ZN install -x install-size=20g

-cの指定を含む次のコマンドを使用します。

zoneadm -z $ZN install -x install-size=20g -c /usr/share/auto_install/sc_profiles/sc_mysite.xml

リスト1に示したコードは、zone3.txtというゾーン構成ファイルを参照しています。このファイルをリスト2に示します。ここでは次のカスタマイズが実行されます。

  • メモリ割当てサイズを256GBに設定する。
  • 仮想CPUを128または16コア(SPARC T5プロセッサベースのサーバーでは1ソケット)に設定する。
  • 最近エクスポートされたZFSプールのLUNを取り込む。
create -b -t SYSsolaris-kz
set autoboot=true
select capped-memory
set physical=256G
end

add dedicated-cpu
set ncpus=128
end

add device 
set match=/dev/rdsk/c14t21220002AC001593d8
end
add device 
set match=/dev/rdsk/c14t21220002AC001593d9
end
add device 
set match=/dev/rdsk/c14t21220002AC001593d10
end
add device 
set match=/dev/rdsk/c14t21220002AC001593d11
end
add device 
set match=/dev/rdsk/c14t21220002AC001593d12
end
add device 
set match=/dev/rdsk/c14t21220002AC001593d13
end
add device 
set match=/dev/rdsk/c14t21220002AC001593d14
end
add device 
set match=/dev/rdsk/c14t21220002AC001593d15
end

verify
commit
exit

リスト2:zone3.txtファイル

カーネル・ゾーンの作成結果を図3に示します。

カーネル・ゾーンの作成結果

図3:カーネル・ゾーンの作成結果

インストール後のタスク

リスト1に示したコードを実行してゾーンが起動されたら、zlogin -C t5kz1コマンドを実行してコンソールのログインを有効化します。この時点で、システムはsysconfig(1M)を実行します。これにより、ネットワークID、ルート・パスワード、デフォルト・ユーザー、ネーム・サービス、ディレクトリ・サービス、タイムゾーン、日付/時間などの設定が可能になります。

次のコマンドを使用して、この記事の構成例で使用された、以前からあったZFSプールをインポートすると、以前使用されていたものと同じマウント・ポイントへZFSファイル・システムが自動的にマウントされます。

root# zpool import

SAS Display Manager System(DMS)を実行するには、libXm.soをホストするMotifパッケージを個別にインストールする必要があります。カーネル・ゾーンの作成時にこのパッケージがグローバル・ゾーンにインストールされていた場合でも、このパッケージはデフォルトではインストールされません。このパッケージをインストールするには、次のコマンドを実行します。

root# pkg install motif

もう1つのインストール後のタスクは、ZFSファイル・システムのキャッシュ(適応型置換キャッシュ(ARC))にどれだけのメモリを割り当てるのかを検討することです。一般的な目安はなく、デフォルト値は妥当なものですが、大量メモリ消費の管理を総体的に考慮する必要があります。このパラメータを設定するには、ZFSに割り当てる量の半分の値をzfs_arc_maxに指定します。次に例を挙げます。

# echo "set zfs:zfs_arc_max=0x40000000" >> /etc/system

# reboot

Oracle Solaris Unified Archivesを使用したクローニングとデプロイ

クローンを作成するため、グローバル・ゾーン(t5-ptest1)から次の例が実行されました。デモのため、結果のアーカイブは同じSPARC T5-2サーバーにデプロイされましたが、カーネル・ゾーンをサポートする同様のアーキテクチャ(ここではSPARC)を持つ任意のシステムにデプロイできます。

Unified Archivesには、ZFSの送受信ペイロード・ストリームの形式ですべてのプロビジョニング情報が含まれます。これは非常に強力な機能であり、元のシステム/ゾーンと受信側のシステム/ゾーンでOSリビジョン・レベルが一致する必要はありません。図4に、Unified Archives機能がデプロイ・オプションに対して提供する柔軟性を示します。

Unified Archivesが提供するデプロイ・オプション

図4:Unified Archivesが提供するデプロイ・オプション

Unified Archivesを管理するには、archiveadm(1M)コマンドを使用します。アーカイブには、次の2種類があります。

  • クローン・アーカイブは最新のBEのみを含み、"sysunconfig"状態にあります。
  • リカバリ・アーカイブはすべてのBEを含み、"sysconfig"状態を維持します。

カーネル・ゾーン(t5kz1)のアーカイブを作成するとき、このゾーン自体が実行中である必要があります。次の例では、リカバリ・アーカイブではなくクローン・アーカイブを作成します。

クローンの作成

クローンを作成するには、リスト3に示したコマンドを実行します。

root# archiveadm create /z0/t5kzclone.uar -z t5kz1

Initializing Unified Archive creation resources...
Unified Archive initialized:/z0/t5kzclone.uar
Logging to:/system/volatile/archive_log.6260
Executing dataset discovery...
Dataset discovery complete
Creating install media for zone(s)...
Media creation complete
Preparing archive system image...
Beginning archive stream creation...
Archive stream creation complete
Beginning final archive assembly...
Archive creation complete
 
 
root# ls -l /z0/t5kzclone.uar

total 12074523
-rw-r--r--   1 root     root     6177536000 Apr 24 15:47 t5kzclone.uar
 
 
root# archiveadm info t5kzclone.uar
Archive Information
          Creation Time:2014-04-24T19:30:35Z
            Source Host:t5-ptest1
           Architecture:sparc
       Operating System:Oracle Solaris 11.2 SPARC
      Deployable Systems: t5kz1
 
root# archiveadm info -v t5kzclone.uar
Archive Information
          Creation Time:2014-04-24T19:30:35Z
            Source Host:t5-ptest1
           Architecture:sparc
       Operating System:Oracle Solaris 11.2 SPARC
       Recovery Archive:No
              Unique ID:265382ed-a859-4a29-aaac-cc4815632a1c
        Archive Version:1.0
 
Deployable Systems
           't5kz1'
             OS Version:0.5.11
              OS Branch:0.175.2.0.0.36.1
              Active BE:solaris-3
                  Brand:solaris-kz
            Size Needed:12.8GB
              Unique ID:7cdf3f2f-bae6-cc99-a565-dc27a2f03139
               AI Media:0.175.2_ai_sparc.iso

リスト3:クローンの作成

2番目のカーネル・ゾーン(t5kz2)をプロビジョニングするため、この時点で、元のカーネル・ゾーン(t5kz1)を停止する必要があります。プロビジョニングされたtkz1はシステム・リソースの約半分を占め、t5z2tkz1と同じサイズになるように設定されているため、両方を同時に実行するとリソースの超過割当てにつながります。

次のコマンドを実行して、グローバル・ゾーンからt5kz1を停止します。

root# zoneadm -z t5kz1 shutdown

新しいカーネル・ゾーンのデプロイ

Unified Archivesからゾーン・クローンをデプロイするために必要なコマンドは、zonecfgzoneadmの2つのみです(リスト4を参照)。 以下のzonecfgコマンドとzoneadmコマンドでは、2つの-zパラメータが指定されています。t5kz2が新しいゾーンであり、t5kz1が元のゾーンです。 Unified Archivesを使用してすべてのゾーンをアーカイブすることも、任意のサブセットをアーカイブすることもできます。 ここでは、アーカイブに1つのゾーンしか含まれませんが、2番目の-zにクローンの対象となるゾーンを指定します。

#!/bin/sh
set -x

zonecfg -z t5kz2 create -a /z0/t5kzclone.uar -z t5kz1
echo
zoneadm list -icv
echo
zoneadm -z t5kz2 install -x install-size=60g -a /z0/t5kzclone.uar -z t5kz1

リスト4:クローンのデプロイ

ルートのinstall-sizeパラメータが元のデプロイよりも大きい点に注意してください。ここで示した単純な例で扱っていない事項に、スワップ・デバイスとダンプ・デバイスのロケーションと領域の正しいサイズ設定があります。 256GBのゾーンの場合、5GBという初期のスワップ構成はSASに対して十分ではありません。mmap(2)コマンドを使用してSASがメモリ割当てを行う場合、スワッピングが起こるかどうかに関係なく、スワップ予約が必要です。このため、RAM構成に比例したスワップ・サイズを考慮に入れる必要があります。同様に、ダンプ・デバイスは通常、ルート・パーティションと同じロケーションにはないファイル・システム上に割り当てられます。 Unified Archivesを使用したデプロイでは、ルート・ファイル・システム上のメモリ構成に基づいてダンプ・デバイスが割り当てられます。

まとめ

Oracle Solarisのカーネル・ゾーンとUnified ArchivesはSAS環境に対して、次のような一般的なエンタープライズITの問題を解決するための優れた柔軟性を提供します。

  • 異なる(かつしばしば相反する)リビジョンとパッチ・レベルが必要とされる環境で、アプリケーションを統合する必要がある。
  • 簡単な方法でテスト環境から本番環境に(またその逆に)送信する必要がある。

カーネル・ゾーンおよびUnified Archivesは、仮想化オプションを完全に補完する強力な機能であり、容易にデプロイできます。

カーネル・ゾーン内でSASを実行する際に確認されたパフォーマンスへの影響はごくわずかです。カーネル・ゾーン内でSASを実行した場合のパフォーマンスは、従来のOracle Solaris ZonesでSASを実行した場合のパフォーマンスと同等になります。

付録A:Oracle Solaris 11.1からOracle Solaris 11.2へのアップグレード

追加のバックアップBEを作成してからアップグレードを実行するには、リスト5に示したコマンドを実行します。


root# beadm create solaris11.1
root# beadm list
BE                 Active Mountpoint Space  Policy Created          
--                 ------ ---------- -----  ------ -------          
solaris            -      -          8.49M  static 2013-06-27 17:33 
solaris-1          NR     /          43.73G static 2013-10-17 01:29 
solaris-1-backup-1 -      -          64.0K  static 2013-10-18 23:25 
solaris11.1        -      -          197.0K static 2014-04-10 13:02

root# pkg publisher  set-publisher  -g file:///repo/repo solaris

root# pkg publisher
PUBLISHER                   TYPE     STATUS P LOCATION
solaris                     origin   online F file:///repo/repo/

root# pkg update --accept  entire
Refreshing catalog 1/1 solaris...
Creating Plan (Solver setup)... 
Creating Plan (Finding local manifests):... 
Creating Plan (Download Manifests   0/807)...
Creating Plan (Committing Manifests):...
Creating Plan (Package planning:   1/811):...
Creating Plan (Merging actions):...
Creating Plan (Checking for conflicting actions):...
Creating Plan (Consolidating action changes):...
Creating Plan (Evaluating mediators):...
            Packages to remove:   4
           Packages to install:65
            Packages to update:742
           Mediators to change:   1
       Create boot environment:Yes
Create backup boot environment:No
...

DOWNLOAD                                PKGS         FILES    XFER (MB)   SPEED

data/docbook                           0/811       0/38051    0.0/803.2      --
data/docbook                           1/811       0/38051    0.0/803.2      --
system/scheduler/fss                   1/811       0/38051    0.0/803.2      --
system/scheduler/fss                   2/811       0/38051    0.0/803.2      --
file/slocate                           2/811       0/38051    0.0/803.2      --
file/slocate                           3/811       0/38051    0.0/803.2      ---
...
x11/xfs                              806/811   38013/38051  803.1/803.2   cache
x11/xfs/xfs-utilities                806/811   38013/38051  803.1/803.2   cache
x11/xkill                            807/811   38026/38051  803.1/803.2   cache
x11/xlock                            808/811   38032/38051  803.1/803.2   cache
x11/xmag                             809/811   38037/38051  803.2/803.2   cache
x11/xvidtune                         811/811   38051/38051  803.2/803.2   cache
Completed                            811/811   38051/38051  803.2/803.2    0B/s


PHASE                                          ITEMS

Removing old actions                         1/10476
Removing old actions                       942/10476
...
Installing new actions                    7727/23704
...
Updating modified actions                    1/36399
...
Updating package state database              working
...
Updating package state database                 Done
Updating package cache                         1/746
...
Updating image state                            Done
...
Creating fast lookup database                   Done

A clone of solaris-1 exists and has been updated and activated.
On the next boot the Boot Environment solaris-2 will be
mounted on '/'.Reboot when ready to switch to this updated BE.

root# beadm list

BE                 Active Mountpoint Space  Policy Created          
--                 ------ ---------- -----  ------ -------          
solaris            -      -          8.49M  static 2013-06-27 17:33 
solaris-1          N      /          14.69M static 2013-10-17 01:29 
solaris-1-backup-1 -      -          64.0K  static 2013-10-18 23:25 
solaris-2          R      -          46.91G static 2014-04-10 13:15 
solaris11.1        -      -          197.0K static 2014-04

リスト5:BEの作成とアップグレード

付録B:ゾーンの削除

ゾーンのプロビジョニング時に間違いがあった場合は、リスト6に示すコマンドを使用してゾーンを削除します。

#!/bin/sh
ZN=t5kz2
zoneadm list -icv
set -x
zoneadm -z $ZN uninstall -F
zonecfg -z $ZN delete -F 
zoneadm list -icv

リスト6:ゾーンの削除

参考資料

オラクルとSASのPartner Web Pageを参照してください。

次のOracle Solaris資料も参照してください。

著者について

MaureenはSASに常駐するオラクルのPrincipal Software Engineerであり、SAS製品とオラクル製品にまたがるすべてのテクノロジーと製品の集約について検討しています。Sunとオラクルで26年にわたる経験を持つMaureenは、現在、ノースカロライナ州チャペルヒルに居住しています。

リビジョン1.0、2014/05/07

フォロー先:
ブログ | Facebook | Twitter | YouTube