はじめに
LinuxやVolume Groupのベストプラクティスで/etc/iscsi/iscsid.confのパラメータのデフォルト値を修正することが推奨されています。
しかし、このファイルの構成がどのようになっていて、デフォルト値でどのような設定が定義されているのか理解できていなかったため、この機会に整理しました。
お断り
本記事の説明には、Microsoft Copilotを使用しております。
使用したマシン
AHVを使用しました。
Kernel: Linux 5.10.194-5.20230302.0.991650.el8.x86_64
version:el8.nutanix.20230302.101026
ファイルの構成
次の通りです。
- iscsid daemon config
- NIC/HBA and driver settings
- Startup settings
- CHAP Settings
- Timeouts
- Retry
- session and device queue depth
- MISC SYSTEM PERFORMANCE SETTINGS
- iSCSI settings
- Workarounds
※青字がこの記事の対象
iscsid daemon config
iscsid.startup
通常起動 (初期スクリプトで起動) 初期スクリプトが実行される際にデーモンを常に起動するかどうかを制御します。この場合、デーモンは常にバックグラウンドで動作することになります。
オンデマンド起動 (必要なときのみ起動) iSCSIツールが最初にアクセスしようとしたときにiscsidを起動する方法です。 この設定は、システムリソースの最適化の観点から便利です。
オプション [systemd]iscsid.startup = /bin/systemctl start iscsid.socket iscsiuio.socket [非systemd]iscsid.startup = /usr/bin/service start iscsid
iscsid.safe_logout
このオプションは、安全なログアウトに関連しています。 デフォルトでは「No」になっていますが、「Yes」を設定すると次のような挙動になります:
- 現在のiSCSIセッションを通じてアクセス可能なデバイス上にアクティブなマウントがある場合、ログアウトを拒否します。
これにより、誤ってストレージへの接続を切断することによるデータ損失や破損を防ぎます。
NIC/HBA and driver settings
open-iscsiのセッション作成とバインディング
セッションの作成: open-iscsiは、iSCSIターゲットに接続するためのセッション(通信セッション)を作成します。このセッションは、ストレージデバイスとやりとりするために必要不可欠です。
NIC/HBAへのバインド: 作成されたセッションを特定のNICまたはHBAに紐付けることができます。これにより、セッションが特定の物理または仮想ネットワークインターフェースに制限されます。以下のような状況で有用です:
- 複数のNICを使ったiSCSI接続のトラフィック分散。
- 特定のHBAを利用したパフォーマンス最適化。
iface設定ファイル
iface設定ファイルについて: 上記に述べられている「example iface config file」は、iSCSIセッションを特定のNICまたはHBAにバインドする方法を定義する設定ファイルです。このファイルでは、以下のパラメーターを指定できます:
- 使用するデバイス(例えば、eth0など)。
- iSCSIでの通信に使うIPアドレスまたはその他のプロトコル情報。
参考例: /etc/iscsi/ifacesディレクトリに格納されることが多いこの設定ファイルを編集することで、複数のNICやHBAでの管理が容易になります。
Startup settings
node.startup
この設定は、iSCSIセッションの起動方法を指定します。
automatic(デフォルト設定): iSCSIセッションが自動的に起動します。例えば、システムの起動プロセス中にiSCSIターゲットへの接続が確立されます。
manual: iSCSIセッションを手動で起動する設定です。この場合、管理者がiscsiadmコマンドなどを使用してセッションを開始する必要があります。
node.leading_login
この設定は、automaticノードに対して複数のiface(ネットワークインターフェース)が利用可能な場合のログイン方法を制御します。
Yesに設定した場合:
- 利用可能なifaceごとに順番にログインを試行し、最初に成功したifaceで処理を終了します
- これは効率的で、必要最小限のログイン試行を行う設定です。
No(デフォルト設定):
- 利用可能なすべてのifaceに対して同時にログインを試行します。
- 接続速度の向上が期待されますが、リソース負荷が増える場合があります。
推奨用途
node.startup = automatic:
自動起動が必要な環境(例:常にiSCSIターゲットへの接続が必要なサーバー環境)に適しています。
node.leading_login:
サーバーリソースが限られている場合はYesを検討するとよいでしょう。
高速な接続確立が優先される場合や、複数のifaceがあるネットワーク環境ではデフォルトのNoが適しています。
CHAP Settings
node.session.auth.authmethod
このオプションは、ノードセッションで使用する認証方式を指定します。CHAP を設定すると、CHAP認証を有効にします。デフォルトは None(認証なし)です。
node.session.auth.chap_algs
CHAP認証で使用するアルゴリズムを指定します。
有効な値は以下のとおりです:
- MD5 (デフォルト)
- SHA1
- SHA256
- SHA3-256
複数のアルゴリズムをカンマ区切りで指定できます。
優先度が高いものを先頭に記載します(例:SHA3-256,SHA256,SHA1,MD5)。
node.session.auth.username と node.session.auth.password
ターゲット(ストレージ側)でイニシエーター(クライアント側)を認証するためのCHAPユーザー名とパスワードを設定します。
対応する設定例:
bash node.session.auth.username = your_username node.session.auth.password = your_password
node.session.auth.username_in と node.session.auth.password_in
イニシエーター側でターゲットを認証するためのCHAPユーザー名とパスワードを設定します(双方向認証用)。
対応する設定例:
bash node.session.auth.username_in = target_username node.session.auth.password_in = target_password
discovery.sendtargets.auth.authmethod
iSCSIターゲットに対するディスカバリーセッションで使用する認証方式を指定します。
CHAP に設定すると、CHAP認証を有効にします。デフォルトは None(認証なし)。
discovery.sendtargets.auth.username と discovery.sendtargets.auth.password
ディスカバリーセッションにおいて、ターゲットがイニシエーターを認証するためのCHAPユーザー名とパスワードを設定します。
Timeouts
node.session.timeo.replacement_timeout
概要: セッション再接続が失敗した場合に、SCSIコマンドをアプリケーションにエラーとして返すまでの時間を指定します。 デフォルト値: 120秒 特殊な値: 0: 入出力(I/O)は即座に失敗します。 負の値(例:-1など): セッションが再ログインされるか、ユーザーが手動でログアウトコマンドを実行するまで、I/Oがキューに保持されます。
node.conn[0].timeo.login_timeout
概要: ログイン処理が完了するまでの待機時間を指定します。 デフォルト値: 15秒 用途: ログインが長時間かかる可能性がある場合、値を増やすと接続安定性が向上することがあります。
node.conn[0].timeo.logout_timeout
概要: ログアウト処理が完了するまでの待機時間を指定します。 デフォルト値: 15秒 用途: セッション終了時の遅延を考慮してタイムアウト値を調整できます。
node.conn[0].timeo.noop_out_interval
概要: iSCSI接続でPing(NOP-Outメッセージ)を送信する間隔を指定します。 デフォルト値: 5秒 用途: 接続の健全性を確認するためのハートビートとして機能します。
node.conn[0].timeo.noop_out_timeout
概要: Ping(NOP-Outメッセージ)に対する応答を待機する時間を指定します。この時間を超えると接続が失敗したとみなされます。 デフォルト値: 5秒 用途: 応答がない場合、SCSIレイヤーへのエラー通知や、dm-multipath環境では別のパスへのフェイルオーバーを開始します。
node.session.err_timeo.abort_timeout
概要: 操作の中止応答を待機する時間を指定します。この時間を超えると操作が失敗し、論理ユニットのリセットを試行します。 デフォルト値: 15秒
node.session.err_timeo.lu_reset_timeout
概要: 論理ユニット(LU)の応答を待機する時間を指定します。この時間を超えると操作が失敗し、セッション再確立が試みられます。 デフォルト値: 30秒
node.session.err_timeo.tgt_reset_timeout
概要: ターゲットの応答を待機する時間を指定します。この時間を超えると操作が失敗し、セッション再確立が試みられます。 デフォルト値: 30秒
続き

関連記事


コメント