2 検証環境
2.1 ネットワーク構成
イニシエータとターゲットの2台構成です。図中のens33はNICの名前です。
192.168.2.0/24 initiator(ens33) ------------------------------------------(ens33) target .105 .100
3 パッケージのインストール
3.1 ターゲット側
targetcliパッケージをインストールします。
[root@target ~]# yum -y install targetcli
パッケージの版数を確認します。
[root@target ~]# rpm -qa|grep targetcli targetcli-2.1.53-1.el7_9.noarch
3.2 イニシエータ側
iscsi-initiator-utilsパッケージをインストールします。
[root@initiator ~]# yum -y install iscsi-initiator-utils
パッケージの版数を確認します。
[root@initiator ~]# rpm -qa|grep iscsi-initiator-utils iscsi-initiator-utils-6.2.0.874-22.el7_9.x86_64 iscsi-initiator-utils-iscsiuio-6.2.0.874-22.el7_9.x86_64
4 事前準備
4.1 ポート番号の開放
ターゲット側で、iSCSIが使う3260番ポートを開放します。
なお、firewall-cmdの使い方は、firewall-cmdの使い方 - hana_shinのLinux技術ブログを参照してください。
[root@target ~]# firewall-cmd --add-port=3260/tcp success
開放したポート番号を確認します。TCPの3260番ポートが開放されたことがわかります。
[root@target ~]# firewall-cmd --list-ports 3260/tcp
4.2 サービスの起動
ターゲット側のサービスを起動します。
[root@target ~]# systemctl start target.service
イニシエータ側のサービスを起動します。
[root@initiator ~]# systemctl start iscsid.service
4.3 ループバックデバイスの作成
ターゲットが使用するストレージを作成します。ここでは、ループバックデバイスを利用したストレージを作成してみます。まず、ファイル(500M)を作成します。テスト用なのでサイズは適当です。なお、ddコマンドの使い方は、ddコマンドの使い方 - hana_shinのLinux技術ブログを参照ください。
[root@target ~]# dd if=/dev/zero of=disk1.img bs=1024 count=512000
作成したファイルを確認します。500Mのファイルが作成できたことがわかります。
[root@target ~]# ls -lh disk1.img -rw-r--r--. 1 root root 500M 3月 1 19:21 disk1.img
作成したファイルをループバックデバイスとして登録します。なお、ループバックデバイスの登録方法は、losetupコマンドの使い方 - hana_shinのLinux技術ブログを参照ください。
[root@target ~]# losetup -f /root/disk1.img
登録したループバックデバイスを確認します。
[root@target ~]# losetup -l NAME SIZELIMIT OFFSET AUTOCLEAR RO BACK-FILE /dev/loop0 0 0 0 0 /root/disk1.img
5 ターゲット側の設定
5.1 初期状態の確認
初期状態における、iSCSIの構成を確認してみます。4種類のバックストアがあることがわかります。その中で、ブロックデバイス(block)を使ってみます。
[root@target ~]# targetcli ls / o- / .............................................................................................................. [...] o- backstores ................................................................................................... [...] | o- block ....................................................................................... [Storage Objects: 0] | o- fileio ...................................................................................... [Storage Objects: 0] | o- pscsi ....................................................................................... [Storage Objects: 0] | o- ramdisk ..................................................................................... [Storage Objects: 0] o- iscsi ................................................................................................. [Targets: 0] o- loopback .............................................................................................. [Targets: 0] [root@target ~]#
5.2 バックストアの登録
作成した/dev/loop0をlun0という名前でバックストアに登録してみます。
[root@target ~]# targetcli /backstores/block create name=lun0 dev=/dev/loop0 Created block storage object lun0 using /dev/loop0.
再度、構成を確認してみます。block配下にlun0が作成されたことがわかります。
[root@target ~]# targetcli ls / o- / .............................................................................................................. [...] o- backstores ................................................................................................... [...] | o- block ....................................................................................... [Storage Objects: 1] | | o- lun0 ............................................................ [/dev/loop0 (500.0MiB) write-thru deactivated] | | o- alua ........................................................................................ [ALUA Groups: 1] | | o- default_tg_pt_gp ............................................................ [ALUA state: Active/optimized] | o- fileio ...................................................................................... [Storage Objects: 0] | o- pscsi ....................................................................................... [Storage Objects: 0] | o- ramdisk ..................................................................................... [Storage Objects: 0] o- iscsi ................................................................................................. [Targets: 0] o- loopback .............................................................................................. [Targets: 0]
5.3 iqn(iSCSI Qualified Name)の作成
iqnは、iSCSIのターゲット、イニシエータを全世界で一意に識別するために使います。
iqnの書式は次のとおりです。
iqn.yyyy-mm.domain name:identifier
・yyyy-mm:ドメイン取得日(テスト用なので適当な日付を設定)
・domain name:ドメイン名(テスト用なので適当なドメイン名を設定)
・identifier:任意の名前。ここでは、target0という名前を設定。
[root@target ~]# targetcli /iscsi create iqn.2020-03.com.example:target0 Created target iqn.2020-03.com.example:target0. Created TPG 1. Global pref auto_add_default_portal=true Created default portal listening on all IPs (0.0.0.0), port 3260.
構成を確認してみます。iscsi配下に、下記のiqnが作成されたことがわかります。
・iqn.2020-03.com.example:target0
[root@target ~]# targetcli ls / o- / .............................................................................................................. [...] o- backstores ................................................................................................... [...] | o- block ....................................................................................... [Storage Objects: 1] | | o- lun0 ............................................................ [/dev/loop0 (500.0MiB) write-thru deactivated] | | o- alua ........................................................................................ [ALUA Groups: 1] | | o- default_tg_pt_gp ............................................................ [ALUA state: Active/optimized] | o- fileio ...................................................................................... [Storage Objects: 0] | o- pscsi ....................................................................................... [Storage Objects: 0] | o- ramdisk ..................................................................................... [Storage Objects: 0] o- iscsi ................................................................................................. [Targets: 1] | o- iqn.2020-03.com.example:target0 ........................................................................ [TPGs: 1] | o- tpg1 .................................................................................... [no-gen-acls, no-auth] | o- acls ............................................................................................... [ACLs: 0] | o- luns ............................................................................................... [LUNs: 0] | o- portals ......................................................................................... [Portals: 1] | o- 0.0.0.0:3260 .......................................................................................... [OK] o- loopback .............................................................................................. [Targets: 0] [root@target ~]#
5.4 iqnとバックストアの紐づけ
作成したiqnとバックストアを紐づけします。iqn.2020-03.com.example:target0とlun0を紐づけます。
[root@target ~]# targetcli /iscsi/iqn.2020-03.com.example:target0/tpg1/luns create /backstores/block/lun0 Created LUN 0.
iSCSIの構成を確認してみます。
[root@target ~]# targetcli ls / o- / .............................................................................................................. [...] o- backstores ................................................................................................... [...] | o- block ....................................................................................... [Storage Objects: 1] | | o- lun0 .............................................................. [/dev/loop0 (500.0MiB) write-thru activated] | | o- alua ........................................................................................ [ALUA Groups: 1] | | o- default_tg_pt_gp ............................................................ [ALUA state: Active/optimized] | o- fileio ...................................................................................... [Storage Objects: 0] | o- pscsi ....................................................................................... [Storage Objects: 0] | o- ramdisk ..................................................................................... [Storage Objects: 0] o- iscsi ................................................................................................. [Targets: 1] | o- iqn.2020-03.com.example:target0 ........................................................................ [TPGs: 1] | o- tpg1 .................................................................................... [no-gen-acls, no-auth] | o- acls ............................................................................................... [ACLs: 0] | o- luns ............................................................................................... [LUNs: 1] | | o- lun0 .......................................................... [block/lun0 (/dev/loop0) (default_tg_pt_gp)] | o- portals ......................................................................................... [Portals: 1] | o- 0.0.0.0:3260 .......................................................................................... [OK] o- loopback .............................................................................................. [Targets: 0]
5.5 ACLの設定
ACLは、どのイニシエータからターゲットに接続できるのかを設定します。ここでは、イニシエータからtarget0に接続できるように設定します。
イニシエータのiqnを確認します。iqnはiqn.1994-05.com.redhat:94f695c646caであることがわかります。
[root@initiator ~]# cat /etc/iscsi/initiatorname.iscsi InitiatorName=iqn.1994-05.com.redhat:86d327514f9a
イニシエータからtarget0に接続できるように、ACLを設定します。
[root@target ~]# targetcli /iscsi/iqn.2020-03.com.example:target0/tpg1/acls create iqn.1994-05.com.redhat:86d327514f9a Created Node ACL for iqn.1994-05.com.redhat:86d327514f9a Created mapped LUN 0.
iSCSIの構成を確認してみます。target0のacls配下にイニシエータのiqnが登録されたことがわかります。
[root@target ~]# targetcli ls / o- / .............................................................................................................. [...] o- backstores ................................................................................................... [...] | o- block ....................................................................................... [Storage Objects: 1] | | o- lun0 .............................................................. [/dev/loop0 (500.0MiB) write-thru activated] | | o- alua ........................................................................................ [ALUA Groups: 1] | | o- default_tg_pt_gp ............................................................ [ALUA state: Active/optimized] | o- fileio ...................................................................................... [Storage Objects: 0] | o- pscsi ....................................................................................... [Storage Objects: 0] | o- ramdisk ..................................................................................... [Storage Objects: 0] o- iscsi ................................................................................................. [Targets: 1] | o- iqn.2020-03.com.example:target0 ........................................................................ [TPGs: 1] | o- tpg1 .................................................................................... [no-gen-acls, no-auth] | o- acls ............................................................................................... [ACLs: 1] | | o- iqn.1994-05.com.redhat:86d327514f9a ....................................................... [Mapped LUNs: 1] | | o- mapped_lun0 ....................................................................... [lun0 block/lun0 (rw)] | o- luns ............................................................................................... [LUNs: 1] | | o- lun0 .......................................................... [block/lun0 (/dev/loop0) (default_tg_pt_gp)] | o- portals ......................................................................................... [Portals: 1] | o- 0.0.0.0:3260 .......................................................................................... [OK] o- loopback .............................................................................................. [Targets: 0]
5.6 設定内容の保存
[root@target ~]# targetcli saveconfig Configuration saved to /etc/target/saveconfig.json
6 イニシエーター側の設定
イニシエータからターゲットのログイン、デバイスのマウントまでを確認してみます。
6.1 ターゲットの探索
ターゲットを探します。以下のターゲットを検出したことがわかります。
[root@initiator ~]# iscsiadm -m discovery -t sendtargets -p 192.168.2.100 192.168.2.100:3260,1 iqn.2020-03.com.example:target0
6.2 ターゲットへのログイン
検出したターゲットにログインします。
[root@initiator ~]# iscsiadm -m node --login -p 192.168.2.100 Logging in to [iface: default, target: iqn.2020-03.com.example:target0, portal: 192.168.2.100,3260] (multiple) Login to [iface: default, target: iqn.2020-03.com.example:target0, portal: 192.168.2.100,3260] successful.
ログインすると、ターゲットのデバイスが見えるようになります。
[root@initiator ~]# lsblk -S NAME HCTL TYPE VENDOR MODEL REV TRAN sdb 3:0:0:0 disk LIO-ORG lun0 4.0 iscsi
6.3 ファイルシステムの作成
[root@initiator ~]# mkfs.xfs /dev/sdb meta-data=/dev/sdb isize=512 agcount=4, agsize=32000 blks = sectsz=512 attr=2, projid32bit=1 = crc=1 finobt=0, sparse=0 data = bsize=4096 blocks=128000, imaxpct=25 = sunit=0 swidth=0 blks naming =version 2 bsize=4096 ascii-ci=0 ftype=1 log =internal log bsize=4096 blocks=855, version=2 = sectsz=512 sunit=0 blks, lazy-count=1 realtime =none extsz=4096 blocks=0, rtextents=0
マウントポイントを作成します。
[root@initiator ~]# mkdir /target0
作成したマウントポイントにデバイスをマウントします。
[root@initiator ~]# mount /dev/sdb /target0/
ファイルシステム一覧を確認します。/dev/sdbにxfsファイルシステムが作成されていることがわかります。
[root@initiator ~]# df -hT /target0/ ファイルシス タイプ サイズ 使用 残り 使用% マウント位置 /dev/sdb xfs 497M 26M 472M 6% /target0
7 iSCSI環境の解除
作成したiSCSI環境の解除方法を以下に説明します。
7.1 イニシエータ側
デバイスをアンマウントします。
[root@initiator ~]# umount /target0/
ターゲットからログアウトします。
[root@initiator ~]# iscsiadm -m node -T iqn.2020-03.com.example:target0 -p 192.168.2.100 --logout Logging out of session [sid: 1, target: iqn.2020-03.com.example:target0, portal: 192.168.2.100,3260] Logout of [sid: 1, target: iqn.2020-03.com.example:target0, portal: 192.168.2.100,3260] successful.
セッションを確認します。ターゲットからログアウトしたので、セッションが表示されていないことがわかります。
[root@initiator ~]# iscsiadm -m session iscsiadm: No active sessions.
次にノードを削除します。
[root@initiator ~]# iscsiadm -m node 192.168.2.100:3260,1 iqn.2020-03.com.example:target0
[root@initiator ~]# iscsiadm -m node -o delete -T iqn.2020-03.com.example:target0 -p 192.168.2.100
[root@initiator ~]# iscsiadm -m node iscsiadm: No records found
7.2 ターゲット側
iSCSIの設定情報を削除します。
[root@target ~]# targetcli clearconfig confirm=True All configuration cleared
ターゲットの構成を確認します。
[root@target ~]# targetcli ls / o- / .............................................................................................................. [...] o- backstores ................................................................................................... [...] | o- block ....................................................................................... [Storage Objects: 0] | o- fileio ...................................................................................... [Storage Objects: 0] | o- pscsi ....................................................................................... [Storage Objects: 0] | o- ramdisk ..................................................................................... [Storage Objects: 0] o- iscsi ................................................................................................. [Targets: 0] o- loopback .............................................................................................. [Targets: 0]
設定情報を保存します。
[root@target ~]# targetcli saveconfig Last 10 configs saved in /etc/target/backup/. Configuration saved to /etc/target/saveconfig.json
Z 参考情報
私が業務や記事執筆で参考にした書籍を以下のページに記載します。
Linux技術のスキルアップをしよう! - hana_shinのLinux技術ブログ