Solaris 10 5/08 インストールガイド (Solaris Live Upgrade とアップグレードの計画)

第 9 章 非大域ゾーンがインストールされているシステムにおける Solaris OS のアップグレード

この章では、Solaris Live Upgrade を使用して、非大域ゾーンがインストールされているシステムをアップグレードする方法について説明します。この章の内容は次のとおりです。

Solaris Live Upgrade によるアップグレードおよびインストール済みの非大域ゾーン (概要)

Solaris 10 8/07 リリース以降では、Solaris Live Upgrade を使用して、非大域ゾーンが含まれているシステムのアップグレードまたはパッチを行うことができます。システムに非大域ゾーンが含まれている場合は、アップグレードやパッチを追加するプログラムとして、Solaris Live Upgrade を推奨します。ほかのアップグレードプログラムでは、膨大なアップグレード時間が必要となる場合があります。これは、アップグレードの実行に要する時間が、インストールされている非大域ゾーンの数に比例して増加するからです。Solaris Live Upgrade を使ってシステムにパッチを適用する場合は、システムをシングルユーザーモードにする必要がないため、システムの稼動時間を最大限に活用できます。次のリストは、非大域ゾーンがインストールされているシステムに対応するための変更をまとめたものです。

Solaris ゾーンと Solaris Live Upgrade について

Solaris ゾーン区分技術は、オペレーティングシステムサービスの仮想化に使用され、安全で隔離されたアプリケーション実行環境を提供します。非大域ゾーンは、Solaris OS の 1 つの実体 (大域ゾーン) 内で作成される仮想化されたオペレーティングシステム環境です。非大域ゾーンを作成すると、そのアプリケーション実行環境で実行されるプロセスはシステムのほかの部分から隔離されます。

Solaris Live Upgrade は、現在稼動しているシステムを新しいスライス上にコピーするための仕組みです。非大域ゾーンがインストールされている場合は、大域ゾーンのファイルシステムとともにその非大域ゾーンを非アクティブブート環境にコピーできます。

図 9–1 に、大域ゾーンのファイルシステムとともに非アクティブブート環境にコピーされる非大域ゾーンを示します。

図 9–1 ブート環境の作成 – 非大域ゾーンのコピー

この図については本文中で説明しています。

図 9–2 に、非大域ゾーンが非アクティブブート環境にコピーされる様子を示します。

図 9–2 ブート環境の作成 – 非大域ゾーンからの共有ファイルシステムのコピー

この図については本文中で説明しています。

非大域ゾーンがインストールされている場合のブート環境の作成とアップグレード (作業)

次の節では、非大域ゾーンがインストールされている場合のブート環境の作成に関する情報とアップグレード手順について説明します。

非大域ゾーンが独立したファイルシステム上にある場合にブート環境を作成する

現在稼動しているブート環境から新しいブート環境を作成する方法は、1 つの例外を除いて、以前のリリースの場合と同じです。非大域ゾーン内の共有ファイルシステムに対して宛先ディスクスライスを指定できます。この例外は、次の条件のもとで発生します。

この独立したファイルシステムが新しいブート環境で共有されないようにするため、lucreate コマンドでは、非大域ゾーンの独立したファイルシステムに対して宛先スライスを指定できます。-m オプションの引数には、新しい省略可能フィールド zonename が追加されました。この新しいフィールドは、非大域ゾーンの独立したファイルシステムを新しいブート環境の個別のスライス上に配置します。非大域ゾーンに独立したファイルシステムを設定する方法の詳細は、zonecfg(1M) のマニュアルページを参照してください。


注 –

デフォルトでは、クリティカルファイルシステム (ルート (/)、/usr/opt ファイルシステム) 以外のすべてのファイルシステムが現在のブート環境と新しいブート環境との間で共有されます。このため、アクティブブート環境内の共有ファイルを更新すると、非アクティブブート環境のデータも更新されます。たとえば、/export ファイルシステムは共有ファイルシステムです。-m オプションと zonename オプションを使用すると、非大域ゾーンのファイルシステムが別のスライスにコピーされ、データは共有されません。このオプションは、zonecfg add fs コマンドを使って作成した非大域ゾーンのファイルシステムがブート環境間で共有されないようにします。


Procedure非大域ゾーンがシステムにインストールされている場合に Solaris Live Upgrade でアップグレードする (作業)

ここでは、非大域ゾーンがインストールされているシステムを Solaris Live Upgrade でアップグレードする詳しい手順について説明します。

  1. 必要なパッチをインストールします。

    http://sunsolve.sun.com で最新のパッチリストを確認してください。SunSolve の Web サイトで、infodoc 72099 を検索してください。

    1. SunSolveSM の Web サイトから、パッチリストを取得します。

    2. スーパーユーザーになるか、同等の役割になります。

    3. patchadd コマンドを使用してパッチをインストールします。


      # patchadd path_to_patches
      

      path_to_patches は、パッチが置かれているパスです。

    4. 必要に応じてシステムをリブートします。いくつかのパッチは、有効にするためにリブートする必要があります。

      x86 のみ: システムをリブートする必要があります。そうしないと、Solaris Live Upgrade は失敗します。


      # init 6
      
  2. 既存の Solaris Live Upgrade パッケージを削除します。

    3 つの Solaris Live Upgrade パッケージ SUNWluuSUNWlur、および SUNWlucfg は、Solaris Live Upgrade を使ってアップグレードするのに必要なソフトウェアを構成します。これらのパッケージには、既存のソフトウェア、新しい機能、およびバグ修正が含まれています。Solaris Live Upgrade を使用する前に、既存パッケージを削除しないで新しいパッケージをシステムにインストールすると、ターゲットリリースへのアップグレードは失敗します。


    # pkgrm SUNWlucfg SUNWluu SUNWlur
    
  3. Solaris Live Upgrade パッケージをインストールします。

    1. Solaris DVD または CD を挿入します。

      このメディアには、アップグレードの対象となるリリース用のパッケージが含まれています。

    2. インストールメディアまたはネットワークインストールイメージから、次の順序でパッケージをインストールします。


      # pkagadd -d path_to_packages SUNWlucfg SUNWlur SUNWluu
      

      次の例では、インストールメディアからパッケージがインストールされます。

      • SPARC システムの場合:


        # pkgadd -d /cdrom/cdrom0/s0/Solaris_10/Product SUNWlucfg SUNWlur SUNWluu
        
      • x86 システムの場合:


        # pkgadd -d /cdrom/cdrom0/Solaris_10/Product SUNWlucfg SUNWlur SUNWluu
        
  4. パッケージが正常にインストールされていることを確認します。


    # pkgchk -v SUNWlucfg SUNWlur SUNWluu
    
  5. 新しいブート環境を作成します。


    # lucreate [-A 'BE_description'] [-c BE_name] \
     -m mountpoint:device[,metadevice]:fs_options[:zonename] [-m ...] -n BE_name
    
    -n BE_name

    作成するブート環境の名前。BE_name は、システム上で一意となるように指定する必要があります。

    -A 'BE_description'

    (省略可能) ブート環境名 (BE_name) の説明を記述できます。記述の長さ、使用できる文字に制限はありません。

    -c BE_name

    アクティブブート環境に名前 BE_name を割り当てます。このオプションは省略可能で、最初のブート環境を作成する場合だけ使用されます。lucreate を初めて実行する場合に -c オプションを省略すると、デフォルトの名前が作成されます。

    -m mountpoint:device[,metadevice]:fs_options [:zonename] [-m ...]

    新しいブート環境のファイルシステム構成を vfstab で指定します。-m に引数として指定されるファイルシステムは、同じディスク上のファイルシステムでも、複数のディスク上のファイルシステムでも構いません。このオプションは、作成するファイルシステムの数だけ使用します。

    • mountpoint には、任意の有効なマウントポイント、またはスワップパーティションを示す – (ハイフン) を指定できます。

    • device フィールドには、次のいずれかを指定できます。

      • ディスクデバイスの名前。/dev/dsk/cwtxdysz の形式で表されます

      • Solaris ボリュームマネージャーのボリューム名。/dev/md/dsk/dnum の形式で表されます

      • Veritas Volume Manager のボリューム名。/dev/md/vxfs/dsk/dnum の形式で表されます

      • キーワード merged。指定されたマウントポイントのファイルシステムがその親とマージされることを示します

    • fs_options フィールドには、次のいずれかを指定できます。

      • ufs: UFS ファイルシステムを示します。

      • vxfs: Veritas ファイルシステムを示します。

      • swap: スワップファイルシステムを示します。スワップマウントポイントはハイフン (–) で表します。

      • 論理デバイス (ミラー) であるファイルシステムについては、いくつかのキーワードを使って、そのファイルシステムに対して実行するアクションを指定できます。論理デバイスの作成、論理デバイスの構成変更、論理デバイスの削除などを行うキーワードがあります。これらのキーワードの詳細は、「RAID-1 ボリューム (ミラー) を持つブート環境を作成する」を参照してください。

    • zonename は、非大域ゾーンの独立したファイルシステムが個別のスライス上に配置されるように指定します。このオプションは、そのゾーンの独立したファイルシステムが /zone1/root/export などの共有ファイルシステム内にある場合に使用します。このオプションは、そのゾーンの独立したファイルシステムを新しいスライスにコピーして、このファイルシステムが共有されないようにします。独立したファイルシステムは、zonecfg add fs コマンドを使って作成したものです。

    次の例では、newbe という新しいブート環境が作成されます。ルート (/) ファイルシステムは、c0t1d0s4 上に配置されます。現在のブート環境にある非大域ゾーンはすべて、新しいブート環境にコピーされます。zone1 という非大域ゾーンに対して個別のマウントポイントが c0t1d0s1 上に指定されます。


    注 –

    デフォルトでは、クリティカルファイルシステム (ルート (/)、/usr/opt ファイルシステム) 以外のすべてのファイルシステムが現在のブート環境と新しいブート環境との間で共有されます。/export ファイルシステムは共有ファイルシステムです。-m オプションを使用すると、非大域ゾーンのファイルシステムが別のスライス上に配置され、データは共有されません。このオプションは、zonecfg add fs コマンドを使って作成したゾーンのファイルシステムがブート環境間で共有されないようにします。詳細は、zonecfg(1M) のマニュアルページを参照してください。



    # lucreate -n newbe -m /:/dev/dsk/c0t1d0s4:ufs -m /export:/dev/dsk/c0t1d0s1:ufs:zone1
    
  6. ブート環境をアップグレードします。

    アップグレードに使用するオペレーティングシステムイメージはネットワークから取得します。


    # luupgrade -u -n BE_name -s os_image_path
    
    -u

    ブート環境のオペレーティングシステムイメージをアップグレードします。

    -n BE_name

    アップグレード対象のブート環境の名前を指定します。

    -s os_image_path

    オペレーティングシステムイメージが置かれているディレクトリのパス名を指定します。

    この例では、新しいブート環境 newbe がネットワークインストールイメージからアップグレードされます。


    # luupgrade -n newbe -u -s /net/server/export/Solaris_10/combined.solaris_wos
    
  7. (省略可能) ブート環境がブート可能であることを確認します。

    lustatus コマンドは、ブート環境の作成が完了してブート可能であるかどうかを報告します。


    # lustatus
    boot environment   Is        Active  Active     Can	    Copy
    Name               Complete  Now	 OnReboot   Delete	 Status
    ------------------------------------------------------------------------
    c0t1d0s0            yes      yes      yes       no      -
    newbe               yes       no       no       yes     -
  8. 新しいブート環境をアクティブにします。


    # luactivate BE_name
    

    BE_name は、アクティブにするブート環境の名前を示します。


    注 –

    x86 ベースのシステムの場合、ブート環境をはじめてブートするときには luactivate コマンドを使用する必要があります。2 回目以降は、GRUB メニューからブート環境を選択すれば、アクティブにできます。手順については、「x86: GRUB メニューを使ったブート環境のアクティブ化」を参照してください。


    ブート環境を正常にアクティブにするためには、そのブート環境がいくつかの条件を満たしている必要があります。詳細は、「ブート環境のアクティブ化」を参照してください。

  9. リブートします。


    # init 6
    

    注意 – 注意 –

    リブートには initshutdown コマンドを使用してください。reboothaltuadmin コマンドを使用すると、ブート環境の切り替えは行われません。最後にアクティブになっていたブート環境が再びブートされます。


    ブート環境が切り替わり、新しいブート環境が現在のブート環境になります。

  10. (省略可能) 別のブート環境にフォールバックします。

    新しいブート環境が実行可能でない場合、または別のブート環境に切り替える必要がある場合は、第 6 章「障害回復: 元のブート環境へのフォールバック (作業)」を参照してください。

非大域ゾーンがインストールされているシステムのアップグレード (例)

ここでは、Solaris Live Upgrade を使ってアップグレードする例を簡潔な手順を追って説明します。

詳しい手順については、「非大域ゾーンがシステムにインストールされている場合に Solaris Live Upgrade でアップグレードする (作業)」を参照してください。

非大域ゾーンがシステムにインストールされている場合に Solaris Live Upgrade でアップグレードする

次の例では、非大域ゾーンがインストールされているシステムをアップグレードする手順について簡潔に説明します。この例では、Solaris 10 リリースが稼動しているシステムで、lucreate コマンドを使って新しいブート環境を作成します。このシステムには非大域ゾーンがインストールされており、そのゾーンの独立したファイルシステムは共有ファイルシステム zone1/root/export 上にあります。この新しいブート環境を、luupgrade コマンドを使用して Solaris 10 5/08 にアップグレードします。アップグレードしたブート環境を、luactivate コマンドによってアクティブ化します。


注 –

この手順では、システムでボリュームマネージャーを実行していると仮定しています。ボリュームマネージャーを使用したリムーバブルメディアの管理の詳細は、『Solaris のシステム管理 (デバイスとファイルシステム)』を参照してください。


  1. 必要なパッチをインストールします。

    http://sunsolve.sun.com で最新のパッチリストを確認してください。SunSolve の Web サイトで、infodoc 72099 を検索してください。この例では、/net/server/export/patches がパッチへのパスです。


    # patchadd /net/server/export/patches
    # init 6
    
  2. Solaris Live Upgrade パッケージを現在のブート環境から削除します。


    # pkgrm SUNWlucfg SUNWluu SUNWlur
    
  3. Solaris DVD または CD を挿入します。次に、ターゲットリリースから交換用の Solaris Live Upgrade パッケージをインストールします。

    • SPARC システムの場合:


      # pkgadd -d /cdrom/cdrom0/s0/Solaris_10/Product SUNWlucfg SUNWlur SUNWluu
      
    • x86 システムの場合:


      # pkgadd -d /cdrom/cdrom0/Solaris_10/Product SUNWlucfg SUNWlur SUNWluu
      
  4. ブート環境を作成します。

    次の例では、newbe という新しいブート環境が作成されます。ルート (/) ファイルシステムは、c0t1d0s4 上に配置されます。現在のブート環境にある非大域ゾーンはすべて、新しいブート環境にコピーされます。zonecfg add fs コマンドを使って独立したファイルシステムを zone1 に対して作成してあります。この独立したファイルシステム /zone/root/export は、個別のスライス c0t1d0s1 上に配置されます。このオプションを使用すると、独立したファイルシステムが現在のブート環境と新しいブート環境の間で共有されなくなります。


    # lucreate -n newbe -m /:/dev/dsk/c0t1d0s4:ufs -m /export:/dev/dsk/c0t1d0s1:ufs:zone1
    
  5. 新しいブート環境をアップグレードします。

    この例では、/net/server/export/Solaris_10/combined.solaris_wos がネットワークインストールイメージへのパスです。


    # luupgrade -n newbe -u -s  /net/server/export/Solaris_10/combined.solaris_wos
    
  6. (省略可能) ブート環境がブート可能であることを確認します。

    lustatus コマンドは、ブート環境の作成が完了したかどうかを報告します。


    # lustatus
    boot environment   Is        Active  Active     Can	    Copy
    Name               Complete  Now	 OnReboot   Delete	 Status
    ------------------------------------------------------------------------
    c0t1d0s0            yes      yes      yes       no           -
    newbe               yes       no       no       yes          -
  7. 新しいブート環境をアクティブにします。


    # luactivate newbe
    # init 6
    

    ブート環境 newbe がアクティブになりました。

  8. (省略可能) 別のブート環境にフォールバックします。新しいブート環境が実行可能でない場合、または別のブート環境に切り替える必要がある場合は、第 6 章「障害回復: 元のブート環境へのフォールバック (作業)」を参照してください。

非大域ゾーンが含まれているブート環境の管理

ここでは、非大域ゾーンが含まれているブート環境の管理について説明します。

Procedureブート環境の非大域ゾーンのファイルシステムの構成を表示する

大域ゾーンと非大域ゾーンの両方のファイルシステムの一覧を表示するには、次の手順を実行します。

  1. スーパーユーザーになるか、同等の役割になります。

    役割には、認証と特権コマンドが含まれます。役割の詳細は、『Solaris のシステム管理 (セキュリティサービス)』「RBAC の構成 (作業マップ)」を参照してください。

  2. ファイルシステムの一覧を表示します。


    # lufslist -n BE_name
    
    BE_name

    ファイルシステムの詳細を表示するブート環境の名前を指定します。


例 9–1 非大域ゾーンが含まれているファイルシステムの一覧を表示する

次の例では、非大域ゾーンが含まれているファイルシステムの一覧が表示されます。


# lufslist -n s3
boot environment name: s3
This boot environent is currently active.
This boot environment will be active on next system boot.

Filesystem              fstype    device size Mounted on Mount Options
------------------------------------------------------------------
/dev/dsk/c0t0d0s1         swap     2151776256   -        -
/dev/dsk/c0t0d0s3         ufs     10738040832   /        -
/dev/dsk/c0t0d0s7         ufs     10487955456   /export  -
                zone <zone1> within boot environment <s3>
/dev/dsk/c0t0d0s5         ufs      5116329984   /export  -

Procedure非大域ゾーンがインストールされているシステムのブート環境を比較する

lucompare コマンドは、非大域ゾーンの内容が含まれているブート環境の比較を行うようになりました。

  1. スーパーユーザーになるか、同等の役割になります。

    役割には、認証と特権コマンドが含まれます。役割の詳細は、『Solaris のシステム管理 (セキュリティサービス)』「RBAC の構成 (作業マップ)」を参照してください。

  2. 現在のブート環境と新しいブート環境を比較します。


    # /usr/sbin/lucompare -i  infile
    

    または


    # /usr/sbin/lucompare -t -o  outfile BE_name
    
    -i  infile

    infile 中に指定されたファイルを比較します。比較するファイルは、絶対パスで指定する必要があります。ファイルのエントリがディレクトリである場合、比較はディレクトリに対して再帰的に行われます。このオプションまたは -t のいずれか一方を使用できます (両方は使用できません)。

    -t

    バイナリ以外のファイルだけを比較します。この比較では、ファイルごとに file(1) コマンドを使用してそのファイルがテキストファイルであるかを確認します。ユーザーは、このオプションまたは -i のいずれか一方を使用できます (両方は使用できません)。

    -o  outfile

    相違についての出力を outfile にリダイレクトします。

    BE_name

    アクティブブート環境と比較するブート環境の名前を指定します。


例 9–2 ブート環境の比較

この例では、現在のブート環境 (ソース) と second_disk ブート環境が比較され、結果がファイルに出力されます。


# /usr/sbin/lucompare -i  /etc/lu/compare/ -o /var/tmp/compare.out second_disk

非大域ゾーンが含まれるシステムで lumount コマンドを使用する

lumount コマンドは、非大域ゾーンが、非アクティブブート環境にある対応するファイルシステムにアクセスできるようにします。大域ゾーン管理者が lumount コマンドを使って非アクティブブート環境をマウントすると、同様にそのブート環境が非大域ゾーンに対してもマウントされます。

次の例では、ブート環境 newbe に対して、適切なファイルシステムが大域ゾーンの /mnt にマウントされます。実行中の非大域ゾーン、マウントされた非大域ゾーン、または準備完了の非大域ゾーンについては、newbe 内にある対応するファイルシステムが各ゾーン内の /mnt でも使用できるようになります。


# lumount -n newbe /mnt

マウントの詳細は、lumount(1M) のマニュアルページを参照してください。