iSCSI/LIO

提供: ArchWiki
2023年9月5日 (火) 18:59時点におけるKusanaginoturugi (トーク | 投稿記録)による版 (→‎Installation: 翻訳)
ナビゲーションに移動 検索に移動

関連記事

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

エクスポートされたストレージエンティティはターゲットと呼ばれ、インポートするエンティティはイニシエータと呼ばれます。様々なモジュールでターゲットをセットアップすることができます:

インストール

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

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

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

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

LIO ターゲットのセットアップ

LIO ターゲットは Linux 2.6.38 からカーネルに含まれています。ただし、iSCSI ターゲットファブリックが含まれるようになったのは Linux 3.1 からです。

重要なカーネルモジュールは target_core_modiscsi_target_mod です。

フリーブランチ版のパッケージを使用することを強く推奨します: targetcli-fbAUR, python-rtslib-fbAUR, python-configshell-fbAUR

フリーブランチを使用する場合 python-rtslib-fbAUR に systemd の target.service が含まれています。

以下のコマンドで LIO ターゲットを起動できます:

# systemctl start target

上記のコマンドで必要なモジュールがロードされ、configfs がマウントされて前に保存した iSCSI ターゲットの設定がロードされます。

実行中の設定については以下のコマンドで情報を表示できます (フリーブランチの場合のみ):

# targetcli status

さらに以下のコマンドで起動時に LIO ターゲットを有効にすることが可能です:

# systemctl enable target

設定を作成するときは targetcli を使います。

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 には存在しません。

上流のドキュメント

SCSI Target Framework (STGT/TGT) のセットアップ

AUR から tgtAUR パッケージをインストールする必要があります。

詳しくは TGT iSCSI ターゲットを見てください。

参照