RockyLinux8 と Windows10間でiscsi接続設定

PCのHDD容量が不足してきたため、ファイルサーバーのHDDの一部領域を、PCに割り当てたく
iscsiで設定してみた

個人で利用している環境では、PCにドメイン名を設定せずに利用している事が多い。
今回の設定では、ドメイン名が必要となるので、マイドメインを取得していない場合は、
テスト用のドメインを利用して欲しい。
今回は、example.jp を利用して情報を残しておく

2つの記事に分けて執筆しているので、必要に応じて参考にして頂きたい
・ RockyLinux8 と Windows10間でiscsi接続設定 (iscsi ターゲットサーバー設定)  *** この記事 ***
RockyLinux8 と Windows10間でiscsi接続設定 (iscsiイニシエーター設定) 

(1) iscsi設定を行う為の事前情報

iscsiの設定を行うに辺り、iSCSI ターゲット名/イニシエーター名を事前に決めておく。
命名規則があるので、フォーマットに倣って決定する
フォーマットは [ iqn.年-月.ドメイン名の逆:任意の名前 ]

【環境】
 ・サーバー (iscsiターゲットサーバー)
     RockyLinux8.9
     Hostname : server.example.jp
     IPAddress: 192.168.1.84
     iscsiで利用する名前: iqn.2023-12.jp.example:server

・ クライアント (iscsiイニシエーター)
    Windwos10Pro
    Hostname : client.example.jp
    IPAddress: 192.168.1.85
    iscsiで利用する名前: iqn.2023-12.jp.example:client   

(2) サーバー設定

(2-1) サーバー側にiscsi管理ソフトを導入

 # dnf -y install targetcli
 # systemctl enable target
 

(2-2) ディスクイメージ場所の選定

Windows10で利用する(割り当てる) Disk領域の場所
# mkdir /iscsi_disks 

(2-3) iscsi管理ソフトで設定

# targetcli 

Warning: Could not load preferences file /root/.targetcli/prefs.bin.
targetcli shell version 2.1.53
Copyright 2011-2013 by Datera, Inc and others.
For help on commands, type 'help'.
/>

対話モードなるので、コマンドを実行していく。
設定中はプロンプトが "> になっている事に留意して欲しい。
コマンドはシェルに似ている

(2-3-1)  Windows10で利用するDiskイメージの作成

disk01と名前で、作成場所、ファイル名は、/iscsi_disks/client_disk01.img
とりあえず容量を10GBとした。
以下、絶対パスで項目を移動(感覚的に分かりやすいかも)
> cd backstores/fileio
/backstores/fileio> create disk01 /iscsi_disks/client_disk01.img 10G

Created fileio disk01 with size 10737418240

(2-3-2) iscsiターゲットの作成

/backstores/fileio> cd /iscsi
        
(1)で命名した名前で作成する
/iscsi> create iqn.2023-12.jp.example:server

Created target iqn.2023-12.jp.example:server.
Created TPG 1.
Global pref auto_add_default_portal=true
Created default portal listening on all IPs (0.0.0.0), port 3260.

(2-3-3) LUNを割り当て

/iscsi>  cd /iscsi/iqn.2023-12.jp.example:server/tpg1/luns

(2-3-1)で作成したディスクイメージ "disk01" にLUNを割り当てる
明示的にLUN番号を指定できるが、省略すると空き番号を自動割り当てされる。
        
/iscsi/iqn.20...ver/tpg1/luns> create /backstores/fileio/disk01

Created LUN 0.

→ 0番が割り当てられた

(2-3-4) AccessControL (ACL) の設定

disk01に接続可能なクライアント(Windows10)を登録する
※ この設定(接続クライアントの制限)や、(2-3-5)で設定するID/PASSも不要な場合は、
    別設定(制限しない=全て接続する)を行えば、「来るもの拒まず」状態になる

/iscsi/iqn.20...xample:server> cd /iscsi/iqn.2023-12.jp.example:server/tpg1/acls
/iscsi/iqn.20...ver/tpg1/acls> create iqn.2023-12.jp.example:client

Created Node ACL for iqn.2023-12.jp.example:client
Created mapped LUN 0.

(2-3-5) クライアントがサーバーに接続する際のID/Passを設定

/iscsi/iqn.20...ver/tpg1/acls> cd /iscsi/iqn.2023-12.jp.example:server/tpg1/acls/iiqn.2023-12.jp.example:client
/iscsi/iqn.20...xample:client> set auth userid=iscsiuser001 password=123456789012

Parameter userid is now 'iscsiuser001'.
Parameter password is now '123456789012'.

※ PASS(シークレット)の文字数は12~16文字で設定する必要がある(CHAPの仕様)

(2-3-6) ID/PASS認証を行うように設定

(2-3-5)にて、ID/PASSを登録したが、ID/PASSを使っての認証をするかしないかの設定が必要となる。
また、この設定はターゲットポータルグループ (TPG) 毎の設定となる。
現在、グループ名"tpg1" が作成されているので、「tpg1グループはID/PASS認証を行う」設定となる。

/iscsi/iqn.20...xample:client> cd /iscsi/iqn.2023-12.jp.example:server/tpg1
/iscsi/iqn.20...e:server/tpg1> set attribute authentication=1

Parameter authentication is now '1'.

 ※ ここで、"get attribute"と打てば、その他の設定項目も表示される。

(2-3-7) 設定の完了と確認

"ls /" にて設定の簡単な設定確認が出来る。
しかし、ID/PASSなどはこの画面には出て来ないので、確認コマンドはあるが、生ファイルを見たほうが早い
設定ファイル  /etc/target/saveconfig.json

 /iscsi/iqn.20...xample:client> ls /

o- / ............................................................................................................................................. [...]
  o- backstores ............................................................................................................................. [...]
  | o- block ........................................................................................................... [Storage Objects: 0]
  | o- fileio ............................................................................................................ [Storage Objects: 1]
  | | o- disk01 ............................................ [/iscsi_disks/client_disk01.img (10.0GiB) write-back activated]
  | |   o- alua ............................................................................................................ [ALUA Groups: 1]
  | |     o- default_tg_pt_gp ...................................................................... [ALUA state: Active/optimized]
  | o- pscsi ............................................................................................................ [Storage Objects: 0]
  | o- ramdisk ........................................................................................................ [Storage Objects: 0]
  o- iscsi ............................................................................................................................ [Targets: 1]
  | o- iqn.2023-12.jp.example:server ....................................................................................... [TPGs: 1]
  |   o- tpg1 ................................................................................................... [no-gen-acls,auth per-acl]
  |     o- acls .......................................................................................................................... [ACLs: 1]
  |     | o- iqn.2023-12.jp.example:client ....................................................................... [Mapped LUNs: 1]
  |     |   o- mapped_lun0 .................................................................................... [lun0 fileio/disk01 (rw)]
  |     o- luns .......................................................................................................................... [LUNs: 1]
  |     | o- lun0 ......................................... [fileio/disk01 (/iscsi_disks/client_disk01.img) (default_tg_pt_gp)]
  |     o- portals .................................................................................................................... [Portals: 1]
  |       o- 0.0.0.0:3260 ................................................................................................................... [OK]
  o- loopback ....................................................................................................................... [Targets: 0]

/iscsi/iqn.20...xample:client> exit

Global pref auto_save_on_exit=true
Configuration saved to /etc/target/saveconfig.json

(2-4) iscsiサーバーサービスを起動する

# systemctl start target

 TCP 3260でListen状態となっている事が確認できる
 # ss -ant | grep 3260

LISTEN 0      256          0.0.0.0:3260       0.0.0.0:*

以上で、ターゲットサーバー側の設定は完了

(3) クライアントの設定

(3-1) iscsiイニシエータ プログラムの起動

説明を簡略化する為、ショートカットキーで執筆している。
     
・iSCSI イニシエーター
   [Windows]キー + R で、「ファイル名を指定して実行」を開く。
  「iscsicpl」と入力し、OKをクリック

(3-2)  (初めて起動すると)以下の画面が表示されるので「はい」を選択

以下の画面が出なかった場合は、サービスが起動しているか確認すること。
 
・サービス
   {Windows}キー + R で、[ファイル名を指定して実行]を開く。
  「SERVICES.MSC」と入力し、OKをクリック
    サービス名:Microsoft iSCSI Initiator Service が[実行中] で[自動]となっている事

(3-3) イニシエーター名の設定

① iSCSI イニシエーター画面が表示。構成タブを選択
② [変更]ボタン押下


③ 予め決めておいたクライアントのイニシエータ名 「iqn.2023-12.jp.example:client」入力後、[OK]ボタン押下


④ イニシエータ名が変更された事を確認し、[探索]タブを選択

(3-4) ターゲットポータルの設定

① [ポータルの探索]をクリックする


② ターゲットサーバーのIPアドレスを入力後、[OK]をクリック
    ※ ここでは、詳細設定は行わない


③ ターゲットを検索するポータルにエントリされた事を確認し、[ターゲット]タブを選択

(3-5) ターゲットへの接続設定

① (3-4)の設定が完了すれば、[検出されたターゲット]の欄にターゲット名が表示されている
    状態は[非アクティブ]
    ターゲット名を選択された状態にし、[接続]をクリックする


② [詳細設定]をクリックする


③ [CHAP ログインを有効にする]にレ点を入れ、
    (2-3-5) で設定したID/PASS情報を入力する
    名前: iscsiuser001
    ターゲット シークレット: 123456789012
    入力後、[OK]をクリック


④ 1つ前の画面に戻るので、[OK]をクリックする


⑤ 状態が"接続完了"となれば設定完了
    ※ 設定に誤りがあると、エラーウインドウが表示される。
        設定ミスの箇所により、エラーウインドウが出るまでの時間はマチマチである。
        早い時は1秒未満、遅い時は3分ほど待たされ、エラーウインドウが表示された。

(3-6) ディスクの管理より領域を割り当て

ここまでくれば、HDD増設時と同じ手順となる
・ディスクの管理
   {Windows}キー + R で、[ファイル名を指定して実行]を開く。
  「diskmgmt.msc」と入力し、OKをクリック

「新しいシンプル ボリューム」にて容量を割り当てれば完了

以上で設定は完了。Eドライブとして使用できるようになる。