検証環境
- CentOS7.4 x64 (ターゲット)
- WindowsServer2016 Standard (イニシエータ)
ターゲットは「iSCSIを提供する側」、イニシエーターは「iSCSIを利用する側」である。
ターゲット-イニシエータ間はネットワーク的に通信出来ること。
本ページ中にある「iqn...」の部分はIQNと呼ばれるものであり、ISCSI構成要素には必ず付与しなければならない。IQN命名規則にならって指定すること。
例えば、2017年9月に登録されたhogehige.co.jpドメイン内のiscsi-storageサーバーのターゲット0番なら以下のようにすると良い。
iqn.2017-09.jp.co.hogehige:iscsi-storage.target0
ターゲットのセットアップ
iSCSI管理ツールのインストール
# yum install targetcli
...
インストール:
targetcli.noarch 0:2.1.fb46-1.el7
依存性関連をインストールしました:
libnl.x86_64 0:1.1.4-3.el7 pyparsing.noarch 0:1.5.6-9.el7 python-configshell.noarch 1:1.1.fb23-3.el7 python-ethtool.x86_64 0:0.8-5.el7 python-kmod.x86_64 0:0.9-4.el7
python-rtslib.noarch 0:2.1.fb63-2.el7 python-six.noarch 0:1.9.0-2.el7 python-urwid.x86_64 0:1.1.1-3.el7
完了しました!
# rpm -qa | grep targetcli
targetcli-2.1.fb46-1.el7.noarch
# systemctl enable target
# systemctl stop target
iSCSIターゲットの作成
本ページではディスクイメージファイルを作成しそれにターゲット紐づけを行う。なお、ディスクイメージの他にもブロックデバイスも紐づけることも出来る。
iSCSI管理ツールの仮想ディレクトリ構造とOSファイル構造が似ていて混乱しやすいので注意すること。
# mkdir /iscsi_disks
# targetcli
Warning: Could not load preferences file /root/.targetcli/prefs.bin.
targetcli shell version 2.1.fb46
Copyright 2011-2013 by Datera, Inc and others.
For help on commands, type 'help'.
# iSCSIディスクイメージを作成する
> cd backstores/fileio
> create disk0 /iscsi_disks/disk0.img 500G
# iSCSIターゲットの作成
> cd /iscsi
> create iqn.2017-09.jp.co.hogehige:test-iscsi.target0
> cd iqn.2017-09.jp.co.hogehige:test-iscsi.target0/tpg1/luns
# LUNの作成(iSCSIターゲットとiSCSIディスクイメージの紐づけ)
> create /backstores/fileio/disk0
# iSCSIターゲットにアクセスを許可するiSCSIイニシエーターの設定
> cd ../acls
> create iqn.2017-09.jp.co.hogehige:hyperv-host1.init0
# iSCSI管理ツール内の状態を確認する
> cd /
> ls
o- / ......................................................................................................................... [...]
o- backstores .............................................................................................................. [...]
| o- block .................................................................................................. [Storage Objects: 0]
| o- fileio ................................................................................................. [Storage Objects: 1]
| | o- disk0 .............................................................[/iscsi_disks/disk0.img (500.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.2017-09.jp.co.hogehige:test-iscsi.target0 ..................................................................... [TPGs: 1]
| o- tpg1 ............................................................................................... [no-gen-acls, no-auth]
| o- acls .......................................................................................................... [ACLs: 1]
| | o- iqn.2017-09.jp.co.hogehige:hyperv-host1.init0 ........................................................ [Mapped LUNs: 1]
| | o- mapped_lun0 ................................................................................ [lun0 fileio/disk0 (rw)]
| o- luns .......................................................................................................... [LUNs: 1]
| | o- lun0 ....................................................... [fileio/disk0 (/iscsi_disks/disk0.img) (default_tg_pt_gp)]
| o- portals .................................................................................................... [Portals: 1]
| o- 0.0.0.0:3260 ..................................................................................................... [OK]
o- loopback ......................................................................................................... [Targets: 0]
> exit
Global pref auto_save_on_exit=true
Last 10 configs saved in /etc/target/backup.
Configuration saved to /etc/target/saveconfig.json
# ls -la /iscsi_disks/
合計 0
drwxr-xr-x 2 root root 23 9月 25 12:40 .
dr-xr-xr-x. 18 root root 263 9月 25 12:39 ..
-rw-r--r-- 1 root root 536870912000 9月 25 12:40 disk0.img
# systemctl restart target
iSCSIターゲットの動作確認
デフォルト設定では3260でリッスンされる。
# systemctl status target
● target.service - Restore LIO kernel target configuration
Loaded: loaded (/usr/lib/systemd/system/target.service; enabled; vendor preset: disabled)
...
# netstat -an | grep 3260
tcp 0 0 0.0.0.0:3260 0.0.0.0:* LISTEN
iSCSIイニシエータの接続
ISCSIイニシエーターの設定を開き、自身のIQNを確認する。
iSCSIターゲットサーバーのIPアドレスを入力し、接続を試行する。
問題が無ければターゲットIQNを自動で発見し、接続される。
iSCSIディスクが接続されると、ディスク管理上にiSCSIディスクが見えるようになる。
備考
ターゲットにてファイアウォールが有効の場合
以下のコマンドで通信を許可しておく。
# firewall-cmd --add-service=iscsi-target --permanent
# firewall-cmd --reload
ターゲットに接続可能なイニシエータIQNを追加する手順
# systemctl stop target
# targetcli
> cd iscsi/{ターゲットIQN}/tpg1/acls/
> create {イニシエータIQN}
> cd {イニシエータIQN}
> set auth userid={ユーザーID} password={パスワード}
> exit
# systemctl start target
参考