こんにちは、Aireです。
今回はLinux環境でイニシエータからターゲットにiSCSI接続する方法を記載します。その際、iSCSIターゲットにアタッチしたブロックデバイスをiSCSIイニシエータに提供するようにします。
(2023/07/10追記)マルチパスソフト(Device Mapper Multipath)の設定を追加した記事を公開しましたので、そちらも参照ください。
構成情報
iSCSIイニシエータ
OS(cat /etc/redhat-release) | Red Hat Enterprise Linux release 8.4 (Ootpa) |
Linux Kernel(uname -r) | 4.18.0-305.el8.x86_64 |
NIC:IPアドレス | NIC1:172.31.36.105 |
使用ソフトウェアパッケージ | iscsi-initiator-utils |
iSCSIターゲット
OS(cat /etc/redhat-release) | Red Hat Enterprise Linux release 8.4 (Ootpa) |
Linux Kernel(uname -r) | 4.18.0-305.el8.x86_64 |
NIC:IPアドレス | NIC1:172.31.46.175 |
使用ソフトウェアパッケージ | targetcli, firewalld |
ブロックデバイス:サイズ | /dev/xvdf:125G /dev/xvdg:125G |
ソフトウェアパッケージのインストール
iSCSIイニシエータ
iscsi-initiator-utilsのインストール、有効化
iscsi-initiator-utils
パッケージがインストールされているか確認し、インストールされていない場合は、dnf install
コマンドを使用してインストールします。
1 2 3 |
$ rpm -q iscsi-initiator-utils package iscsi-initiator-utils is not installed $ sudo dnf install -y iscsi-initiator-utils |
サービスの起動と自動起動の有効化を行います。
1 2 3 |
$ sudo systemctl start iscsid $ sudo systemctl enable iscsid $ sudo systemctl status iscsid |
以下のコマンドでイニシエータ名を確認できます。
1 2 |
$ cat /etc/iscsi/initiatorname.iscsi InitiatorName=iqn.1994-05.com.redhat:d378d1eba1e3 |
iSCSIターゲット
targetcliのインストール、有効化
targetcli
パッケージがインストールされているか確認し、インストールされていない場合は、dnf install
コマンドを使用してインストールします。
1 2 3 |
$ rpm -q targetcli package targetcli is not installed $ sudo dnf install -y targetcli |
サービスの起動と自動起動の有効化を行います。
1 2 3 |
$ sudo systemctl start target $ sudo systemctl enable target $ sudo systemctl status target |
firewalldのインストール、有効化
firewalld
パッケージがインストールされているか確認し、インストールされていない場合は、dnf install
コマンドを使用してインストールします。
1 2 3 |
$ rpm -q firewalld package firewalld is not installed $ sudo dnf install -y firewalld |
サービスの起動と自動起動の有効化を行います。
1 2 3 |
$ sudo systemctl start firewalld $ sudo systemctl enable firewalld $ sudo systemctl status firewalld |
iSCSI通信用に3260番ポートを開放します。
1 2 3 4 |
$ sudo firewall-cmd --permanent --add-port=3260/tcp success $ sudo firewall-cmd --reload success |
ファイアウォールの設定を確認します。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 |
$ sudo firewall-cmd --list-all public (active) target: default icmp-block-inversion: no interfaces: eth0 sources: services: cockpit dhcpv6-client ssh ports: 3260/tcp protocols: masquerade: no forward-ports: source-ports: icmp-blocks: rich rules: |
iSCSIターゲットの設定
iSCSIターゲット側でtargetcli
を実行し、対話モードでiSCSIターゲットの設定を行います。iSCSIターゲットの初期構成は以下のようになっています。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 |
$ sudo targetcli targetcli shell version 2.1.53 Copyright 2011-2013 by Datera, Inc and others. For help on commands, type 'help'. /> 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] /> |
iSCSIバックストアの作成
バックストアディレクトリでブロックストレージオブジェクトを作成します。以下の実行例のデバイス情報は実際の環境に合わせて変更してください。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 |
/> /backstores/block create name=volume0 dev=/dev/disk/by-path/xen-vbd-xxxxx Created block storage object volume0 using /dev/disk/by-path/xen-vbd-xxxxx. /> /backstores/block create name=volume1 dev=/dev/disk/by-path/xen-vbd-yyyyy Created block storage object volume1 using /dev/disk/by-path/xen-vbd-yyyyy. /> /> ls o- / ......................................................................................... [...] o- backstores .............................................................................. [...] | o- block .................................................................. [Storage Objects: 2] | | o- volume0 ............... [/dev/disk/by-path/xen-vbd-xxxxx (125.0GiB) write-thru deactivated] | | | o- alua ................................................................... [ALUA Groups: 1] | | | o- default_tg_pt_gp ....................................... [ALUA state: Active/optimized] | | o- volume1 ............... [/dev/disk/by-path/xen-vbd-yyyyy (125.0GiB) 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] /> |
iSCSIターゲットの作成
iSCSIディレクトリでiSCSIターゲットを作成します。create
コマンドの引数として、iSCISターゲット名(IQN値)となる任意の文字列を入力すると、入力した名前のiSCSIターゲットが作成されます。引数を省略すると、iSCSIターゲット名が自動で作成されます。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 |
/> /iscsi create Created target iqn.2003-01.org.linux-iscsi.ip-172-31-46-175.x8664:sn.ed2fb8accbe5. Created TPG 1. Global pref auto_add_default_portal=true Created default portal listening on all IPs (0.0.0.0), port 3260. /> ls o- / ......................................................................................... [...] o- backstores .............................................................................. [...] | o- block .................................................................. [Storage Objects: 2] | | o- volume0 ............... [/dev/disk/by-path/xen-vbd-xxxxx (125.0GiB) write-thru deactivated] | | | o- alua ................................................................... [ALUA Groups: 1] | | | o- default_tg_pt_gp ....................................... [ALUA state: Active/optimized] | | o- volume1 ............... [/dev/disk/by-path/xen-vbd-yyyyy (125.0GiB) 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.2003-01.org.linux-iscsi.ip-172-31-46-175.x8664:sn.ed2fb8accbe5 ................ [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] /> |
iSCSI LUNの作成
ストレージオブジェクトのLUNを作成します。バックストアに作成したブロックデバイスがLUNとしてマッピングされます。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 |
/> /iscsi/iqn.2003-01.org.linux-iscsi.ip-172-31-46-175.x8664:sn.8d05583ab213/tpg1/luns create /backstores/block/volume0 Created LUN 0. /> /iscsi/iqn.2003-01.org.linux-iscsi.ip-172-31-46-175.x8664:sn.8d05583ab213/tpg1/luns create /backstores/block/volume1 Created LUN 1. /> ls o- / .......................................................................................... [...] o- backstores ............................................................................... [...] | o- block ................................................................... [Storage Objects: 2] | | o- volume0 ................ [/dev/disk/by-path/xen-vbd-xxxxx (125.0GiB) write-thru deactivated] | | | o- alua .................................................................... [ALUA Groups: 1] | | | o- default_tg_pt_gp ........................................ [ALUA state: Active/optimized] | | o- volume1 ................ [/dev/disk/by-path/xen-vbd-yyyyy (125.0GiB) 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.2003-01.org.linux-iscsi.ip-172-31-46-175.x8664:sn.8d05583ab213 ................. [TPGs: 1] | o- tpg1 ................................................................ [no-gen-acls, no-auth] | o- acls ........................................................................... [ACLs: 0] | o- luns ........................................................................... [LUNs: 2] | | o- lun0 .............. [block/volume0 (/dev/disk/by-path/xen-vbd-xxxxx) (default_tg_pt_gp)] | | o- lun1 .............. [block/volume1 (/dev/disk/by-path/xen-vbd-yyyyy) (default_tg_pt_gp)] | o- portals ..................................................................... [Portals: 1] | o- 0.0.0.0:3260 ...................................................................... [OK] o- loopback .......................................................................... [Targets: 0] /> |
ACLの設定(ACLへの登録またはACLの無効化)
ACLへの登録
ACL(アクセス制御リスト)は、ターゲットにアクセス可能なイニシエータを指定する機能です。
後述の「iSCSIターゲットへのログイン」を行う場合、デフォルトのACL設定(generate_node_acls=0)では、ACLに登録されたイニシエータしかログインすることができません。登録されていないイニシエータからログインを試みると、以下のようなメッセージが表示されます。
1 2 3 4 5 |
$ sudo iscsiadm -m node -T iqn.2003-01.org.linux-iscsi.ip-172-31-46-175.x8664:sn.8d05583ab213 --login Logging in to [iface: default, target: iqn.2003-01.org.linux-iscsi.ip-172-31-46-175.x8664:sn.8d05583ab213, portal: 172.31.46.175,3260] iscsiadm: Could not login to [iface: default, target: iqn.2003-01.org.linux-iscsi.ip-172-31-46-175.x8664:sn.8d05583ab213, portal: 172.31.46.175,3260]. iscsiadm: initiator reported error (24 - iSCSI login failed due to authorization failure) iscsiadm: Could not log into all portals |
ACLに登録するためには、ACLディレクトリでcreate
コマンドを実行します。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 |
/> /iscsi/iqn.2003-01.org.linux-iscsi.ip-172-31-46-175.x8664:sn.8d05583ab213/tpg1/acls create iqn.1994-05.com.redhat:d378d1eba1e3 Created Node ACL for iqn.1994-05.com.redhat:d378d1eba1e3 Created mapped LUN 0. Created mapped LUN 1. /> ls /iscsi/ o- iscsi ................................................................................ [Targets: 1] o- iqn.2003-01.org.linux-iscsi.ip-172-31-46-175.x8664:sn.8d05583ab213 .................... [TPGs: 1] o- tpg1 ................................................................... [no-gen-acls, no-auth] o- acls .............................................................................. [ACLs: 1] | o- iqn.1994-05.com.redhat:d378d1eba1e3 ...................................... [Mapped LUNs: 2] | o- mapped_lun0 ................................................... [lun0 block/volume0 (rw)] | o- mapped_lun1 ................................................... [lun1 block/volume1 (rw)] o- luns .............................................................................. [LUNs: 2] | o- lun0 ................. [block/volume0 (/dev/disk/by-path/xen-vbd-xxxxx) (default_tg_pt_gp)] | o- lun1 ................. [block/volume1 (/dev/disk/by-path/xen-vbd-yyyyy) (default_tg_pt_gp)] o- portals ........................................................................ [Portals: 1] o- 0.0.0.0:3260 ......................................................................... [OK] /> |
ALCの無効化
ACLによる厳密なアクセス制御が不要である場合は、以下のようにACL設定を無効化(generate_node_acls=1
)することで、イニシエータの登録をせずにターゲットへのログインを可能にできます。
1 2 3 4 5 6 7 8 9 10 11 12 13 |
/> /iscsi/iqn.2003-01.org.linux-iscsi.ip-172-31-46-175.x8664:sn.8d05583ab213/tpg1/ set attribute generate_node_acls=1 Parameter generate_node_acls is now '1'. /> ls /iscsi/ o- iscsi ................................................................................ [Targets: 1] o- iqn.2003-01.org.linux-iscsi.ip-172-31-46-175.x8664:sn.8d05583ab213 .................... [TPGs: 1] o- tpg1 ...................................................................... [gen-acls, no-auth] o- acls .............................................................................. [ACLs: 0] o- luns .............................................................................. [LUNs: 2] | o- lun0 ................. [block/volume0 (/dev/disk/by-path/xen-vbd-xxxxx) (default_tg_pt_gp)] | o- lun1 ................. [block/volume1 (/dev/disk/by-path/xen-vbd-yyyyy) (default_tg_pt_gp)] o- portals ........................................................................ [Portals: 1] o- 0.0.0.0:3260 ......................................................................... [OK] /> |
iSCSIポータルの設定(任意)
iSCSIターゲットを作成すると、デフォルトのiSCSIポータルも作成されます。デフォルトでは、iSCSIターゲットがiSCSIポート3260番の全てのIPアドレスをリッスンするようになっています。デフォルト設定が望ましくない場合、以下のようにデフォルトのポータルを削除し、リッスンするIPアドレスとポートを指定してポータルを再作成することも可能です。
デフォルトポータルの削除
ポータルディレクトリでデフォルトポータルを削除します。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 |
/> /iscsi/iqn.2003-01.org.linux-iscsi.ip-172-31-46-175.x8664:sn.8d05583ab213/tpg1/portals/ delete 0.0.0.0 3260 Deleted network portal 0.0.0.0:3260 /> ls /iscsi/ o- iscsi ................................................................................ [Targets: 1] o- iqn.2003-01.org.linux-iscsi.ip-172-31-46-175.x8664:sn.8d05583ab213 .................... [TPGs: 1] o- tpg1 ................................................................... [no-gen-acls, no-auth] o- acls .............................................................................. [ACLs: 1] | o- iqn.1994-05.com.redhat:d378d1eba1e3 ...................................... [Mapped LUNs: 2] | o- mapped_lun0 ................................................... [lun0 block/volume0 (rw)] | o- mapped_lun1 ................................................... [lun1 block/volume1 (rw)] o- luns .............................................................................. [LUNs: 2] | o- lun0 ................. [block/volume0 (/dev/disk/by-path/xen-vbd-xxxxx) (default_tg_pt_gp)] | o- lun1 ................. [block/volume1 (/dev/disk/by-path/xen-vbd-yyyyy) (default_tg_pt_gp)] o- portals ........................................................................ [Portals: 0] /> |
ポータルを削除した状態でiSCSIターゲットを検出しようとすると、コネクションが拒否されます。
1 2 3 4 5 6 7 8 9 |
$ sudo iscsiadm -m discovery -t st -p 172.31.46.175 iscsiadm: cannot make connection to 172.31.46.175: Connection refused iscsiadm: cannot make connection to 172.31.46.175: Connection refused iscsiadm: cannot make connection to 172.31.46.175: Connection refused iscsiadm: cannot make connection to 172.31.46.175: Connection refused iscsiadm: cannot make connection to 172.31.46.175: Connection refused iscsiadm: cannot make connection to 172.31.46.175: Connection refused iscsiadm: connection login retries (reopen_max) 5 exceeded iscsiadm: Could not perform SendTargets discovery: iSCSI PDU timed out |
新規ポータルの作成
ポータルディレクトリで、ターゲットのIPアドレスを指定して新規ポータルを作成します。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 |
/> /iscsi/iqn.2003-01.org.linux-iscsi.ip-172-31-46-175.x8664:sn.8d05583ab213/tpg1/portals create 172.31.46.175 Using default IP port 3260 Created network portal 172.31.46.175:3260. /> ls /iscsi/ o- iscsi ................................................................................ [Targets: 1] o- iqn.2003-01.org.linux-iscsi.ip-172-31-46-175.x8664:sn.8d05583ab213 .................... [TPGs: 1] o- tpg1 ................................................................... [no-gen-acls, no-auth] o- acls .............................................................................. [ACLs: 1] | o- iqn.1994-05.com.redhat:d378d1eba1e3 ...................................... [Mapped LUNs: 2] | o- mapped_lun0 ................................................... [lun0 block/volume0 (rw)] | o- mapped_lun1 ................................................... [lun1 block/volume1 (rw)] o- luns .............................................................................. [LUNs: 2] | o- lun0 ................. [block/volume0 (/dev/disk/by-path/xen-vbd-xxxxx) (default_tg_pt_gp)] | o- lun1 ................. [block/volume1 (/dev/disk/by-path/xen-vbd-yyyyy) (default_tg_pt_gp)] o- portals ........................................................................ [Portals: 1] o- 172.31.46.175:3260 ................................................................... [OK] /> |
CHAP認証(任意)
CHAP認証では、イニシエータとターゲットの両方でユーザ名とパスワードを定義することで、イニシエータとターゲット間で認証に基づいたやり取りが可能になります。
CHAP認証には単方向CHAP認証と双方向CHAP認証の2種類があります。
- 単方向CHAP認証:ターゲットがイニシエータを認証します。ターゲットは(1)イニシエータから送られてきた暗号化パスワードと(2)ターゲット内で生成した暗号化パスワードを比較して、一致すれば認証を許可します。
- 双方向CHAP認証:単方向CHAP認証に加えて、イニシエータがターゲットを認証することで、双方向からの認証を実現します。
ターゲット検出時のCHAP認証
ターゲット検出時の認証用にCHAPユーザ名とパスワードを設定することができます。
認証設定が合っていない場合、discovery
コマンドを実行しても、以下のようにターゲットの検出が失敗します。
1 2 3 4 |
$ sudo iscsiadm -m discovery -t st -p 172.31.46.175 iscsiadm: Login failed to authenticate with target iscsiadm: discovery login to 172.31.46.175 rejected: initiator failed authorization iscsiadm: Could not perform SendTargets discovery: iSCSI login failed due to authorization failure |
以下、targetcliによるターゲット側での単方向CHAP認証の設定方法です。
- iSCSIディレクトリで検出時の認証を有効にします。
- CHAPユーザ名(e.g. userid=initiatoruser)とパスワード(e.g. password=initiatorpassword)を設定します。
- 双方向CHAP認証の場合、双方向用CHAPユーザ名(e.g. mutual_userid=targetuser)と双方向用パスワード(e.g. mutual_password=targetpassword)を追加で設定します。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 |
/> /iscsi/ set discovery_auth enable=1 Parameter enable is now 'True'. /> /iscsi/ set discovery_auth userid=initiatoruser Parameter userid is now 'initiatoruser'. /> /iscsi/ set discovery_auth password=initiatorpassword Parameter password is now 'initiatorpassword'. /> ls /iscsi/ o- iscsi ............................................................... [1-way disc auth, Targets: 1] o- iqn.2003-01.org.linux-iscsi.ip-172-31-46-175.x8664:sn.8d05583ab213 .................... [TPGs: 1] o- tpg1 ................................................................... [no-gen-acls, no-auth] o- acls .............................................................................. [ACLs: 1] | o- iqn.1994-05.com.redhat:d378d1eba1e3 ...................................... [Mapped LUNs: 2] | o- mapped_lun0 ................................................... [lun0 block/volume0 (rw)] | o- mapped_lun1 ................................................... [lun1 block/volume1 (rw)] o- luns .............................................................................. [LUNs: 2] | o- lun0 ................. [block/volume0 (/dev/disk/by-path/xen-vbd-xxxxx) (default_tg_pt_gp)] | o- lun1 ................. [block/volume1 (/dev/disk/by-path/xen-vbd-yyyyy) (default_tg_pt_gp)] o- portals ........................................................................ [Portals: 1] o- 172.31.46.175:3260 ................................................................... [OK] /> |
次にイニシエータ側ですが、/etc/iscsi/iscsid.confファイルを以下のように編集します。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 |
# ************* # CHAP Settings # ************* (……途中省略……) ※単方向CHAP認証の場合は、以下の(★)の行のコメントアウトを外し、CHAPユーザ名とパスワードを設定します。 # To enable CHAP authentication for a discovery session to the target set discovery.sendtargets.auth.authmethod to CHAP. The default is None. discovery.sendtargets.auth.authmethod = CHAP(※) # To set a discovery session CHAP username and password for the initiator # authentication by the target(s), uncomment the following lines: discovery.sendtargets.auth.username = initiatoruser (★) discovery.sendtargets.auth.password = initiatorpassword (★) ※双方向CHAP認証の場合は、追加で以下の(★)の行のコメントアウトを外し、双方向用CHAPユーザ名とパスワードを設定します。 # To set a discovery session CHAP username and password for target(s) # authentication by the initiator, uncomment the following lines: discovery.sendtargets.auth.username_in = targetuser (★) discovery.sendtargets.auth.password_in = targetpassword (★) (……途中省略……) |
ターゲットログイン時のCHAP認証
ターゲットログイン時の認証用にCHAPユーザ名とパスワードを設定することができます。
認証設定が合っていない場合、ターゲットへのログインを試みても、以下のようにログインが失敗します。
1 2 3 4 5 |
$ sudo iscsiadm -m node -T iqn.2003-01.org.linux-iscsi.ip-172-31-46-175.x8664:sn.8d05583ab213 --login Logging in to [iface: default, target: iqn.2003-01.org.linux-iscsi.ip-172-31-46-175.x8664:sn.8d05583ab213, portal: 172.31.46.175,3260] iscsiadm: Could not login to [iface: default, target: iqn.2003-01.org.linux-iscsi.ip-172-31-46-175.x8664:sn.8d05583ab213, portal: 172.31.46.175,3260]. iscsiadm: initiator reported error (19 - encountered non-retryable iSCSI login failure) iscsiadm: Could not log into all portals |
以下、targetcliによるターゲット側での単方向CHAP認証の設定方法です。
- iSCSIディレクトリで検出時の認証を有効にします。
- CHAPユーザ名(e.g. userid=initiatoruser)とパスワード(e.g. password=initiatorpassword)を設定します。
- 双方向CHAP認証の場合、双方向用CHAPユーザ名(e.g. mutual_userid=targetuser)と双方向用パスワード(e.g. mutual_password=targetpassword)を追加で設定します。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 |
/> /iscsi/iqn.2003-01.org.linux-iscsi.ip-172-31-46-175.x8664:sn.8d05583ab213/tpg1/ set attribute authentication=1 Parameter authentication is now '1'. /> /iscsi/iqn.2003-01.org.linux-iscsi.ip-172-31-46-175.x8664:sn.8d05583ab213/tpg1/acls/iqn.1994-05.com.redhat:d378d1eba1e3/ set auth userid=initiatoruser Parameter userid is now 'initiatoruser'. /> /iscsi/iqn.2003-01.org.linux-iscsi.ip-172-31-46-175.x8664:sn.8d05583ab213/tpg1/acls/iqn.1994-05.com.redhat:d378d1eba1e3/ set auth password=initiatorpassword Parameter password is now 'initiatorpassword'. /> /> ls /iscsi/ o- iscsi .............................................................. [mutual disc auth, Targets: 1] o- iqn.2003-01.org.linux-iscsi.ip-172-31-46-175.x8664:sn.8d05583ab213 .................... [TPGs: 1] o- tpg1 .............................................................. [no-gen-acls, auth per-acl] o- acls .............................................................................. [ACLs: 1] | o- iqn.1994-05.com.redhat:d378d1eba1e3 ......................... [mutual auth, Mapped LUNs: 2] | o- mapped_lun0 ................................................... [lun0 block/volume0 (rw)] | o- mapped_lun1 ................................................... [lun1 block/volume1 (rw)] o- luns .............................................................................. [LUNs: 2] | o- lun0 ................. [block/volume0 (/dev/disk/by-path/xen-vbd-xxxxx) (default_tg_pt_gp)] | o- lun1 ................. [block/volume1 (/dev/disk/by-path/xen-vbd-yyyyy) (default_tg_pt_gp)] o- portals ........................................................................ [Portals: 1] o- 172.31.46.175:3260 ................................................................... [OK] /> |
イニシエータ側は、/etc/iscsi/iscsid.confファイルを以下のように編集します。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 |
# ************* # CHAP Settings # ************* (……途中省略……) ※単方向CHAP認証の場合は、以下の(★)の行のコメントアウトを外し、CHAPユーザ名とパスワードを設定します。 # To enable CHAP authentication set node.session.auth.authmethod # to CHAP. The default is None. node.session.auth.authmethod = CHAP (※) (……途中省略……) # To set a CHAP username and password for initiator # authentication by the target(s), uncomment the following lines: node.session.auth.username = initiatoruser (※) node.session.auth.password = initiatorpassword (※) ※双方向CHAP認証の場合は、追加で以下の(★)の行のコメントアウトを外し、双方向用CHAPユーザ名とパスワードを設定します。 # To set a CHAP username and password for target(s) # authentication by the initiator, uncomment the following lines: node.session.auth.username_in = targetuser (※) node.session.auth.password_in = targetpassword (※) (……途中省略……) |
iSCSIイニシエータからiSCSIターゲットに接続
iSCSIターゲットの設定が終わったので、iSCSIイニシエータから接続してみます。
iSCSIターゲットの検出・接続
IPアドレスを指定して、iSCSIターゲットを検出し、接続します。
1 2 |
$ sudo iscsiadm -m discovery -t st -p 172.31.46.175 172.31.46.175:3260,1 iqn.2003-01.org.linux-iscsi.ip-172-31-46-175.x8664:sn.8d05583ab213 |
iSCSIターゲットへのログイン
検出したiSCSIターゲットのIQNを指定して、iSCSIターゲットにログインします。
1 2 3 |
$ sudo iscsiadm -m node -T iqn.2003-01.org.linux-iscsi.ip-172-31-46-175.x8664:sn.8d05583ab213 --login Logging in to [iface: default, target: iqn.2003-01.org.linux-iscsi.ip-172-31-46-175.x8664:sn.8d05583ab213, portal: 172.31.46.175,3260] Login to [iface: default, target: iqn.2003-01.org.linux-iscsi.ip-172-31-46-175.x8664:sn.8d05583ab213, portal: 172.31.46.175,3260] successful. |
IQNを指定せず、一括でiSCSIターゲットにログインすることも可能です。
1 2 3 |
$ sudo iscsiadm -m node --login Logging in to [iface: default, target: iqn.2003-01.org.linux-iscsi.ip-172-31-46-175.x8664:sn.8d05583ab213, portal: 172.31.46.175,3260] Login to [iface: default, target: iqn.2003-01.org.linux-iscsi.ip-172-31-46-175.x8664:sn.8d05583ab213, portal: 172.31.46.175,3260] successful. |
lsblkコマンドを実行すると、iSCSIターゲット経由でブロックデバイスを認識することができます。
1 2 3 4 5 6 7 |
$ lsblk NAME MAJ:MIN RM SIZE RO TYPE MOUNTPOINT sda 8:0 0 125G 0 disk sdb 8:16 0 125G 0 disk xvda 202:0 0 20G 0 disk |-xvda1 202:1 0 1M 0 part `-xvda2 202:2 0 20G 0 part / |
iSCSIセッションからのログアウト & iSCSIターゲットの削除
iSCSI接続を終了する場合、iSCSIイニシエータ側でiSCSIセッションからログアウト後、iSCSIターゲットの接続設定を削除します。
iSCSIセッションからのログアウト
iSCSIイニシエータに登録したノード(iSCSIターゲット)からログアウトします。
1 2 3 |
$ sudo iscsiadm -m node -T iqn.2003-01.org.linux-iscsi.ip-172-31-46-175.x8664:sn.8d05583ab213 --logout Logging out of session [sid: 8, target: iqn.2003-01.org.linux-iscsi.ip-172-31-46-175.x8664:sn.8d05583ab213, portal: 172.31.46.175,3260] Logout of [sid: 8, target: iqn.2003-01.org.linux-iscsi.ip-172-31-46-175.x8664:sn.8d05583ab213, portal: 172.31.46.175,3260] successful. |
IQNを指定せず、一括でiSCSIターゲットからログアウトすることも可能です。
1 2 3 |
$ sudo iscsiadm -m node --logout Logging out of session [sid: 8, target: iqn.2003-01.org.linux-iscsi.ip-172-31-46-175.x8664:sn.8d05583ab213, portal: 172.31.46.175,3260] Logout of [sid: 8, target: iqn.2003-01.org.linux-iscsi.ip-172-31-46-175.x8664:sn.8d05583ab213, portal: 172.31.46.175,3260] successful. |
アクティブなiSCSIセッションがないことを確認します。
1 2 |
$ iscsiadm --mode session iscsiadm: No active sessions. |
iSCSIターゲットの削除
iSCSIイニシエータに登録したノード(iSCSIターゲット)を削除します。(discoveryコマンドで一括登録した場合は、接続サーバを削除します)
1 |
$ sudo iscsiadm -m node -o delete -T iqn.2003-01.org.linux-iscsi.ip-172-31-46-175.x8664:sn.8d05583ab213 |
接続サーバを削除します。
1 2 3 |
$ sudo iscsiadm -m discovery -o delete -p 172.31.46.175 $ sudo iscsiadm -m node iscsiadm: No records found |
おわりに
今回はtargetcliを活用した、Linux環境でのiSCSI接続方法を記載しました。
targetcliを活用することで、リモート環境にあって直接利用することができないストレージデバイスを、Linux経由でイニシエータサーバに提供することができます。低スペックなサーバから始めることができるので、本記事を参考にまずは試して貰えると嬉しいです。それでは。