Oracle Solaris のシステム管理 (Oracle Solaris コンテナ : 資源管理と Oracle Solaris ゾーン)

第 23 章 非大域ゾーンの移動と移行 (手順)

この章は、Solaris 10 11/06 リリースで新たに追加されました。以降のリリースでは、新しい機能が追加されています。

この章では、次の操作を行う方法について説明します。

Solaris 10 10/08 リリース以降では、ゾーンに依存するパッケージおよび関連パッチが新しいホストに存在する場合、それらのバージョンが移行元と同じまたは移行元より新しいときは、zoneadm attach-u オプションを使用すると、パッケージの最小セットが更新され、その非大域ゾーンを新しいホストで使用できるようになります。新しいホストに移行元ホストよりも高いバージョンと低いバージョンのパッチが混在している場合、接続操作中の更新はできません。

zoneadm attach コマンドと -u オプションを使用すると、sun4u から sun4v への移行など、マシンクラス間の移行も可能です。

Solaris 10 9/10 リリース以降では、zoneadm attach-U オプションを使用すると、ゾーンのすべてのパッケージが、このホストに新しくインストールされた非大域ゾーンで表示される内容と一致するように更新されます。ゾーン内にインストールされ、大域ゾーンにはインストールされていないパッケージがある場合、それらのパッケージは無視され、そのままの状態になります。このオプションを使用すると、sun4u から sun4v への移行など、マシンクラス間の自動移行も可能です。

通常のパッチ適用の代わりに、大域ゾーンにパッチを適用する間は各ゾーンを切り離しておき、適用後に -U オプションを使用して大域ゾーンを再接続することで、大域ゾーンのパッチレベルを一致させることができます。

lx ブランドゾーンの移動と移行については、第 37 章lx ブランドゾーンの移動と移行 (手順)を参照してください。

Solaris 10 11/06: 非大域ゾーンの移動

zonepath を変更してゾーンを同じシステムの新しい場所に移動する場合に、ここで説明する手順を使用します。ゾーンは、停止する必要があります。新規 zonepath がローカルファイルシステムに存在する必要があります。「資源タイプとプロパティータイプ」に説明されている、 zonepath の通常の基準が適用されます。

Procedureゾーンを移動する方法

この手順を実行するには、大域ゾーン内で大域管理者になる必要があります。

  1. スーパーユーザーまたは Primary Administrator 役割になります。

    役割の作成と作成した役割のユーザーへの割り当てについては、『Solaris のシステム管理 (基本編)』「Solaris 管理ツールを RBAC と組み合わせて使用する (作業マップ)」を参照してください。

  2. 移動するゾーン (この手順では db-zone) を停止します。


    global# zoneadm -z db-zone halt
    
  3. zoneadm コマンドを move サブコマンドとともに使用して、ゾーンを新規の zonepath である /export/zones/db-zone に移動します。


    global# zoneadm -z db-zone move /export/zones/db-zone
    
  4. パスを確認します。


    ID  NAME     STATUS       PATH                           BRAND      IP
     0  global   running      /                              native     shared
     -  my-zone  installed    /export/home/my-zone           native     shared
     -  db-zone  installed    /export/zones/db-zone          native     shared

Solaris 10 11/06: 別のマシンへの非大域ゾーンの移行

Solaris 10 5/08 リリースでは、実際にゾーンを別のマシンに移行する前にゾーンの移行を試験的に実行することができます。詳細は、「Solaris 10 5/08: 移行を行う前のゾーンの移行の検証について」を参照してください。

ゾーンの移行について

Solaris 10 11/06 リリース以降、この節に新しい情報が追加されています。

zonecfg および zoneadm コマンドを使用して、既存の非大域ゾーンをあるシステムから別のシステムに移行できます。ゾーンは停止され、現在のホストから切り離されます。zonepath は移行先のホストに移動され、そこで接続されます。

次の制限が、ゾーンの移行に適用されます。

Solaris リリースとマシンアーキテクチャーを確認するには、次のように入力します。


#uname -m

zoneadm detach プロセスにより、別のシステムでゾーンを接続するのに必要な情報が作成されます。 zoneadm attach プロセスは、移行先のマシンがゾーンのホストとして機能するための適正な構成を保持していることを確認します。

新規ホストで zonepath を使用可能にする方法は複数存在するため、あるシステムから別のシステムへの zonepath の実際の移動は、大域管理者が手動で行います。

新規システムへの接続時に、ゾーンはインストール済みの状態になります。

Procedure非大域ゾーンを移行する方法

この手順を実行するには、大域ゾーン内で大域管理者になる必要があります。

  1. スーパーユーザーまたは Primary Administrator 役割になります。

    役割の作成と作成した役割のユーザーへの割り当てについては、『Solaris のシステム管理 (基本編)』「Solaris 管理ツールを RBAC と組み合わせて使用する (作業マップ)」を参照してください。

  2. 移行するゾーン (この手順では my-zone) を停止します。


    host1# zoneadm -z my-zone halt
    
  3. ゾーンを切り離します。


    host1# zoneadm -z my-zone detach
    

    切り離されたゾーンは、現在、構成済みの状態にあります。

  4. my-zonezonepath を新規ホストに移動します

    詳細は、zonepath を新規ホストに移動する方法」を参照してください。

  5. 新規ホスト上でゾーンを構成します


    host2# zonecfg -z my-zone
    

    次のシステムメッセージが表示されます


    my-zone: No such zone configured
    Use 'create' to begin configuring a new zone.
  6. 新規ホスト上にゾーン my-zone を作成するには、zonecfg コマンドに -a オプションおよび新規ホストの zonepath を指定します。


    zonecfg:my-zone> create -a /export/zones/my-zone
    
  7. (省略可能) 構成を表示します。


    zonecfg:my-zone> info
    zonename: my-zone
    zonepath: /export/zones/my-zone
    autoboot: false
    pool:
    inherit-pkg-dir:
             dir: /lib
    inherit-pkg-dir:
             dir: /platform
    inherit-pkg-dir:
             dir: /sbin
    inherit-pkg-dir:
             dir: /usr
    net:
             address: 192.168.0.90
             physical: bge0
  8. 構成に必要な調整を加えます。

    たとえば、新規ホストではネットワーク物理デバイスが異なる場合があります。また、構成に含まれるデバイスの名前が新規ホストでは異なることもあります。


    zonecfg:my-zone> select net physical=bge0
    zonecfg:my-zone:net> set physical=e1000g0
    zonecfg:my-zone:net> end
    
  9. 構成を確定して終了します。


    zonecfg:my-zone> commit
    zonecfg:my-zone> exit
    
  10. 次のいずれかの方法で、ゾーンを新しいホストに接続します。

    • 妥当性検査を使用して、ゾーンを接続します。


      host2# zoneadm -z my-zone attach
      

      次の条件のいずれかまたは両方に当てはまる場合、実行が必要な操作がシステム管理者に通知されます。

      • 必須パッケージおよびパッチが新規マシンに存在しない。

      • ソフトウェアレベルがマシン間で異なる。

    • Solaris 10 10/08: 妥当性検査を使用してゾーンを接続します。また、より新しいバージョンのゾーン依存パッケージがホストで実行されている場合や、ホストのマシンクラスが異なっている場合は、ホストに一致するように接続時にゾーンを更新します。


      host2# zoneadm -z my-zone attach -u
      

      ヒント –

      Solaris 10 10/08: 移行元システムで古いバージョンの Solaris システムが実行されている場合は、ゾーンを切り離す際に正しいパッケージリストが生成されないことがあります。移行先に正しいパッケージリストが確実に生成されるようにするには、SUNWdetached.xml ファイルを zonepath から削除します。このファイルを削除すると、移行先システムによって新しいパッケージリストが生成されます。

      これは Solaris 10 5/09 以降のリリースでは必要ありません。


    • Solaris 10 9/10: 妥当性検査を使用してゾーンを接続し、ゾーンのすべてのパッケージを、このホストに新しくインストールされた非大域ゾーンで表示される内容と一致するように更新します。ゾーン内にインストールされ、大域ゾーンにはインストールされていないパッケージがある場合、それらのパッケージは無視され、そのままの状態になります。


      host2# zoneadm -z my-zone attach -U
      
    • Solaris 10 5/09 以降: -b オプションを使用して、指定したパッチを接続時にゾーンから除去します。指定できるパッチは、公式パッチまたは IDR パッチです。


      host2# zoneadm -z my-zone attach -u -b IDR246802-01 -b 123456-08
      

      -b オプションは、-u または -U オプションとは独立して使用できます。

    • 妥当性検査を実行せずに、接続操作を強制的に実行します。


      host2# zoneadm -z my-zone attach -F
      

      注意 – 注意 –

      -F オプションを使用すると、妥当性検査を実行せずに attach が強制的に実行されます。これは、クラスタ環境やバックアップ/復元操作など、特定の場合に役立ちますが、システムがゾーンのホストとして動作するよう正しく構成されている必要があります。構成が不正な場合、あとで未定義の動作が実行される可能性があります。


Procedurezonepath を新規ホストに移動する方法

zonepath のアーカイブの作成には、いくつもの方法があります。たとえば、cpio または pax コマンドを使用できます。詳細は、cpio(1) およびpax(1) のマニュアルページを参照してください。

アーカイブを新規ホストに転送する方法も、複数存在します。zonepath を転送元ホストから転送先ホストに転送する機構は、ローカルの構成によって異なります。SAN などのいくつかの場合には、zonepath データを実際には移動できないこともあります。SAN の場合は、zonepath が新規ホストに表示されるように、再構成が実行されるだけです。それ以外の場合は、zonepath をテープに書き込み、それを新規サイトに送付することもあります。

これらの理由のために、この手順は自動化されていません。システム管理者は、zonepath を新規ホストに移動する最適な手法を選択する必要があります。

  1. スーパーユーザーまたは Primary Administrator 役割になります。

    役割の作成と作成した役割のユーザーへの割り当てについては、『Solaris のシステム管理 (基本編)』「Solaris 管理ツールを RBAC と組み合わせて使用する (作業マップ)」を参照してください。

  2. zonepath を新規ホストに移動します。この手順で説明した方法を使用することも、別の方法を選んで使用することもできます。


例 23–1 tar コマンドを使用した zonepath のアーカイブおよび移動

  1. host1 上で zonepathtar ファイルを作成し、 sftp コマンドを使って host2 に転送します。


    host1# cd /export/zones
    host1# tar cf my-zone.tar my-zone
    host1# sftp host2
    Connecting to host2...
    Password:
    sftp> cd /export/zones
    sftp> put my-zone.tar
    Uploading my-zone.tar to /export/zones/my-zone.tar
    sftp> quit
    
  2. host2 上で tar ファイルを展開します。


    host2# cd /export/zones
    host2# tar xf my-zone.tar
    

詳細は、sftp(1) および tar(1) を参照してください。


注意事項

次の問題を解決する方法については、zoneadm 接続操作の問題解決」を参照してください。

次の手順

SAN を再構成せず、データをコピーした場合、ゾーンが構成済みの状態になっても zonepath のデータはソースホスト上に表示されたままになってます。データを新しいホストに移行し終わったあと手動で zonepath をソースホストから削除するか、ソースホストにゾーンを再接続し、zoneadm uninstall コマンドを使って zonepath を削除することができます。

Solaris 10 5/08: 移行を行う前のゾーンの移行の検証について

「no execute」(実行しない) オプションである -n を使用することで、ゾーンを新しいマシンに移行する前に試行を行うことができます。

-n オプションを指定して zoneadm detach サブコマンドを使用すると、実際にゾーンを切り離さずに実行中のゾーンでマニフェストを生成できます。移行元のシステムのゾーンの状態は変わりません。ゾーンのマニフェストは標準出力に送信されます。大域管理者は、この出力をファイルに送ったり、移行先ホストですぐに検証されるように遠隔コマンドにパイプしたりできます。-n オプションを指定して zoneadm attach サブコマンドを使用すると、このマニフェストを読み取り、実際に接続を行わずに、移行先のマシンがゾーンのホストとして機能するための適正な構成を保持しているかどうかを確認できます。

試行接続を行う前に、新規ホストで移行先システムのゾーンを構成する必要はありません。

ProcedureSolaris 10 5/08: 移行を行う前にゾーンの移行を検証する方法

この手順を実行するには、大域ゾーン内で大域管理者になる必要があります。

  1. スーパーユーザーまたは Primary Administrator 役割になります。

    役割の作成と作成した役割のユーザーへの割り当てについては、『Solaris のシステム管理 (基本編)』「Solaris 管理ツールを RBAC と組み合わせて使用する (作業マップ)」を参照してください。

  2. 次のいずれかを実行します。

    • my-zone の移行元ホストでマニフェストを生成し、移行先ホストをすぐに検証する遠隔コマンドにその出力をパイプします。


      global# zoneadm -z my-zone detach -n | ssh remotehost zoneadm attach -n -
      

      行の最後にあるハイフン () は、パスとして標準入力を指定します。

      検証内容は、移行元ホストの画面である stdout に出力されます。

    • my-zone の移行元ホストでマニフェストを生成し、その出力をファイルに送ります。


      global# zoneadm -z my-zone detach -n > filename
      

      zonepath を新規ホストに移動する方法」の説明に従って、そのマニフェストを新しいホストシステムにコピーし、検証を行います。


      global# zoneadm attach -n path_to_manifest
      

      パスを にすると標準入力を指定できます。

使用できないマシンからゾーンを移行する

ネイティブ Solaris ゾーンをホストするマシンが使用できなくなる場合があります。しかし、ゾーンが格納されている SAN などのストレージがまだ使用できる場合は、ゾーンを新しいホストに正常に移行できる可能性があります。ゾーンの zonepath を新しいホストに移動できます。SAN などのいくつかの場合には、zonepath データを実際には移動できないこともあります。SAN の場合は、zonepath が新規ホストに表示されるように、再構成が実行されるだけです。ゾーンが適切に切り離されなかったため、初めに zonecfg コマンドを使って新しいホストにゾーンを作成する必要があります。一度これを行なったあと、新しいホストでゾーンを接続してください。新しいホストから、ゾーンが適切に切り離されなかったというメッセージが出ますが、それでもシステムは接続を試行します。

この作業の手順は、「非大域ゾーンを移行する方法」の手順 4 - 8 で説明されています。zonepath を新規ホストに移動する方法」も参照してください。

パッチ適用のソリューションとして、接続時更新を使用する

接続時の更新のプロセスは、ゾーンを別のシステムに移行するために開発されたものですが、ゾーンにパッチを適用する場合にも使用できます。この方法を利用すると、大域ゾーンをより迅速に使用可能な状態にすることができます。その後、システム管理者は、あまり重要でないゾーンを更新して起動する前に、どのゾーンを先に更新して稼働させるかを調整できます。

次のプロセスでは、そのゾーンがシステムに新しくインストールされたゾーンと同じように見えるように、すべてのパッチを更新します。

  1. 大域ゾーンにパッチバンドルを適用する前に、すべての非大域ゾーンを切り離します。

  2. 大域ゾーンにパッチバンドルを適用します。

  3. パッチバンドルが適用され、システムが再起動したら、zoneadm attach コマンドを -U オプションを付けて使用し、非大域ゾーンを大域ゾーンと同じパッチレベルにします。

ゾーン内にインストールされ、大域ゾーンにはインストールされていないパッケージがある場合、それらのパッケージは無視され、影響を受けません。

patchadd ユーティリティーを使用した高速のパッチ適用ソリューションについては、『「Solaris 10 10/09: パッチ適用時間を短縮するためのゾーンの並列パッチ」』 を参照してください。