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

第 30 章 Solaris ゾーンで発生するさまざまな問題の解決

この章は、Solaris 10 6/06 リリースに新しく追加されました。

Solaris 10 の新機能の全一覧および Solaris リリースについての説明は、『Oracle Solaris 10 9/10 の新機能』を参照してください。

Solaris 10 6/06、Solaris 10 11/06、Solaris 10 8/07、および Solaris 10 5/08: 非大域ゾーンのルートファイルシステムを ZFS 上に配置しない

これらのリリースでは、非大域ゾーンの zonepath を ZFS 上に設定すべきではありません。このような操作をすると、パッチの問題が発生したり、システムを以降の Solaris 10 アップデートリリースにアップグレードできなくなったりする可能性があります。

ただし、Solaris 10 10/08 リリース以降では、非大域ゾーンのルートファイルシステムを ZFS 上に設定することができます。その場合は、Solaris Live Upgrade を使用してシステムをアップグレードできます。

排他的 IP ゾーンがデバイスを使用しているために dladm reset-linkprop が失敗する

次のエラーメッセージが表示された場合


dladm: warning: cannot reset link property 'zone' on 'bge0': operation failed

dladm reset-linkprop の使用方法」で説明されているように、dladm reset-linkprop を使用しようとして失敗しました。実行中のゾーン excl は、ゾーン内部で ifconfig bge0 plumb を実行することによって割り当てられたデバイスを使用中です。

値をリセットするには、手続き ifconfig bge0 unplumb をゾーン内部で実行し、dladm コマンドを再度実行します。

大域ゾーンによってデータが挿入されているファイルシステムをゾーン管理者がマウントする場合

非大域ゾーンの初回起動時にファイルシステム階層内にファイルが存在している場合は、そのファイルシステムデータが大域ゾーンによって管理されていることを示しています。非大域ゾーンがインストールされたときに、大域ゾーン内のいくつかのパッケージファイルがそのゾーン内に複製されています。これらのファイルは zonepath ディレクトリの下に置かれている必要があります。ゾーンに追加されているディスクデバイスや ZFS データセット上にゾーン管理者によってファイルシステムが作成され、そこにこれらのファイルが置かれている場合は、パッケージとパッチの問題が発生する可能性があります。

大域ゾーンによって管理されているファイルシステムデータを、ゾーンにローカルなファイルシステムに保存する場合の問題は、ZFS を例にとって説明することができます。ZFS データセットが非大域ゾーンに委任されている場合、ゾーン管理者は、大域ゾーンによって管理されているファイルシステムデータの保存のためにそのデータセットを使用するべきではありません。構成にパッチやアップグレードを正しく適用できなくなります。

たとえば、委任されている ZFS データセットを /var ファイルシステムとして使用するべきではありません。Solaris オペレーティングシステムでは、/var にコンポーネントをインストールする主要パッケージが提供されています。これらのパッケージは、アップグレードやパッチの適用時に /var にアクセスする必要がありますが、委任されている ZFS データセットに /var がマウントされているとそれが不可能になります。

大域ゾーンによって制御されている階層の部分の下にファイルシステムをマウントすることはサポートされています。たとえば、大域ゾーンに空の /usr/local ディレクトリが存在している場合、ゾーン管理者はそのディレクトリにほかの内容をマウントすることができます。

非大域ゾーンの /export などのように、パッチやアップグレードの適用時にアクセスする必要のないファイルシステムには、委任されている ZFS データセットを使用することができます。

ゾーンが停止しない

ゾーンに関連付けられたシステム状態を破棄できない場合には、停止処理は中途で失敗します。このため、稼働中とインストール済みの間で、ゾーンが中間状態のままになります。この状態では、アクティブなユーザープロセスやカーネルスレッドは存在せず、何も作成できません。停止操作が失敗した場合は、手動で処理を完了する必要があります。

障害のもっとも一般的な原因は、システムがすべてのファイルシステムをマウント解除できないことです。システム状態が破棄される Solaris システムの従来の停止処理とは異なり、ゾーンでは、ゾーンの起動または操作時に実行されたマウントがゾーンの停止後に残らないことを保証する必要があります。zoneadm によりゾーン内で実行中のプロセスが存在しないことが確認されても、大域ゾーン内のプロセスによりゾーン内のファイルが開かれた場合には、マウント解除操作が失敗することがあります。proc(1) (pfiles を参照) および fuser(1M) のマニュアルページに記載されているツールを使用してこれらのプロセスを検索し、適切な処理を実行してください。これらのプロセスを処理したあとで zoneadm halt を再度呼び出すと、ゾーンが完全に停止するはずです。

停止できないゾーンがある場合、Solaris 10 10/09 リリースでは、zoneadm attach -F オプションを使用して妥当性検査を行わずに接続を強制的に実行すれば、切り離されなかったゾーンを移行できます。移行先システムは、ゾーンをホストするように正しく構成されている必要があります。構成が不正な場合、未定義の動作が実行される可能性があります。また、ゾーン内のファイルの状態を知る方法はありません。

ゾーン構成内に不正な特権セットが指定されている

ゾーンの特権セットに許可されない特権が含まれる場合、必須の特権が欠落している場合、または不明な特権名が含まれる場合、ゾーンの検証、準備、または起動の試行は失敗し、次のようなエラーメッセージが表示されます。


zonecfg:zone5> set limitpriv="basic"
.
.
.
global# zoneadm -z zone5 boot
 	required privilege "sys_mount" is missing from the zone's privilege set
 	zoneadm: zone zone5 failed to verify

ゾーン起動時に netmasks の警告が表示される

「ゾーンの起動方法」の説明に従ってゾーンを起動する際、次のメッセージが表示されることがあります。


# zoneadm -z my-zone boot
zoneadm: zone 'my-zone': WARNING: hme0:1: no matching subnet
	found in netmasks(4) for 192.168.0.1; using default of
	255.255.255.0.

このメッセージは単なる警告であり、コマンドは成功しています。このメッセージは、ゾーン構成で指定された IP アドレス用のネットマスク をシステムが検出できなかったことを示します。

以降の再起動でこの警告が表示されないようにするには、大域ゾーン内の /etc/nsswitch.conf ファイルに適切な netmasks データベースが記載されていること、およびこれらのデータベースの 1 つ以上にゾーン my-zone で使用されるサブネットおよびネットマスクが含まれることを確認します。

たとえば、大域ゾーン内のネットマスクの解決に /etc/inet/netmasks ファイルおよびローカルの NIS データベースが使用される場合、/etc/nsswitch.conf 内の適切なエントリは次のようになります。

netmasks: files nis

その後、ゾーン my-zone のサブネットおよび対応するネットマスク情報を /etc/inet/netmasks に追加して、これを使用可能にします。

netmasks コマンドの詳細は、netmasks(4) のマニュアルページを参照してください。

zoneadm 接続操作の問題解決

Procedureパッチおよびパッケージが同期しない

ターゲットシステムでは、元のホストにインストールされているものと同じバージョンの、次の必須オペレーティングシステムパッケージおよびパッチが実行されている必要があります。

  1. パッケージおよびパッチが移行元ホストと新規ホスト間で異なる場合、次のようなメッセージが表示されることがあります。


    host2# zoneadm -z my-zone attach
    	These packages installed on the source system are inconsistent with this system:
                SUNWgnome-libs (2.6.0,REV=101.0.3.2005.12.06.20.27) version mismatch
                        (2.6.0,REV=101.0.3.2005.12.19.21.22)
                SUNWudaplr (11.11,REV=2005.12.13.01.06) version mismatch
                        (11.11,REV=2006.01.03.00.45)
                SUNWradpu320 (11.10.0,REV=2005.01.21.16.34) is not installed
                SUNWaudf (11.11,REV=2005.12.13.01.06) version mismatch
                        (11.11,REV=2006.01.03.00.45)
                NCRos86r (11.10.0,REV=2005.01.17.23.31) is not installed
    	These packages installed on this system were not installed on the source system:
                SUNWukspfw (11.11,REV=2006.01.03.00.45) was not installed
                SUNWsmcmd (1.0,REV=2005.12.14.01.53) was not installed
    	These patches installed on the source system are inconsistent with this system:
                120081 is not installed
                118844 is not installed
                118344 is not installed
    	These patches installed on this system were not installed on the source system:
                118669 was not installed
                118668 was not installed
                116299 was not installed
  2. ゾーンの移行を成功させるには、次のいずれかの方法を使用します。

Procedureオペレーティングシステムのリリースが一致しない

ゾーンの移行を成功させるには、移行元ホストで稼働しているものと同じ Solaris リリースを、同じアーキテクチャーを持つシステムにインストールします。

  1. 移行元システムで稼働している Solaris のリリースを確認します。


    host1# uname -a
    
  2. 新規ホストに同じリリースをインストールします。

    docs.sun.com にある Solaris インストールマニュアルを参照してください。

Procedureマシンアーキテクチャーが一致しない

ゾーンの移行を成功させるには、zoneadm attach-u オプションを使用します。

  1. 両方のシステムのシステムアーキテクチャーを確認します。


    host1# uname -a
    
  2. アーキテクチャーが異なっている場合は、zoneadm attach-u オプションを使用して接続を実行します。


    host2# zoneadm -z my-zone attach -u
    

    詳細は、「非大域ゾーンを移行する方法」を参照してください。

lofs タイプで定義された fs 資源を持つゾーンを Solaris 10 11/06 リリースにアップグレードできない


注 –

この問題は Solaris 10 8/07 リリースで修正されています。


lofs fs 資源で構成されたすべての非大域ゾーンが miniroot 内に存在するディレクトリをマウントしている場合、標準のアップグレードを使用して、以前の Solaris 10 リリースから Solaris 10 11/06 リリースにシステムをアップグレードできます。たとえば、lofs でマウントされた /opt ディレクトリは、問題なくアップグレードできます。

ただし、いずれかの非大域ゾーンが非標準の lofs マウントで構成されている場合 (たとえば、/usr/local ディレクトリが lofs でマウントされている場合)、次のエラーメッセージが表示されます。


The zones upgrade failed and the system needs to be restored
from backup.  More details can be found in the file
/var/sadm/install_data/upgrade_log on the upgrade root file
system.

このエラーメッセージには、システムをバックアップから復元する必要があると表示されていますが、システムは実際には正常であり、次の回避方法を使用すれば問題なくアップグレードできます。

  1. インストールされている OS でシステムをリブートします。

  2. ゾーンを再構成し、lofs タイプで定義された fs 資源を削除します。

  3. これらの資源を削除したあとで、システムを Solaris 10 11/06 にアップグレードします。

  4. アップグレード後にゾーンを再構成して、削除した fs 資源を復元できます。