Sun Enterprise 10000 DR 構成マニュアル

第 1 章 DR を構成するための情報

この章では、DR ソフトウェアのすべての機能を利用できるように、ドメインを構成する方法を説明します。


注意 - 注意 -

ディスクコントローラの番号の再割り当てを避けるため、ボードを装着するスロットの選択には注意してください。詳細は、「DR 操作後の再構成」を参照してください。


dr-max-mem 変数

Solaris 7 および Solaris 8 オペレーティング環境では dr-max-mem は使用しません。代わりに system(4) の kernel_cage_enable 変数を使用して、DR の機能 (特に DR 切り離し) を使用可能に設定します。ケージ化されたカーネルは、ページング不可能なメモリーをシステムボードの最小数 (ほとんどの場合は 1) に制限します。デフォルトではカーネルケージは無効に設定されており、DR 切り離しは実行できません。


注 -

DR 接続は、kernel_cage_enable 変数の設定に関係なく、使用可能となります。


カーネルケージを使用可能に設定する
  1. /etc/system ファイルを編集して、kernel_cage_enable 変数の値を 1 に設定します。


    set kernel_cage_enable=1
    

  2. ドメインを再起動します。

再起動に成功したら、/var/adm/messages ファイルを調べてカーネルケージが使用可能に設定されたかどうかを確認します。以下のメッセージが含まれていれば、設定に成功しています。


NOTICE: DR Kernel Cage is ENABLED

DR 切り離し操作のための構成

この節では、論理的な切り離し操作を実行するための DR の構成方法について説明します。

入出力デバイス

重要なシステムリソースに接続されている入出力コントローラをホストしているボードを切り離す場合、DR 切り離し機能は、代替パス設定 (AP : Alternate Pathing) 機能、または SolsticeTM DiskSuiteTM によるミラー化機能と連携して動作します。たとえば、この種のボードのコントローラに接続されているディスク上に、ルート (/) パーティションまたは /usr パーティションがある場合、このディスクへのハードウェア代替パスがなかったり (かつ AP がこれを利用するように構成されている)、またはディスクがミラー化されていなかったりすると、そのボードを切り離せません。つまり、ドメイン内の他のボードが、代替パスまたはミラーのホストとなっている必要があります。同じことがネットワークコントローラの場合にもあてはまります。SSP と Sun Enterprise 10000 プラットフォームを接続する Ethernet コントローラのホストとなっているボードは、このネットワーク接続を維持するための代替パスが他のボードの Ethernet コントローラに指定されていない限り、切り離すことはできません。

soc ドライバや pln ドライバでデバイスの中断ができるように設定するには、/etc/system ファイルを編集して、pln_enable_detach_suspend 変数や soc_enable_detach_suspend 変数の値を次のように 1 に設定しておく必要があります。


set pln:pln_enable_detach_suspend=1
set soc:pln_enable_detach_suspend=1

ドメインのスワップ領域は、別々のボードがホストとなっているコントローラに接続されているディスク上に、複数のパーティションとして構成する必要があります。この種の構成では、スワップ領域を動的に追加・削除できるので、特定のスワップパーティションに重要性が偏らなくなります (詳細は、swap(1M) マニュアルページを参照してください)。


注 -

メモリー (swapfs) やディスクのスワップ領域を切り離す場合は、現在実行中のプログラムに対応できるだけの十分なメモリーまたはスワップ領域が、ドメイン内に残っている必要があります。


あまり重要ではないシステムリソースをホストしているボードは、リソースへの代替パスの有無に関係なく切り離すことができます。切り離すボード上のデバイスはすべて、切り離しの前に閉じる必要があります。そのボードに関連するすべてのファイルシステムのマウントを解除し、スワップパーティションを削除してください。マウントを解除する前に、ファイルやデバイスを開いているプロセスの終了や、(lockfs(1M) を使用した) ファイルシステムにハードロックの設定が必要な場合もあります。

ボード上の入出力デバイスに関連するすべてのドライバは、ドライバの切り離しエントリポイントにおいて、DDI_DETACH オプションをサポートする必要があります。このオプションは、デバイスまたはアダプタに関連付けられているすべてのシステムリソースを解放します。

ドライバパラメタ

ndd(1M) コマンドを使用してネットワークドライバの構成パラメタを設定した場合、DR 切り離しまたは DR 接続を実行した後はパラメタの設定内容が無効になる可能性があります。DR 操作の後も変更したパラメタの内容が持続するようにドライバパラメタを設定するには、/etc/system ファイルまたは driver.conf ファイルを編集します。

ターゲットメモリーに関する制約事項

ページング不可能なメモリーが付いているボードを切り離すとき、DR はページング不可能なメモリーのコピー先となる、代替(ターゲット)メモリーボードを指定しなければなりません。Solaris 7、Solaris 8 では、ターゲットボードが見つからない場合は切り離し操作が拒否され、DR はシステムコンソールに以下の警告メッセージを表示します。


WARNING: sfdr: sfdr_pre_release_mem: no available target for mem-unit (board.0)

スワップ領域

ドメインのスワップ領域は、スワップデバイスと swapfs (メモリー) から構成されます。ドメインには、ページング可能なメモリーをフラッシュできるだけの十分なスワップ領域が必要です。たとえば、2 GB のドメインから 1 GB のメモリーを切り離す場合、負荷に応じて、1 GB のスワップ領域が必要です。スワップ領域が不足している場合、DR は、メモリーを搭載しているボードを切り離せません。この場合、メモリードレイン段階が完了しないので、ユーザーによる切り離し操作の中止が必要です。

ネットワークデバイス

DR では、切り離されているボード上のすべてのネットワークインタフェースの使用が自動的に終了されます。切り離し操作を完了すると、dr_daemon(1M) によって、切り離されたボード上の構成されたインタフェースがすべて識別され、次のような ifconfig(1M) コマンドが各インタフェース上に発行されます。


ifconfig interface down
ifconfig interface unplumb

さらに、FDDI インタフェースが切り離されている場合は、切り離し操作を実行する前に DR によって FDDI ネットワーク監視デーモンが終了されます。FDDI ネットワーク監視デーモンは、切り離しが完了した後で DR によって再起動されます。nf デバイスの /usr/sbin/nf_snmd デーモンの起動や停止は、FDDI インタフェースを含むボードが接続されるときには行われないことに注意してください。

これらのコマンドは、次のいずれかの条件を満たすネットワークインタフェースを含むボード上では実行されません。これらの場合、切り離し操作は失敗し、エラーメッセージが表示されます。


注意 - 注意 -

ネットワークインタフェースを切り離すと、NFS クライアントシステムに影響を与えることがあります。


非ネットワークデバイス

すべての非ネットワークデバイスは、切り離しの前に終了する必要があります。Hostview デバイスディスプレイ内および drshow(1M) 入出力リスト内に、特定のデバイスを開いたプロセスの数を示す open count フィールドがあります。どのプロセスがこれらのデバイスを開いたかを知るには、fuser(1M) コマンドをドメイン上で実行します。

非ネットワークデバイスに対して、いくつかの作業を行う必要があります。次に手順を示しますが、厳密にこの順序で実行する必要はありません。

  1. Alternate Pathing 機能または Solstice DiskSuite によるミラー化機能の冗長性という特徴を使用してボードに接続されているデバイスにアクセスする場合、これらのサブシステムを再構成し、他のシステムボードのコントローラを使用してデバイスまたはネットワークにアクセスできるようにします。AP 2.1 では、使用できる代替インタフェースがある場合、ディスクデバイスがそのインタフェースに自動的に切り替えられます。

  2. ボード常駐パーティション (たとえば、umount /partit) が存在する Solstice DiskSuite メタデバイスを含めて、ファイルシステムのマウントを解除します。

  3. Alternate Pathing 機能または Solstice DiskSuite データベースを、ボード常駐パーティションから削除します。Alternate Pathing または Solstice DiskSuite データベースの場所は、ユーザーによって明示的に選択され、変更することができます。

  4. Sun Enterprise Volume ManagerTM または Veritas Volume Manager によって使用される占有領域を、すべて削除します。デフォルトでは、ボリュームマネージャは制御する各デバイスの占有領域を使用するため、ボリュームマネージャに制御されているデバイスを切り離す前に、制御を解除する必要があります。

  5. swap(1M) を使用して、ディスクパーティションをスワップの構成から削除します。

  6. デバイスまたは raw パーティションを直接開くすべてのプロセスを終了するか、あるいはボード上の開いているデバイスを閉じるようにプロセスに指示します。

  7. 切り離しに対して危険なデバイスがボード上に存在する場合、デバイスのすべてのインスタンスを閉じ、modunload(1M) を使用してドライバの読み込みを取り消します。

  8. オペレーティング環境が一時停止される可能性がある場合は、開いているすべてのリアルタイムプロセスを終了します。


注意 - 注意 -

share(1M) ユーティリティを使用して共有ファイルシステムのマウントを解除すると、NFS クライアントシステムに影響を与えることがあります。


プロセス

プロセスに対して、いくつかの作業を行う必要があります。次に手順を示しますが、厳密にこの順序で実行する必要はありません。

  1. オペレーティング環境が一時停止される可能性がある場合は、実行中のリアルタイムプロセスをすべて終了します。

  2. ボード上のプロセッサに結合されているすべてのプロセスを、終了または解除します。

ボード上のプロセッサにプロセスが結合されていると、そのボードを切り離すことができません。終了または解除したプロセスは、pbind(1M) を使用して他のプロセッサに再結合できます。

プロセッサ

起動プロセッサには、netcon BBSRAM バッファーを保守する役割があります。起動プロセッサが常駐するボードを切り離す前に、dr_daemon(1M) によって起動プロセッサの役割を別のアクティブな (オンライン) プロセッサに割り当てる必要があります。

DR 操作後の再構成

この節では、システムボードを接続または切り離した後にドメインを再構成する方法を説明します。


注 -

Solaris 8 GA リリース以降では、手動で再構成する必要はありません。再構成のすべての作業は、新しい DDI サブシステムである devfsadm によって完了されます。


DR のユーザーインタフェースを使用して、DR 接続または DR 切り離し操作の後で、ドメインを再構成することができます。再構成シーケンスは、起動再構成シーケンス (boot -r) と同じです。


drvconfig; devlinks; disks; ports; tapes;

ボードを接続した後で、再構成シーケンスを実行すると、ドメインが認識していなかったデバイスのパス名が /etc/path_to_inst ファイルに書き込まれます。同じパス名が、/devices 階層にも追加され、それらへのリンクが /dev ディレクトリに作成されます。

再構成が必要な場合

以下のことが発生した場合は、ドメインの再構成が必要です。

ディスクデバイス

ディスクコントローラは、disks(1M) プログラムが認識する順に連続番号が割り当てられます。ディスクパーティションには、disks(1M) が割り当てたディスクコントローラ番号に従って /dev 名が付けられます。たとえば、ディスクコントローラ 1 経由でアクセス可能なディスクパーティションには、すべて /dev/dsk/cXtYdZsW という名前が付けられます。

この形式では、

X は、コントローラ番号です。

Y は、ターゲットディスク番号です (例外あり)。

Z は、論理ユニット番号です。

W は、パーティション番号です。

ボードを切り離した後で再構成シーケンスを実行すると、ボード上のすべてのディスクパーティションに対する /dev リンクが削除されます。残りのボードの番号はそのままです。新たに装着したボードのディスクコントローラには、disks(1M) によって、次に使用可能な最小の番号が割り当てられます。


注 -

ディスクコントローラ番号は、ディスクにアクセスするときに使用される /dev リンク名の一部です。再構成シーケンスでこの番号が変更されると、/dev リンク名も変更されます。この変更は、/dev リンク名を使用するファイルシステムテーブルやソフトウェア、たとえば Solstice DiskSuiteTM に影響することがあります。/etc/vfstab ファイルを更新し、/devリンク名を変更するためのその他の管理手順を行ってください。


DR ソフトウェアと AP ソフトウェアの相互処理

システムボードが接続または切り離されるか、あるいはドレイン状態になると、DR はそのことを AP サブシステムに通知します。加えて、DR は AP に対し、どのコントローラが AP データベースにあり、その状態がどうなっているか (有効か無効か) を問い合わせます。このやり取りは、dr_daemon(1M) と ap_daemon(1M) の間で行われます。ap_daemon(1M) がない場合は、ドメインの syslog メッセージバッファーにエラーメッセージが書き込まれて、DR 操作がエラーなしで続行されます。この相互処理を無効にするには、dr_daemon(1M) の起動時に、-a オプションを使用します。『Sun Enterprise 10000 Dynamic Reconfiguration リファレンスマニュアル』の dr_daemon(1M) マニュアルページを参照してください。

AP バージョン 2.1 を使用している場合は、DR の complete detach 段階でオペレーティング環境が、切り離すボード上の有効なディスクコントローラを自動的にオフに切り換えます。しかし、AP バージョン 2.0 を使用している場合は、complete detach を開始する前に、有効なディスクコントローラを手動で無効に切り換える必要があります。Solaris 8 の場合は、AP バージョン 2.3 にアップグレードする必要があります。DR と AP の相互処理についての詳細は、『Sun Enterprise サーバー Alternate Pathing ユーザーマニュアル』を参照してください。AP と SDS に関してさらに詳しい情報が必要な場合は『RAS Companion』を参照してください。

RPC 時間切れまたは接続の切断

それぞれのドメインで動作する dr_daemon(1M) は、Hostview や dr(1M) シェルアプリケーション (どれも SSP で動作します) との相互処理を、遠隔手続き呼び出し (RPC) を使って行います。DR 操作を行っているときに、RPC の時間切れや接続障害が報告された場合は、該当するドメインをチェックしてください。このデーモンは、各ドメインの /etc/inetd.conf ファイル内に必ず設定しておきます。以下の行がファイル内に必要です。


300326/4 tli rpc/tcp wait root ¥
/platform/SUNW,Ultra-Enterprise-10000/lib/dr_daemon

DR デーモンが /etc/inetd.conf 内に設定されていて、dr_daemon(1M) が動作中の場合は、このデーモンを終了させます。次に、HUP 信号を inetd (1M) デーモンに送ります。これによって、inetd(1M) デーモンが inetd.conf(4) 構成ファイルを読み込み直します。


# kill dr_daemon_pid
# kill -HUP inetd_pid

最初のコマンドの dr_daemon_pid は DR デーモンのプロセス IDです。次のコマンドの inetd_pidinetd(1M) デーモンのプロセス ID です。dr_daemon(1M) の起動で問題が発生する場合は、/var/adm/messagesinetd(1M) 関連のエラーメッセージがないかを調べてください。DR デーモンの実行可能ファイルは、必ず /platform/SUNW,Ultra-Enterprise-10000/lib ディレクトリ内に格納されます。

この時点で、DR 操作を再度、最初から試みてください。

システムの休止操作

ページング不可能な OpenBoot PROM(OBP) やカーネルメモリーが搭載されているシステムボード上で、DR 切り離し操作を行うと、オペレーティング環境が少しの間休止します。つまり、ドメインのセンタープレーンにおける、オペレーティング環境とデバイスのすべての活動が、操作の重要な段階において停止します。この休止はターゲットドメインに影響を与えるだけで、システム内の他のドメインには影響しません。

オペレーティング環境は、ボードを切り離す前に、プロセス、プロセッサ、およびデバイスの全活動を一時的に停止しようとします。オペレーティング環境が休止できない場合、以下のような理由が画面に表示されます。

プロセスが一時停止できない状態は、通常一時的なものです。休止に成功するまで操作を繰り返すことができます。

リアルタイムプロセスが実行中である、または一時停止に対して危険なデバイスが開いているために休止が失敗した場合は「強制休止を実行できる状態」です。休止の再試行または強制再試行のどちらかを実行することができます。休止の強制は、強制休止を実行できる状態でも、オペレーティング環境に休止を試行し続ける許可を与えることを意味します。


注意 - 注意 -

force オプションを使用する際は、慎重に実行してください。


リアルタイムプロセスが動作中である場合は、そのプロセスを一時停止することによって、プロセスが実行する機能に悪影響を与えないかどうかを判断します。影響がなければ、オペレーティング環境の休止を強制することができます (休止を強制するには、『Sun Enterprise 10000 Dynamic Reconfiguration ユーザーマニュアル』の「Hostview を使用してボードを切り離す」で説明するように、Hostview の Force ボタンをクリックするか、dr(1M) シェルアプリケーションで force オプションを付けて complete_detach(1M) コマンドを入力します)。影響がある場合は、操作を中止して後で再度試みてください。

一時停止に対して危険なデバイスが開いていて、閉じることができない場合は、手動でそのデバイスを一時停止してから、オペレーティング環境に休止を強制することができます。オペレーティング環境が再開したら、手動でそのデバイスを再開します。「一時停止に対して安全なデバイスと一時停止に対して危険なデバイス」を参照してください。

一時停止に対して安全なデバイスと一時停止に対して危険なデバイス

一時停止に対して安全なデバイスとは、オペレーティング環境の休止中に、ドメインのセンタープレーンにアクセスしない (たとえば、メモリーへのアクセスやシステムの中断がない) デバイスです。オペレーティング環境の休止 (一時停止/再開) をサポートし、一時停止要求が正常に完了することを保証するドライバは、一時停止に対して安全と見なされます。一時停止に対して安全なドライバが管理するデバイスは、一時停止要求があったときに開いていたとしても、ドメインのセンタープレーンにはアクセスしません。他の入出力デバイスはすべて、開いているときは一時停止に対して危険です。


注 -

サンの提供するドライバのうち一時停止に対して安全であるものは、stsd、ispespfassbuspcipci-pciqfehme (SunFastEthernetTM)、nf (NPI-FDDI)、qe (Quad Ethernet)、le (Lance Ethernet)、SSA ドライバ (socplnssd)、および Sun StorEdgeTM A5000 ドライバ (sfsocalses) です。


soc および pln ドライバでデバイスの中断ができるようにするには、/etc/system ファイルを編集して pln_enable_detach_suspend 変数および soc_enable_detach_suspend 変数の値を 1 に設定する必要があります。以下に例を示します。


set pln:pln_enable_detach_suspend=1
set soc:soc_enable_detach_suspend=1

一時停止に対して危険なデバイスが開いている場合、オペレーティング環境は、休止要求を拒否します。デバイスを手動で一時停止できる場合は、オペレーティング環境に休止を強制することができます。デバイスを手動で一時停止するには、そのデバイスを開いているプロセスを終了することによって、デバイスを閉じなければならない場合もあるので、ユーザーにデバイスを使用しないように伝えるか、ケーブルを外します。たとえば、非同期の任意入力を許可するデバイスが開いている場合は、オペレーティング環境を休止させる前にケーブルの接続を外すことによって、トラフィックがそのデバイスに到着してそのデバイスがドメインのセンタープレーンにアクセスすることを防止することができます。オペレーティング環境が再開してから、再度ケーブルを接続します。デバイスがドメインのセンタープレーンにアクセスするのを一時停止できない場合は、オペレーティング環境の休止は強制できません。強制すると、ドメインの障害やハングアップが生じることがあります。この場合は、一時停止に対して危険なデバイスが閉じた状態になるまで DR 操作を延期します。


注意 - 注意 -

一時停止に対して危険なデバイスの処理を実行中に、休止操作を強制すると、ドメインがハングアップすることがあります。ドメインがハングアップしても、Sun Enterprise 10000 システムで実行中の他のドメインには影響しません。


テープデバイスのための特別な休止処理

Solaris 8 オペレーティング環境においては、サンがサポートするテープデバイスは基本的にすべて一時停止に対して安全かつ切り離しに対して安全です (サンがサポートするデバイス一覧に関しては st(7D) マニュアルページを参照してください)。切り離すシステムボードにサンのテープデバイスが含まれる場合は、そのテープデバイスの一時停止を実行しなくても、そのボードを安全に切り離せます。サンが本来サポートしないテープデバイスも使用できますが、これを切り離しに対して安全にする必要があります。入力/出力操作および DR 操作を正常に行うには、/kernel/drv/st.conf 内に ST_UNLOADABLE (0x0400) フラグを設定して適切なエントリを作成する必要があります (詳細は、st(7D) マニュアルページを参照してください)。st.conf を変更した後、新しいエントリを処理するためにドメインを再起動してください。

Sun StorEdge A3000 のための特別な処理

Sun StorEdgeTM A3000 (旧称 RSM Array 2000) は、自動負荷均衡と自動フェイルオーバー機能を備えた二重コントローラパスを備えています。StorEdge A3000 のコントローラを片方または両方に持つシステムボードを切り離す場合は、切り離し操作を開始する前にコントローラをオフラインにするか、アイドル状態にします。コントローラは、rm6 または rdacutil コマンドを使って手動でオフラインにできます。

DR と DDI

すべてのドライバが Sun Enterprise 10000 システムの Dynamic Reconfiguration(DR: 動的再構成) 機能をサポートしているわけではありません。DR をサポートするためには、ドライバが DDI_DETACHDDI_SUSPEND/DDI_RESUME の 3 つの基本的な DDI/DKI(Device Driver Interface/Device Kernel Interface) を実行できることが必要です。これら 2 つの機能は、それぞれ DR に異なる影響を与えます。

DR と DDI_DETACH

デバイスのホストとなっているシステムボードは、そのデバイスのドライバが DDI_DETACH インタフェースをサポートしているか、または現在読み込まれていない場合にのみ切り離しが可能です。DDI_DETACH は、他のデバイスを処理している他のインスタンスに影響することなく、ドライバの特定のインスタンスを切り離すことができます。DDI_DETACH をサポートしているドライバは、切り離しに対して安全と呼ばれます。DDI_DETACH をサポートしていないドライバは、切り離しに対して危険と呼ばれます。

読み込まれている切り離しに対して危険なドライバを切り離すには、以下の処理が必要です。

上記の処理が完了できない場合は、ブラックリストに登録されているボードを使ってドメインを再起動し (blacklist(4) マニュアルページ参照)、後でそのボードを削除することもできます。


注 -

他社のドライバ (Sun 以外のベンダーから購入したドライバ) の多くは、標準の Solaris modunload(1M) インタフェースをサポートしていません。通常の操作中、これらの機能を呼び出す条件はめったに起こりませんが、機能が欠けていたり、不適切な動作をしたりすることがあります。他社のデバイスを評価したりインストールする段階で、これらのドライバの機能をテストすることをお薦めします。


DR と DDI_SUSPEND/DDI_RESUME

ページング不可能なメモリーを搭載しているボードの DR 切り離しを行うには、ドメインを休止させる必要があります。メモリーを切り離せるのは、ドメイン全体で (切り離そうとしているボード上だけでなく)、すべてのドライバが DDI_SUSPEND/DDI_RESUME ドライバインタフェースをサポートしているか、または閉じている場合に限られます。DDI 機能をサポートしているドライバは一時停止に対して安全と呼ばれ、そうでないドライバは一時停止に対して危険と呼ばれます。

ドメインの休止を実行できる状態にする最も簡単な方法は、一時停止に対して危険なデバイスをすべて閉じることです。各ネットワークドライバに対して、ifconfig(1M) コマンドに down パラメタを付けて実行してから、再度 unplumb パラメタを付けて実行します (詳細は、ifconfig(1M) マニュアルページを参照してください)。


注 -

unplumb は、すべてのネットワークドライバに対して 実行できるはずです。ただしこの動作は、通常の環境ではほとんどテストされることがなく、ドライバエラーになることがあります。DR を使用する場合は、一時停止に対して危険なデバイスを評価したりインストールする段階で、これらのドライバの機能をテストすることをお薦めします。


一時停止に対して危険なドライバが開いているためにシステムが休止を拒否する場合は、動作しているドメインを強制的に休止することができます。これによって、オペレーティング環境に対して切り離しを強制することができます。システム内で一時停止に対して危険なデバイスが開いていても切り離しを強制的に行うことはできます。ただし、切り離しに対して危険なデバイスがボード上にあってそのドライバが読み込まれている場合、切り離しを強制することはできませんので注意してください。

オペレーティング環境の休止を正常に強制するには、コントローラを手動で休止する必要があります。この手順はデバイスによって異なります。休止操作の実行中に、デバイスによるデータの転送やメモリーの参照など、休止操作を妨げるような動作が発生しないようにしてください。コントローラの休止手順をすべてテストしてから、システム全体の休止を実行してください。


注意 - 注意 -

コントローラを正常に休止せずにオペレーティング環境の強制休止 (force) オプションを使用すると、ドメイン障害に続いて再起動が発生することがあります。