Linuxサーバーからブロックストレージボリュームへマルチパス接続していますが、iSCSIイニシエーターのタイムアウト値を、iscsiadmコマンドから変更することができません。

ブロックストレージ, 運用

2018年12月6日 (2021年5月4日:更新)

Linux OSのカーネルの仕様が原因の可能性があります。ご利用中のカーネルバージョンをご確認いただき、【原因】記載のバージョン以降である場合は、【設定変更手順】記載の手順でiSCSIイニシエーターのタイムアウト値を変更してください。

原因

iSCSI + DM-Multipath環境の場合、まず”fast_io_fail_tmo”という/etc/multipath.confのパラメータのデフォルト値(5)が、カーネルが保持するrecovery_tmo変数へ設定されます。

このrecovery_tmo変数はiscsiadmでreplacement_timeoutを設定するときに使用されるものと同じですが、あるカーネルから仕様変更があり、iSCSI側の操作で値を上書きしないように修正されました。

このため、iscsiadmでいくら値を変更してもmultipath側のデフォルト設定が有効となるため、結果的に値が変更できない事象が発生します。

なお、iSCSI側の操作で値を上書きしないように変更されたカーネルは次の通りです。

・RHEL7.1(3.10.0-229.20.1.el7)※途中のバージョンから
・RHEL7.2(3.10.0-327.el7)

設定変更手順

恒久的に設定する場合

/etc/multipath.confファイルで、次のいずれかを設定する。

1. fast_io_fail_tmo 120 (この値がrecovery_tmoに反映される)

– /etc/multipath.confのdefaultsセクションに fast_io_fail_tmo 120 を設定する
– multipathdの再起動

2. fast_io_fail_tmo off (replacement_timeoutの値(120)がrecovery_tmoに反映される)

– /etc/multipath.confのdefaultsセクションに fast_io_fail_tmo off を設定する
– multipathdの再起動
– replacement_timeoutを変更
– iscsiセッションのログアウト/ログイン

※I/O処理中であっても安全にmultipathdの再起動は可能です。

暫定的に設定する場合

対応するsysfsのrecovery_tmo値を強制的に変更してください。

例)
# echo “120” > /sys/class/iscsi_session/session1/recovery_tmo
# echo “120” > /sys/class/iscsi_session/session2/recovery_tmo