問題のサマリー: SUNWscxvm.stop で ldm stop がタイムアウトすると、論理ドメイン (LDom) がバインドされたままになるため、クラスタリソースグループがそのドメインをクリーンな状態でシャットダウンできなくなります。この動作によって、リソースグループの正常なフェイルオーバーが妨げられます。また、現在 LDom の停止中に STOP TIMEOUT 値は考慮されておらず、60 秒後に LDom は自動的にタイムアウトします。
次のエラーメッセージのいずれかが表示されることがあります。
[ID 885590 daemon.notice] Domain domain_name has been forcefully terminated. [ID 567783 daemon.notice] domain stop result code : 0 - ldom_name stop timed out. The domain might still be in the process of shutting down. [ID 567783 daemon.notice] domain stop result code : 0 - Either let it continue, or specify -f to force it to stop. [ID 567783 daemon.notice] domain stop result code : 0 - LDom ldom_name cannot be unbound because it is stopping [ID 567783 daemon.notice] domain stop result code : 0 - LDom ldom_name stopped
ldm list を実行すると、この LDom が bound 状態にあることが表示されます。
# ldm list NAME STATE FLAGS CONS VCPU MEMORY UTIL NORM UPTIME primary active -n-cv- UART 16 15872M 0.1% 0.1% 28m ldom-1 active -n---- 5000 8 8G 0.0% 0.0% 28m ldom-2 bound ------ 5001 112 112G
LDom の停止タイムアウトメッセージのあとに clresourcegroup online コマンドが発行された場合、LDom が強制的に終了されているため、このコマンドはハングアップします。
回避方法: この回避方法は、少なくとも Logical Domains Manager 3.1 が動作するノードでのみ機能します。LDom のタイムアウト値を変更するには:
すべてのノード上で /opt/SUNWscxvm/bin/functions ファイルを編集して、次の行を
${HATIMERUN} -t ${MAX_STOP_TIMEOUT} -k KILL ${LDM} stop-domain ${DOMAIN} >> $LOGFILE 2&1
次の行に置き換えます。
LDOM_TIMEOUT=$((MAX_STOP_TIMEOUT*80/100)) ${HATIMERUN} -t ${MAX_STOP_TIMEOUT} -k KILL ${LDM} stop-domain -t ${LDOM_TIMEOUT} ${DOMAIN} >> $LOGFILE 2&1
これで、ldm stop timeout は 60 秒ではなく、LDOM_TIMEOUT 秒になりました。LDOM_TIMEOUT 秒内に LDom がシャットダウンしない場合は、最初に ldm stop-domain コマンドが発行されます。次に、ldom stop-domain -q が発行されます。このコマンドは、自動的に LDom を強制的に停止します。ldom stop-domain -q の実行時間を考慮して、LDOM_TIMEOUT は MAX_STOP_TIMEOUT の 80% に設定されています。