Open-iSCSI
関連記事
iSCSI を使うことで IP ベースのネットワーク上のストレージにアクセスすることができます。
エクスポートされるストレージエンティティがターゲットでインポートするエンティティがイニシエータです。
この記事では Open-iSCSI イニシエータを使って iSCSI ターゲットにアクセスする方法を説明します。
目次
インストール
公式リポジトリから open-iscsi パッケージをインストールしてください。
概要
以下は構成要素の互いの関係を示した図式になります。より詳しいバージョンが次のページにあります: 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 ユニットで管理します。
systemd で open-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>
ターゲットのディスカバリ
# 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 ブロックデバイスにパーティションテーブルが含まれている場合、オンラインリサイズを行うことはできません。その場合、ファイルシステムをアンマウントしてからパーティションのサイズを変更する必要があります。
- 現在のセッションで有効なノードを再スキャン:
# iscsiadm -m node -R
- マルチパスを使っている場合、マルチパスのボリューム情報も再スキャンしてください:
# multipathd -k"resize map sdx"
- 最後にファイルシステムをリサイズ:
# 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
)
トラブルシューティング
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
参照
- iSCSI ブート - iSCSI ターゲットで Arch Linux を起動。