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