Open-iSCSI

提供: ArchWiki
2024年1月1日 (月) 13:43時点におけるKgx (トーク | 投稿記録)による版 (トラブルシューティングを翻訳して追加)
ナビゲーションに移動 検索に移動

関連記事

iSCSI を使うことで IP ベースのネットワーク上のストレージにアクセスすることができます。

エクスポートされるストレージエンティティがターゲットでインポートするエンティティがイニシエータです。

この記事では Open-iSCSI イニシエータを使って iSCSI ターゲットにアクセスする方法を説明します。

インストール

公式リポジトリから open-iscsi パッケージをインストールしてください。

ノート: 旧式のイニシエータ Linux-iSCSI は2005年4月に Open-iSCSI に統合されました。linux-iscsi.org は LIO ターゲットのウェブサイトなので間違えないで下さい。

概要

以下は構成要素の互いの関係を示した図式になります。より詳しいバージョンが次のページにあります: Open-iSCSI modules

 +-------------------------------------------------------+             
 | Targets & Sessions configuration Database (DBM based) |             
 +-------------------------------------------------------+             
                                                                       
 +--------------------------+     +----------------------------------+ 
 | iscsiadm                 |     | iscsid: iSCSI daemon             | 
 |                          |     |                                  | 
 |  * Command line tool     |<--->|  * Implements Session management | 
 |  * Manages database of   |     |  * Communicates with iscsiadm    | 
 |    sessions and targets  |     |    and iscsi kernel modules      | 
 +--------------------------+     +---------------+------------------+ 
                                                  |                    
 User space                                       |                    
- - - - - - - - - - - - - - - - - - - - - - - - - | - - - - - - - - - -
 Kernel                                           v                    
         +-----------------------------------------------------------+ 
         | kernel modules: scsi_transport_iscsi, iscsi_tcp, libiscsi | 
         +-----------------------------------------------------------+ 

Open-iSCSI の README より:

永続的な設定は DBM データベースとして実装され、以下の2つのテーブルを含みます:

  • ディスカバリテーブル (/etc/iscsi/send_targets)
  • ノードテーブル (/etc/iscsi/nodes)

設定

サービスの起動

iscsid は systemd ユニットで管理します。

systemdopen-iscsi.service を起動してください。

SCSI ターゲットがイニシエータによる認証を必要とする場合、設定ファイル /etc/iscsi/iscsid.conf を更新してください。

イニシエータのログインセッションを認証してターゲットからイニシエータにセッションを確立するのには以下のパラメータを使います:

node.session.auth.authmethod = CHAP
node.session.auth.username = <username in target>
node.session.auth.password = <password in target>
node.session.auth.username_in = <username in initiator>
node.session.auth.password_in = <password in initiator>

イニシエータのディスカバリセッションを認証してターゲットからイニシエータにセッションを確立するのには以下のパラメータを使います:

discovery.sendtargets.auth.authmethod = CHAP
discovery.sendtargets.auth.username = <username in target>
discovery.sendtargets.auth.password = <password in target>
discovery.sendtargets.auth.username_in = <username in initiator>
discovery.sendtargets.auth.password_in = <password in initiator>
警告: 同一のパスワードを設定することはできません。上記の設定では別々の4つのパスワードを設定する必要があります。

ターゲットのディスカバリ

# iscsiadm -m discovery -t sendtargets -p <portalip>

ターゲットの削除

# iscsiadm -m discovery -p <portalip> -o delete

利用可能なターゲットにログイン

# iscsiadm -m node -L all

もしくは特定のターゲットにログイン:

# iscsiadm -m node --targetname=<targetname> --login

ログアウト:

# iscsiadm -m node -U all

情報の確認

実行中のセッションを確認するには:

# iscsiadm -m session -P 3

上のコマンドの最後の行にはアタッチされたデバイスの名前が表示されます。例:

Attached scsi disk sdd State: running

既知のノードを確認するには:

# iscsiadm -m node

ボリュームのオンラインリサイズ

iscsi ブロックデバイスにパーティションテーブルが含まれている場合、オンラインリサイズを行うことはできません。その場合、ファイルシステムをアンマウントしてからパーティションのサイズを変更する必要があります。

  1. 現在のセッションで有効なノードを再スキャン:
    # iscsiadm -m node -R
  2. マルチパスを使っている場合、マルチパスのボリューム情報も再スキャンしてください:
    # multipathd -k"resize map sdx"
  3. 最後にファイルシステムをリサイズ:
    # resize2fs /dev/sdx

ヒントとテクニック

接続されている iSCSI デバイスを確認する

次のコマンドを使用して、接続されている iSCSI デバイスが /dev/ ツリー内のどこにあるかを確認することもできます:

$ ls -l /dev/disk/by-path/ip-*

起動時にターゲットにログインする

ブート中にターゲットにログインするには、iscsi.service有効化 して実行し、ノードの設定に node.startup = automatic が含まれていることを確認します (/var/lib/iscsi/nodes/iqn.node-name/node-ip-address,port)

ノート: systemd ユニット名は iscsid.service ではなく iscsi.service です。[1]

トラブルシューティング

Client IQN

サーバー (ターゲット) では、アカウント設定に /etc/iscsi/initiatorname.iscsi のクライアント IQN を含める必要がある場合があります。

iSCSI デーモンのデバッグ

iSCSI デーモンをデバッグモードで実行するには (事前に iscsid.service を停止していることを確認してください)

# iscsid -d 8 -c /etc/iscsi/iscsid.conf -i /etc/iscsi/initiatorname.iscsi -f

参照