iSCSI/LIO

提供: ArchWiki
ナビゲーションに移動 検索に移動

関連記事

LIO[リンク切れ 2022-12-31] (LinuxIO) は、カーネル内の iSCSI ターゲットです(Linux 2.6.38 以降)。

インストール

iSCSI ターゲットファブリックは Linux 3.1 から含まれています。

重要なカーネルモジュールは target_core_modiscsi_target_mod であり、これらはカーネルに組み込まれており、自動的にロードされるべきです。

フリーブランチのパッケージ targetcli-fbAURpython-rtslib-fbAUR、および python-configshell-fb の使用が強く推奨されます。

必要なモジュールをロードし、configfs をマウントし、以前に保存された iSCSI ターゲット設定をロードするために、python-rtslib-fbAUR に含まれる target.service開始/有効化してください。

targetcli

外部マニュアルはフリーブランチにしか存在しません。targetd は AUR に存在しませんが、フリーブランチに依存しています。

設定シェルはほとんどの名前と数字を自動的に作成しますが、自分で設定することもできます。シェルの中で help と入力することで実行できるコマンドを確認できます。

ヒント:
  • シェルではタブ補完が利用できます。シェルに cd と入力するとパスが表示・選択されます。

ターゲットの起動後、以下のコマンドで設定シェルを開くことができます:

# targetcli

シェルの中では以下のようにして使用するブロックデバイスを指定できます (例: /dev/disk/by-id/md-name-nas:iscsi):

/> cd backstores/block
/backstores/block> create md_block0 /dev/disk/by-id/md-name-nas:iscsi
ノート: ブロックデバイスであれば RAIDLVM でも使用できます。block ではなく fileio を使用するのであればファイルも使えます。

iSCSI Qualified Name (IQN) とターゲットポータルグループ (TPG) を作成するには:

...> cd /iscsi
/iscsi> create
ノート: create にお好きな IQN を付けることで targetcli で自動的に IQN を作成することができます。

ターゲットのバックストアとしてブロックデバイスを使用することを LIO に伝えるには以下を実行:

ノート: cd<iqn>/tpg1 のパスを選択できます。
.../tpg1> cd luns
.../tpg1/luns> create /backstores/block/md_block0

それからポータルを作成して、デーモンが接続を待機するようにしてください:

.../luns/lun0> cd ../../portals
.../portals> create

targetcli は LIO が接続を listen する IP とポートを表示します (デフォルトは 0.0.0.0 (all) です)。最低でもクライアントの IP が必要です。ポートは標準ポートの 3260 にするべきです。

クライアント/イニシエータから接続するにはターゲットの設定にイニシエータの IQN を記述する必要があります:

...> cd ../../acls
.../acls> create iqn.2005-03.org.open-iscsi:SERIAL

iqn.2005-03.org.open-iscsi:SERIAL はイニシエータの IQN に置き換えてください。通常は /etc/iscsi/initiatorname.iscsi で確認できます。接続する全てのイニシエータを設定してください。targetcli は作成済みの LUN を新しく作成した ACL に自動的にマッピングします。

ノート: マッピング済みの LUN を変更したり読み書きアクセスから読み取り専用に変えることができます。詳しくは targetcli シェルで help create を実行してください。

最後に設定を保存します:

...> cd /
/> saveconfig

上記のコマンドで /etc/target/saveconfig.json に設定が作成されます。これで設定を失うことなく target.service を安全に起動・停止することが可能になります。

ヒント: saveconfig にパラメータとしてファイル名を指定することができます。また、clearconfig で設定を消去できます。

認証

デフォルトで CHAP によるターゲットの認証が有効になっています。パスワードを設定したり、逆に認証を無効化することができます。

認証の無効化

targetcli でターゲットまで移動して (/iscsi/iqn.../tpg1)、以下のコマンドを実行してください:

.../tpg1> set attribute authentication=0
警告: 認証を無効化するとクライアント (イニシエータ) の IQN を知っていれば誰でもターゲットにアクセスできるようになります。あくまでテストあるいは家庭環境で行ってください。
認証情報の設定

ターゲットの ACL に移動して (/iscsi/iqn.../tpg1/acls/iqn.../)、以下のコマンドを実行すると現在の認証情報が表示されます:

...> get auth

以下のようにして認証情報を設定してください:

...> set auth userid=<username in target>
...> set auth password=<password in target>
...> set auth mutual_userid=<username in initiator>  (optional)
...> set auth mutual_password=<password in initiator>  (optional)

最初の2つはターゲットのユーザー名とパスワードです。設定したユーザー名とパスワードを使用してイニシエータはターゲットにログインします。("mutual_" と付いている) 残りの2つはイニシエータのユーザー名とパスワードです (全てのイニシエータは同じユーザー名とパスワードを使います)。イニシエータのユーザー名とパスワードは任意のパラメータであり、イニシエータは許可されたターゲットからの接続だけを通すようになります。

ヒントとテクニック

  • targetcli sessions で現在開いているセッションを確認できます。このコマンドは targetcli-fbAUR パッケージには含まれていますが lio-utils やオリジナルの targetcli には存在しません。

参照