2009年10月7日水曜日

Solaris10、iscsitgtd が突然起動しない

zfsで作った領域をiSCSIのターゲットにでもしようかと、しばらく止めてたiscsitgtを起動してみた。
 

$svcs iscsitgt
maintenance 20:47:28 svc:/system/iscsitgt:default


え。
 
一応治ったのでエントリ。
 
 


起動しない原因を突き止めるべく、"/var/svc/log/system-iscsitgt:default.log"のログを見てみる。
 
/lib/svc/method/svc-iscsitgt: smf_zonename: 見つかりません。
/lib/svc/method/svc-iscsitgt: smf_is_nonglobalzone: 見つかりません。
Failed to start iSCSI daemon

 
え。
 
not found?
しばらく前は問題無かったのになあ。
それ以降にローカルゾーンを作ったり消したりはしたので、ゾーン関係かと思いもしたが、zonename 関連のログは正常起動の時も同じものだった。単にゾーンの有無で直接関係はないだろう。
 
 


仕方がないので SMF(Service Management Facility)から起動するスクリプトを追ってみると、結局"/usr/sbin/iscsitgtd" を直接叩いていることが分かった。
 

実行してみると。

$/usr/sbin/iscsitgtd
$echo $?
96
 

む、何だよ終了コード96て。
起動スクリプト的にはこれが0でないと「Failed to start iSCSI daemon」とログに出力。
まあ実際そうなんだから仕方ないか。
 
 

原因を突き止めるべく、とりあえずトレース。
WEBも調べたが有力な手掛かりはすぐには引っかからなかった、珍しいのかな。
 

$truss /usr/sbin/iscsitgtd
--snip--
open("/etc/iscsi//config.xml", O_RDONLY) Err#2 ENOENT
--snip--

 

おっとこれかな。
 

??こないだまで設定ファイルは
"/etc/iscsi/target_config.xml" こうじゃなかったか。
中身を見ても変哲もないほぼ空っぽのXML。
 
 


少し考えた末、config.xmlの名前にファイルコピーして再チャレンジ。
 

$svcadm enable iscsitgt
$svcs iscsitgt
STATE STIME FMRI
online 21:10:35 svc:/system/iscsitgt:default

 


起動したね。(svcadmの-vはいつも忘れるなあ)
 

そのあとがまた謎で、"/etc/iscsi/" を見たら "target_config.xml" も "config.xml" も無くなっており、backupというディレクトリに突っ込まれていた。
 
 

どういうことだ一体・・・仕様変更なのかな。
するのはいいが止まっちゃうのは勘弁してよね。