Solaris 10 OS におけるゾーンの「接続時に更新」機能とパッチ適用Enda O'Connor, 2009 年 6 月 はじめにSolaris 10 5/08 オペレーティングシステム以降、システム管理者は、ゾーンの切り離しと接続ができるようになりました。すなわち、1 つのシステムからゾーンを切り離し、別のシステムに接続することです。初期の機能には、非大域ゾーンが接続されている転送元と転送先の両システムが、同じソフトウェアレベルのパッケージバージョン、パッチレベル、およびアーキテクチャーを持っている必要があったため、いくつかの制限がありました。つまり、sun4v システムから sun4u システムへ、あるいは以前の Solaris リリースから最新の Solaris 更新リリースへとゾーンを移動することはできませんでした。 Solaris 10 10/08 リリースでは、 この記事では、「接続時に更新」について記述し、次のトピックをカバーします。
どのパッケージが更新されるかを決定する基準「接続時に更新」を使用すると、接続されたゾーンは次の規則に従って大域ゾーンと同じソフトウェアレベルに更新されます。どのパッケージが更新されるかは、これらの規則によって決定されます。
一度パッケージを更新するように選択すると、ゾーンを最初にインストールしたときにパッケージをインストールしたのと同じ処理が、次の処理を実行するために行われます。
たとえば そのため、上記の 3 番の項目の例として、パッケージ A に 非大域ゾーンが使用する継承されたパッケージディレクトリを考慮する場合、選択基準は重要です。完全ルートの非大域ゾーンの場合には、継承されたパッケージディレクトリはありません。したがって、同じソフトウェアレベルで実行されている疎ゾーンに比べて、更新するように選択されるパッケージは少なくなります。 また、 「接続時に更新」と通常のアップグレード先に進む前に、サポートされているアップグレード機構のうちのいずれかによる標準アップグレードと、「接続時に更新」を使用する方法との違いを理解するとよいでしょう。標準アップグレードを行うと、Solaris のネイティブな非大域ゾーンはすべてアップグレードされます。すなわち、アップグレードの過程で配信されるすべての新しいパッケージと機能が受信され、古いパッケージは削除されます。また、非大域ゾーンと大域ゾーンは、更新リリースで配信されるパッチとパッケージのバージョンが同じソフトウェアレベルになります。 言いかえれば、更新イメージは大域ゾーンおよびすべての非大域ゾーンに適用されます。アップグレードの間、大域ゾーンと非大域ゾーンに関する依存性チェックは行われません。また、イメージの一部であるパッケージはすべて、大域ゾーンを含むすべてのゾーンにわたって配置されます。 これに対して、「接続時に更新」を使用する場合、大域ゾーンおよび更新されている非大域ゾーンの両方のソフトウェアインベントリが取得されます。そのあと、前述した 3 つの基準に従い、 したがって、システムから非大域ゾーンをすべて切り離し、大域ゾーンで後続の更新リリースに標準アップグレードしてから、非大域ゾーンに対して「接続時に更新」を使用した場合、アップグレード時に接続されていたゾーンに対してシステム全体の標準アップグレードを行なった場合とは異なる結果となります。次の項目が 1 つも該当しない場合、更新で配信された新しいパッケージはどれも、接続された非大域ゾーンに伝播されません。
「接続時に更新」の主な使用目的は、ユーザーによる対話的処理を最小限に抑えながら、あるシステムから別のシステムに非大域ゾーンを移行できるようにすることです。Solaris 10 10/08 リリースより前は、接続されている非大域ゾーンのシステムソフトウェアが、接続されている非大域ゾーンが存在するシステムと正確に同じソフトウェアレベルにあるようにしなければなりませんでした。ゾーンの「接続時に更新」を使用すると、システム管理者は低いパッチレベルのゾーンを接続することができるようになり、ゾーンは自動的に接続先の大域ゾーンと同じパッチレベルに更新されます。また、sun4v システムから sun4u システムへ、あるいは sun4u システムから sun4v システムへと非大域ゾーンを移行できるようにもなりました。 「接続時に更新」の主な使用目的の 1 つは、異なるシステム間で Solaris Containers を迅速かつ容易に移行できるようにすることです。(コンテナとは、非大域ゾーンとリソース制御を組み合わせたもののことです)。使用例を挙げます。Sun Fire T2000 サーバーで、それぞれ特定のデータベースを持つ 5 つのコンテナが実行されており、時間がたつにつれてそのうちの 1 つのデータベースが想定以上に増大した場合、システムリソースが使い果たされてパフォーマンスの問題が発生することがあります。影響を受けたコンテナをより高性能なシステムへと移行することができないと、エンドユーザーはコンテナ、コンテナ内のソフトウェア、およびソフトウェア構成を別のシステムに複製し、最終的には古いコンテナから新しいコンテナへのスイッチを作成しなければならない場合があります。しかし、ゾーン移行により、この作業がはるかに容易になります。影響を受けたコンテナを、データベース、構成、および関連する作業負荷ごと新しいシステムに移動できるようになり、これによってこのコンテナと古いシステム上の残り 4 台のコンテナが使用できるリソースが増えるためです。 パッチ適用とゾーンの「接続時に更新」非大域ゾーンを大域ゾーンと同じパッチレベルにすることができる「接続時に更新」は、多くの関心を集めました。一例を挙げます。システム管理者は、パッチバンドルを適用する前にすべての非大域ゾーンを切り離し、そのあとで大域ゾーンにパッチバンドルを適用できます。そしてバンドルを適用してシステムを再起動したあと、ゾーンの これを実行する主な理由は、「接続時に更新」を使う方が、連続してゾーンにパッチを適用するよりもはるかに高速であるためです。複数の このようなことが起こる理由を説明するために、少し不自然な例を挙げます。非大域ゾーンのうちの 1 つが完全ルートゾーンで、適用されているパッチのうちの 1 つが Mozilla Firefox にパッチを適用するパッチ 125539-05 だった場合、大域ゾーンには 125539-05 が適用されますが、ゾーンの「接続時に更新」では非大域ゾーンの 代わりに、接続されたゾーンに また、完全ルート非大域ゾーンでは、 これは、119254/119255 がパッチを適用する したがって、 通常、 更新されるパッケージはすべて、最初に非大域ゾーンから削除されます。次に、ゾーンを最初にインストールするために使用されたのと同じ機能を使用して、それらのパッケージは大域ゾーンから再インストールされます。(この機能は、CR 6818813 により後続の更新リリースで変更される予定です。CR 6818813 が修正されたあとは、更新パッケージとして選択されたパッケージのうち、大域ゾーンにインストールされているパッケージとバージョンが一致するものはいずれも削除されず、非大域ゾーンのパッケージが単に置き換わるようになります。これにより、「接続時に更新」のパフォーマンスの高速化も見込まれます)。 したがって、ゾーンを最初にインストールするために使用されたのと同じ機能が、「接続時に更新」でも使用されます。更新されるパッケージの場合には、パッケージのすべてのパッチパッケージ エンドユーザーが単純に 完全ルートゾーンと疎ルートゾーン完全ルートゾーンではなく、疎ルートゾーン (両方のゾーンは同じシステムで同時にプロビジョニングされているため、同じパッケージおよびパッチレベルにある) に「接続時に更新」を使用すると、更新される両方のゾーンで、異なる数のパッケージが更新されることになります。したがって、Solaris 10 5/08 OS 上で作成され、Solaris 10 10/08 のレベルに更新された疎ルートゾーンでは、505 個のパッケージが更新パッケージとして選択されます。一方、完全ルートゾーンでは、311 個のパッケージが更新パッケージとして選択されます。 そのため、パッチ適用の速度向上のためにゾーンの「接続時に更新」の使用を検討する前に、「接続時に更新」を使用して非大域ゾーンを大域ゾーンと同じパッチレベルにする方法と、接続されていてパッチが適用できるすべての非大域ゾーンに単純に IDR (Interim Diagnostic Relief) パッチと特別パッチの存在Sun によって提供される IDR パッチが接続されているゾーンにインストールされている場合、非大域ゾーンを切り離す前に、まったく同じ IDR が転送先の大域ゾーンに適用されているか、IDR が転送元の非大域ゾーンから削除されていなければなりません。(Solaris 10 5/09 OS では、zoneadm attach コマンドに提供されている -b 引数により、ゾーンの接続中に IDR を削除することで、この問題に対応しています)。
また、Solaris 10 更新イメージの構築にのみ使用され、これまでにリリースされていない「特別パッチ」と呼ばれるパッチの存在も解決しなければなりません。特別パッチについては、現在リリースされているパッチ 140197 の CR 6743776 によって対応されています。これらの特別パッチの処理に関する永続的な解決法は、Solaris 10 5/09 OS のパッチ 139555-08 で配信される CR 6791625 によって対応されています。 「接続時に更新」を実行するための手順1. 転送元のシステムで、 2. 転送先のシステムにゾーンパスを移動します。 3. 転送先大域ゾーンのカーネルパッチレベルが 139555 (Solaris 5/09 以降の更新レベル) でない場合、次のコマンドを実行して、転送元非大域ゾーンのパッケージを強制的に再生成します。関連する CR は 6685069 です。 #rm <zonepath>/SUNWdetached.xml 4. 対象システムで 5. 最後に、次のコマンドを実行します。 #zoneadm -z <zonename> attach -u ゾーン移行に必要な手順の詳細な説明については、非大域ゾーンを移行する方法 を参照してください。 Solaris 10 5/09 ではエラー報告機能も改善されています。ダウングレードされると見なされるパッケージ (つまり、接続されている非大域ゾーンのパッケージバージョンが、接続されていた転送元の大域ゾーンのパッケージバージョンよりも高い場合) について、前のリリースではすべてのインスタンスが 1 つずつ報告されていました。言いかえれば、 詳細情報次に、追加のリソースをいくつか挙げます。
Comments (latest comments first)Discuss and comment on this resource in the BigAdmin Wiki
Unless otherwise licensed, code in all technical manuals herein (including articles, FAQs, samples) is provided under this License. |
BigAdmin SubscriptionsBigAdmin Areas
BigAdmin Sun Center
BigAdmin Topics | ||||