「Open-iSCSI」の版間の差分

提供: ArchWiki
ナビゲーションに移動 検索に移動
(rm {{Lowercase title}})
(序文を更新)
 
(同じ利用者による、間の5版が非表示)
7行目: 7行目:
 
{{Related|iSCSI ブート}}
 
{{Related|iSCSI ブート}}
 
{{Related articles end}}
 
{{Related articles end}}
 
[[Wikipedia:ja:iSCSI|iSCSI]] を使うことで IP ベースのネットワーク上のストレージにアクセスすることができます。
 
 
エクスポートされるストレージエンティティが'''[[iSCSI ターゲット|ターゲット]]'''でインポートするエンティティが'''イニシエータ'''です。
 
 
 
この記事では [https://github.com/open-iscsi/open-iscsi Open-iSCSI] イニシエータを使って iSCSI ターゲットにアクセスする方法を説明します。
 
この記事では [https://github.com/open-iscsi/open-iscsi Open-iSCSI] イニシエータを使って iSCSI ターゲットにアクセスする方法を説明します。
  +
  +
{{Note|iSCSI は暗号化されません。安全でないチャネルを介してデータを送信することはお勧めできません。}}
   
 
== インストール ==
 
== インストール ==
[[公式リポジトリ]]から {{Pkg|open-iscsi}} パッケージを[[pacman|インストール]]してください。
 
   
  +
[[公式リポジトリ]] から {{Pkg|open-iscsi}} パッケージを [[pacman|インストール]] してください。
{{Note|旧式のイニシエータ [https://sourceforge.net/projects/linux-iscsi/ Linux-iSCSI] は2005年4月に Open-iSCSI に統合されました。[http://linux-iscsi.org/ linux-iscsi.org] は LIO [[iSCSI ターゲット|ターゲット]]のウェブサイトなので間違えないで下さい。}}
 
  +
  +
{{Note|旧式のイニシエータ [https://sourceforge.net/projects/linux-iscsi/ Linux-iSCSI] は2005年4月に Open-iSCSI に統合されました。[http://linux-iscsi.org/ linux-iscsi.org] は LIO [[iSCSI ターゲット|ターゲット]] のウェブサイトなので間違えないで下さい。}}
   
 
== 概要 ==
 
== 概要 ==
  +
 
以下は構成要素の互いの関係を示した図式になります。より詳しいバージョンが次のページにあります: [https://archive.is/HHYKR/90a7a1c178a2c069a7cbc0b578b6fb5854f827fa.jpg Open-iSCSI modules]
 
以下は構成要素の互いの関係を示した図式になります。より詳しいバージョンが次のページにあります: [https://archive.is/HHYKR/90a7a1c178a2c069a7cbc0b578b6fb5854f827fa.jpg Open-iSCSI modules]
 
{{bc|<nowiki>
 
{{bc|<nowiki>
49行目: 48行目:
   
 
== 設定 ==
 
== 設定 ==
=== サービスの起動 ===
 
{{ic|iscsid}} は systemd ユニットで管理します。
 
   
  +
=== サービスを開始する ===
[[systemd#ユニットを使う|systemd]] で {{ic|open-iscsi.service}} を起動してください。
 
   
  +
{{ic|iscsid}} は systemd ユニットによって管理されます。
SCSI ターゲットがイニシエータによる認証を必要とする場合、設定ファイル {{ic|/etc/iscsi/iscsid.conf}} を更新してください。
 
   
  +
{{ic|iscsid.service}} または {{ic|iscsid.socket}} を [[起動]] します。
イニシエータのログインセッションを認証してターゲットからイニシエータにセッションを確立するのには以下のパラメータを使います:
 
  +
  +
=== ISCSI 修飾名 (IQN) ===
  +
  +
IQN はすべてのデバイスを識別するために使用されます。
  +
  +
Open-ISCSI は、イニシエータ IQN を {{ic|/etc/iscsi/initiatorname.iscsi}} ファイルに {{ic|1=InitiatorName=''iqn''}} の形式で保存します。
  +
  +
インストール中に、初期 IQN が生成されます。新しい IQN を生成したい場合は、新しい IQN を出力する {{ic|iscsi-iname}} ユーティリティを使用できます。
  +
  +
=== 認証 ===
  +
  +
ISCSI ターゲットがイニシエータによる認証を必要とする場合、設定ファイル {{ic|/etc/iscsi/iscsid.conf}} を更新する必要がある場合があります。
  +
  +
次のパラメータは、イニシエータからターゲットへのログインセッションを認証するために使用されます:
   
 
node.session.auth.authmethod = CHAP
 
node.session.auth.authmethod = CHAP
node.session.auth.username = <username in target>
+
node.session.auth.username = ''initiators_username''
node.session.auth.password = <password in target>
+
node.session.auth.password = ''initiators_password''
node.session.auth.username_in = <username in initiator>
 
node.session.auth.password_in = <password in initiator>
 
   
  +
ターゲットで双方向認証が有効になっている場合は、これらの行も編集する必要があります:
イニシエータのディスカバリセッションを認証してターゲットからイニシエータにセッションを確立するのには以下のパラメータを使います:
 
  +
  +
node.session.auth.username_in = ''targets_username''
  +
node.session.auth.password_in = ''targets_password''
  +
  +
ターゲットがノードのリストを取得するために認証を必要とする場合 (ほとんどの場合は必要ありません)、次の行を編集する必要があります:
   
 
discovery.sendtargets.auth.authmethod = CHAP
 
discovery.sendtargets.auth.authmethod = CHAP
discovery.sendtargets.auth.username = <username in target>
+
discovery.sendtargets.auth.username = ''initiators_username''
discovery.sendtargets.auth.password = <password in target>
+
discovery.sendtargets.auth.password = ''initiators_password''
  +
discovery.sendtargets.auth.username_in = <username in initiator>
 
  +
ターゲットで双方向認証が有効になっている場合は、これらの行も編集する必要があります:
discovery.sendtargets.auth.password_in = <password in initiator>
 
  +
  +
discovery.sendtargets.auth.username_in = ''targets_username''
  +
discovery.sendtargets.auth.password_in = ''targets_password''
   
 
{{Warning|同一のパスワードを設定することはできません。上記の設定では別々の4つのパスワードを設定する必要があります。}}
 
{{Warning|同一のパスワードを設定することはできません。上記の設定では別々の4つのパスワードを設定する必要があります。}}
  +
  +
{{Note|認証データはノードごとの設定ファイルに保存されます。これらを更新するには、{{ic|/var/lib/iscsi/nodes/iqn.''node-name''/''node-ip-address'',''port'',1/default}} を編集し、必要に応じてオプションを追加/調整します。[https://serverfault.com/a/790835]}}
   
 
=== ターゲットのディスカバリ ===
 
=== ターゲットのディスカバリ ===
  +
 
{{bc|# iscsiadm -m discovery -t sendtargets -p <portalip>}}
 
{{bc|# iscsiadm -m discovery -t sendtargets -p <portalip>}}
  +
  +
=== ターゲットを手動で追加する ===
  +
  +
# iscsiadm -m node --target ''targetname'' --portal ''target_ip'' -o new
  +
  +
これを使用する考えられるシナリオは、サーバーが検出を許可していない場合です。
  +
 
=== ターゲットの削除 ===
 
=== ターゲットの削除 ===
  +
 
{{bc|# iscsiadm -m discovery -p <portalip> -o delete}}
 
{{bc|# iscsiadm -m discovery -p <portalip> -o delete}}
   
 
=== 利用可能なターゲットにログイン ===
 
=== 利用可能なターゲットにログイン ===
  +
 
{{bc|# iscsiadm -m node -L all}}
 
{{bc|# iscsiadm -m node -L all}}
 
もしくは特定のターゲットにログイン:
 
もしくは特定のターゲットにログイン:
88行目: 117行目:
   
 
=== 情報の確認 ===
 
=== 情報の確認 ===
  +
 
実行中のセッションを確認するには:
 
実行中のセッションを確認するには:
 
{{bc|# iscsiadm -m session -P 3}}
 
{{bc|# iscsiadm -m session -P 3}}
97行目: 127行目:
   
 
=== ボリュームのオンラインリサイズ ===
 
=== ボリュームのオンラインリサイズ ===
  +
 
iscsi ブロックデバイスにパーティションテーブルが含まれている場合、オンラインリサイズを行うことはできません。その場合、ファイルシステムをアンマウントしてからパーティションのサイズを変更する必要があります。
 
iscsi ブロックデバイスにパーティションテーブルが含まれている場合、オンラインリサイズを行うことはできません。その場合、ファイルシステムをアンマウントしてからパーティションのサイズを変更する必要があります。
 
# 現在のセッションで有効なノードを再スキャン: {{bc|# iscsiadm -m node -R}}
 
# 現在のセッションで有効なノードを再スキャン: {{bc|# iscsiadm -m node -R}}
102行目: 133行目:
 
# 最後にファイルシステムをリサイズ: {{bc|# resize2fs /dev/sdx}}
 
# 最後にファイルシステムをリサイズ: {{bc|# resize2fs /dev/sdx}}
   
== ヒント & トラブルシューィング ==
+
== ヒントクニック ==
  +
アタッチされている iSCSI デバイスの {{ic|/dev}} ツリーにある場所は {{ic|ls -lh /dev/disk/by-path/* | grep ip}} でも確認できます。
 
  +
=== 接続されている iSCSI デバイスを確認する ===
  +
  +
次のコマンドを使用して、接続されている iSCSI デバイスが {{ic|/dev/}} ツリー内のどこにあるかを確認することもできます:
  +
  +
$ ls -l /dev/disk/by-path/ip-*
  +
  +
=== 起動時にターゲットにログインする ===
  +
  +
ブート中にターゲットにログインするには、{{ic|iscsi.service}} を [[有効化]] して実行し、ノードの設定に {{ic|1=node.startup = automatic}} が含まれていることを確認します ({{ic|/var/lib/iscsi/nodes/iqn.''node-name''/''node-ip-address'',''port''}})
  +
  +
{{Note|1=systemd ユニット名は {{ic|iscsi'''d'''.service}} ではなく {{ic|iscsi.service}} です。[https://bbs.archlinux.org/viewtopic.php?pid=1961776#p1961776]}}
  +
  +
== トラブルシューティング ==
  +
  +
=== Client IQN ===
  +
  +
サーバー (ターゲット) では、アカウント設定に {{ic|/etc/iscsi/initiatorname.iscsi}} のクライアント IQN を含める必要がある場合があります。
   
  +
=== iSCSI デーモンのデバッグ ===
サーバー (ターゲット) 側では acl の設定に {{ic|/etc/iscsi/initiatorname.iscsi}} からクライアントの iqn を記述する必要があります。
 
   
{{ic|iscsiadm}} の操作は基本的に iSCSI デーモン {{ic|iscsid}} が動作していることを必要とします。動作しているか確認するには、{{ic|open-iscsi.service}} の[[systemd#ユニットを使う|状態を確認]]してください
+
iSCSI デーモンをデバッグモードで実行するには (事前に {{ic|iscsid.service}} を停止していることを確認してください)
   
  +
# iscsid -d 8 -c /etc/iscsi/iscsid.conf -i /etc/iscsi/initiatorname.iscsi -f
== 参照 ==
 
* [[iSCSI ブート]] - iSCSI ターゲットで Arch Linux を起動。
 

2024年1月1日 (月) 14:00時点における最新版

関連記事

この記事では Open-iSCSI イニシエータを使って 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 ユニットによって管理されます。

iscsid.service または iscsid.socket起動 します。

ISCSI 修飾名 (IQN)

IQN はすべてのデバイスを識別するために使用されます。

Open-ISCSI は、イニシエータ IQN を /etc/iscsi/initiatorname.iscsi ファイルに InitiatorName=iqn の形式で保存します。

インストール中に、初期 IQN が生成されます。新しい IQN を生成したい場合は、新しい IQN を出力する iscsi-iname ユーティリティを使用できます。

認証

ISCSI ターゲットがイニシエータによる認証を必要とする場合、設定ファイル /etc/iscsi/iscsid.conf を更新する必要がある場合があります。

次のパラメータは、イニシエータからターゲットへのログインセッションを認証するために使用されます:

node.session.auth.authmethod = CHAP
node.session.auth.username = initiators_username
node.session.auth.password = initiators_password

ターゲットで双方向認証が有効になっている場合は、これらの行も編集する必要があります:

node.session.auth.username_in = targets_username
node.session.auth.password_in = targets_password

ターゲットがノードのリストを取得するために認証を必要とする場合 (ほとんどの場合は必要ありません)、次の行を編集する必要があります:

discovery.sendtargets.auth.authmethod = CHAP
discovery.sendtargets.auth.username = initiators_username
discovery.sendtargets.auth.password = initiators_password

ターゲットで双方向認証が有効になっている場合は、これらの行も編集する必要があります:

discovery.sendtargets.auth.username_in = targets_username
discovery.sendtargets.auth.password_in = targets_password
警告: 同一のパスワードを設定することはできません。上記の設定では別々の4つのパスワードを設定する必要があります。
ノート: 認証データはノードごとの設定ファイルに保存されます。これらを更新するには、/var/lib/iscsi/nodes/iqn.node-name/node-ip-address,port,1/default を編集し、必要に応じてオプションを追加/調整します。[1]

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

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

ターゲットを手動で追加する

# iscsiadm -m node --target targetname --portal target_ip -o new

これを使用する考えられるシナリオは、サーバーが検出を許可していない場合です。

ターゲットの削除

# 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 です。[2]

トラブルシューティング

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