Skip to main content

Fujitsu

Japan

まっちーの仮想化講座
第16回:Oracle Solaris 11ならオンラインで修正の適用ができます

2013年2月19日


 

Oracle Solaris 11では、IPS(Image Packaging System)という仕組みが導入されており、パッケージへの適用の修正は、パッチの適用ではなくパッケージの入れ替えになります。
IPSについては、こちらも合わせてご参照ください。

それに伴い、Solaris 10までのパッケージの修正は、パッチクラスター(PTF/FJ-RSPC)という形で提供されるパッチの集合体を適用していたのですが、Solaris 11ではパッチクラスタ―の代わりにSRU(Support Repository Update)と呼ばれる修正パッケージの集合体を適用して、パッケージを入れ替える方法に変更になりました。
そこで、今回はSolaris 11の環境にSRUを適用する方法をご紹介したいと思います。
今回は、Solaris 11.1のサーバにSRU12111(SRU1.4)を適用します。

(注)SRUは富士通ではSupportDesk-WebよりISO形式で提供しています。
SupportDeskサービスを契約していただくと、以下のWebサイトから入手できます。

SRUを適用するにはいくつか方法があるのですが、今回は媒体から直接SRUを適用する方法をご紹介します。
この方法は、すでに導入済みのサーバにSRUを適用する場合などに有効です。

SRUの準備

SRUはSupportDesk-Webよりダウンロードします。zip形式で圧縮されていますので、ダウンロード後、解凍します。ここでは、/data配下にダウンロードし、解凍しました。

Sol11.1# ls -lh /data/
total 755601
-rw-r--r--   1 root     root         11K 11月 21日  02:40 README
-rw-r--r--   1 root     root        369M 11月  8日  09:00 SRU12111.iso
-rw-r--r--   1 root     root         17K 11月 29日  10:42 SRU12111_README-01.txt
-rw-r--r--   1 root     root         16K 11月 29日  10:42 Solaris11_1_UPDATE_README-01.txt

SRUのマウントとpublisherの設定

では、SRUを適用していきたいと思いますので、まずはSRUのISOイメージをマウントします。
ちなみに、Solaris 10まではISOイメージをマウントするときは、lofiadm(1M)コマンドを使用して、ISOイメージをブロックデバイスに関連付けてからマウントする必要があったのですが、Solaris 11では直接mount(1M)コマンドでマウントできるようになりました。

Sol11.1# mount -F hsfs /data/SRU12111.iso /mnt
Sol11.1# ls /mnt

COPYRIGHT  NOTICES    README     repo

マウントしたISOイメージをpublisherとして設定します。publisherとはIPSパッケージの発行元です。今回はISOイメージをマウントしたディレクトリをpublisherとして設定します。

Sol11.1# pkg set-publisher -g file:///mnt/repo solaris
Sol11.1# pkg publisher

PUBLISHER                   TYPE     STATUS P LOCATION
solaris                     origin   online F file:///mnt/repo/
solaris                     origin   online F http://localhost/

publisherについては、こちらもご参照ください。

SRUの適用

準備ができましたので、pkg(1)コマンドを使用してSRUを適用します。まずはどのくらいの修正パッケージがあるのか確認しましょう。
pkg updateコマンドに-nオプションを付けて実行します。-nオプションを付けると、修正を適用しないで、修正するパッケージの数を確認することができます。

Sol11.1# pkg update -n
            Packages to update:  36
       Create boot environment: Yes
Create backup boot environment:  No

なお、-vオプションもつけることで、修正されるパッケージ名も確認することができます。

Sol11 .1# pkg update -nv
            Packages to update:        36
     Estimated space available:   7.77 GB
Estimated space to be consumed: 384.90 MB
       Create boot environment:       Yes
     Activate boot environment:       Yes
Create backup boot environment:        No
          Rebuild boot archive:       Yes

Changed packages:
solaris
  consolidation/SunVTS/SunVTS-incorporation
    0.5.11,5.11-0.175.1.0.0.14.0:20120416T200729Z -> 0.5.11,5.11-0.175.1.1.0.1.12:20121017T215531Z
・・・省略・・・

では、実際にpkg updateコマンドで修正パッケージを適用します。

Sol11.1# pkg update
            Packages to update:  36
       Create boot environment: Yes
Create backup boot environment:  No

DOWNLOAD                                PKGS         FILES    XFER (MB)   SPEED
Completed                              36/36     1246/1246    64.6/64.6    0B/s

PHASE                                          ITEMS
Removing old actions                         253/253
Installing new actions                       355/355
Updating modified actions                  2382/2382
Updating package state database                 Done
Updating package cache                         36/36
Updating image state                            Done
Creating fast lookup database                   Done

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

最後にメッセージが出てきました。
これは平たく言うと「新しいBoot Environment(BE)を作成して修正パッケージを適用したので、システムを再起動してBEを切り替えてください。」ということです。
「solaris」というBEのクローン「solaris-1」が自動で作成されて、「solaris-1」にSRUが適用されました。
BEはIPSと同様にSolaris 11の特長の一つで、Solaris 11では基本となる便利な機能です。BEの詳細や使い方などもこちらをご参照ください。

BEの状態を確認してみます。

Sol11.1# beadm list
BE        Active Mountpoint Space  Policy Created
--        ------ ---------- -----  ------ -------
solaris   N      /          140.0K static 2013-01-15 16:26
solaris-1 R      -          3.20G  static 2013-01-23 19:01

Active欄の「N」は現在稼働しているBE、「R」は次に起動するときに使われるBEです。SRUが適用されたBE「solaris-1」に「R」が表示されていることを確認します。
次に起動するBEを確認できたら、再起動してSRUが適用されたBEを有効にします。

Sol11.1# shutdown -y -g0 -i6

再起動後、BEの状態を確認します。

Sol11.1# beadm list
BE        Active Mountpoint Space Policy Created
--        ------ ---------- ----- ------ -------
solaris   -      -          8.12M static 2013-01-15 16:26
solaris-1 NR     /          3.26G static 2013-01-23 19:01

「solaris-1」に「N」と「R」が表示されていますので、今は「solaris-1」のBEからBootしていることが確認できます。

さて、今適用されているSRUのバージョンは、entireというパッケージの情報を確認することで確認できます。pkg infoコマンドで確認してみましょう。

Sol11.1# pkg info entire
          Name: entire
       Summary: entire incorporation including Support Repository Update (Oracle Solaris 11.1 SRU 1.4).
   Description: This package constrains system package versions to the same
                build.  WARNING: Proper system update and correct package
                selection depend on the presence of this incorporation.
                Removing this package will result in an unsupported system.  For
                more information see https://support.oracle.com/CSP/main/article
                ?cmd=show&type=NOT&doctype=REFERENCE&id=1372094.1.
      Category: Meta Packages/Incorporations
         State: Installed
     Publisher: solaris
       Version: 0.5.11 (Oracle Solaris 11.1 SRU 1.4)
 Build Release: 5.11
        Branch: 0.175.1.1.0.4.0
Packaging Date: 2012年11月06日 00時13分44秒
          Size: 5.46 kB
          FMRI: pkg://solaris/entire@0.5.11,5.11-0.175.1.1.0.4.0:20121106T001344Z

これでSolaris 11への修正パッケージの適用は完了です。

Solaris 10までは修正適用の際に、シングルユーザモードへの移行やバックアップが必要でしたが、Solaris 11では、IPSとBEの機能を活用することで、修正適用に伴う業務の停止は再起動だけになります。
また、もしSRU適用後にアプリケーションの動作などで不具合があったときには、BEを切り替える(今回の場合、BEを「solaris」に切り替える)ことで、修正適用前の状態に簡単に戻すことができます。

このように、Solaris 11ではSolaris 10までと修正の適用方法が変わりましたが、運用がより簡単になりましたね。

みなさんもぜひ富士通のSupportDeskサービスをご契約いただき、SRUを適用してみませんか。

■留意事項:

今回ご紹介した方法でSRUを適用すると、リリースリポジトリ(リポジトリサーバ)のパッケージよりもサーバにインストールされているパッケージの版数の方が新しくなるため、新たにリポジトリサーバからパッケージをインストールすることができなくなります。
もし、SRU適用後にパッケージを追加する可能性がある場合には、今回ご紹介した方法ではなくローカル環境にリリースリポジトリの複製(ローカルリポジトリ)を構築し、ローカルリポジトリのパッケージをSRUで更新してから、pkg updateを実施してください。この方法もこちらでご紹介していますので、ご参照ください。


応援メッセージはtwitterにて、ハッシュタグ #fjsparcOpen a new window までお願いします。