重要なパラメータは下記の3つです。
node.conn[0].timeo.noop_out_interval(デフォルト5秒)
pingによるコネクションの死活監視間隔
node.conn[0].timeo.noop_out_timeout (デフォルト5秒)
pingによるコネクションの死活監視がコネクションエラーと判定するまでの待ち時間
node.session.timeo.replacement_timeout(デフォルト120秒)
コネクションエラーが発生してからI/Oエラーを返すまでの待ち時間。この時間までに死活監視がコネクション復帰を報告すればI/Oエラーは返らない。
デフォルト設定で障害が発生した場合、下記のような流れとなります。
死活監視のpingが発行される(タイミングによって障害発生から1〜5秒経過)
pingがタイムアウトする(+5秒経過)
継続して死活監視のpingが発行され、最終的にpingが成功しないとOSにI/Oエラーが返る(+120秒経過)
ASMがI/Oエラーを検出して障害ストレージを切り離し、残りのストレージで処理を再開する(即時)
経過時間をまとめると、(1〜5)+ 5 + 120 = 126〜130秒程の時間が切り替えまでに必要となります。
これを例えば障害試験等で確実に15秒程で切り替えを発動させたい場合は次のように設定すれば実現できます。
node.conn[0].timeo.noop_out_interval = 1
node.conn[0].timeo.noop_out_timeout = 5
node.session.timeo.replacement_timeout = 10
この場合経過時間は(〜1)+ 5 + 10 = 15〜16秒となります。
このiSCSI Initiatorのパラメータ設定は下記のiscsiadmコマンドで設定できます。
ただし、ログイン済みのセッションについては反映されません。
反映させるには一旦ログアウトし、再度ログインしてセッションを再確立させる必要があります。
# iscsiadm -m node -p [ターゲットのIP] -o update -n [パラメータ名] -v [設定値]