こんにちは、Aireです。
今回はLinux環境でイニシエータからターゲットにiSCSI接続する方法を記載します。その際、iSCSIターゲットにアタッチしたブロックデバイスをiSCSIイニシエータに提供するようにします。また、iSCSIターゲット側には複数のNICを用意し、ブロックデバイスをマルチパスデバイスとしてiSCSIイニシエータに提供するようにします。
マルチパスが不要である場合の手順は、以下の記事で紹介していますのでそちらを参照ください。
構成情報
iSCSIイニシエータ
OS(cat /etc/system-release) | Red Hat Enterprise Linux release 9.2 (Plow) |
Linux Kernel(uname -r) | 5.14.0-284.11.1.el9_2.x86_64 |
NIC/IPアドレス | NIC1:10.0.0.97 |
使用ソフトウェアパッケージ | iscsi-initiator-utils, device-mapper-multipath |
iSCSIターゲット
OS(cat /etc/system-release) | Amazon Linux release 2023 (Amazon Linux) |
Linux Kernel(uname -r) | 6.1.34-59.116.amzn2023.x86_64 |
NIC/IPアドレス | NIC1:10.0.0.69 NIC2:10.0.0.6 |
使用ソフトウェアパッケージ | targetcli, firewalld |
ブロックデバイス(iSCSI接続用) | 10Gブロックデバイス × 2 |
ソフトウェアパッケージのインストール
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 |
device-mapper-multipathのインストール
device-mapper-multipath
パッケージがインストールされているか確認し、インストールされていない場合は、dnf install
コマンドを使用してインストールします。
1 2 3 |
$ rpm -q device-mapper-multipath package device-mapper-multipath is not installed $ sudo dnf install -y device-mapper-multipath |
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.54 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 |
/> /backstores/block create name=volume0 dev=/dev/disk/by-path/xen-vbd-51728 Created block storage object volume0 using /dev/disk/by-path/xen-vbd-51728. /> /backstores/block create name=volume1 dev=/dev/disk/by-path/xen-vbd-51744 Created block storage object volume1 using /dev/disk/by-path/xen-vbd-51744. /> ls /backstores/ o- backstores ................................................................................ [...] o- block .................................................................... [Storage Objects: 2] | o- volume0 .................. [/dev/disk/by-path/xen-vbd-51728 (10.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-51744 (10.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] /> |
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 |
/> /iscsi create iqn.2003-01.org.linux-iscsi.ip-10-0-0-69 Created target iqn.2003-01.org.linux-iscsi.ip-10-0-0-69. Created TPG 1. Global pref auto_add_default_portal=true Created default portal listening on all IPs (0.0.0.0), port 3260. /> /iscsi create iqn.2003-01.org.linux-iscsi.ip-10-0-0-6 Created target iqn.2003-01.org.linux-iscsi.ip-10-0-0-6. Created TPG 1. Global pref auto_add_default_portal=true Created default portal listening on all IPs (0.0.0.0), port 3260. /> ls /iscsi o- iscsi .............................................................................. [Targets: 2] o- iqn.2003-01.org.linux-iscsi.ip-10-0-0-6 ............................................. [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- iqn.2003-01.org.linux-iscsi.ip-10-0-0-69 ............................................ [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] /> |
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 |
/> /iscsi/iqn.2003-01.org.linux-iscsi.ip-10-0-0-69/tpg1/luns create /backstores/block/volume0 Created LUN 0. /> /iscsi/iqn.2003-01.org.linux-iscsi.ip-10-0-0-69/tpg1/luns create /backstores/block/volume1 Created LUN 1. /> /iscsi/iqn.2003-01.org.linux-iscsi.ip-10-0-0-6/tpg1/luns create /backstores/block/volume0 Created LUN 0. /> /iscsi/iqn.2003-01.org.linux-iscsi.ip-10-0-0-6/tpg1/luns create /backstores/block/volume1 Created LUN 1. /> ls /iscsi o- iscsi ............................................................................... [Targets: 2] o- iqn.2003-01.org.linux-iscsi.ip-10-0-0-6 .............................................. [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-51728) (default_tg_pt_gp)] | | o- lun1 ................ [block/volume1 (/dev/disk/by-path/xen-vbd-51744) (default_tg_pt_gp)] | o- portals ....................................................................... [Portals: 1] | o- 0.0.0.0:3260 ........................................................................ [OK] o- iqn.2003-01.org.linux-iscsi.ip-10-0-0-69 ............................................. [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-51728) (default_tg_pt_gp)] | o- lun1 ................ [block/volume1 (/dev/disk/by-path/xen-vbd-51744) (default_tg_pt_gp)] o- portals ....................................................................... [Portals: 1] o- 0.0.0.0:3260 ........................................................................ [OK] /> |
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-10-0-0-69 --login Logging in to [iface: default, target: iqn.2003-01.org.linux-iscsi.ip-10-0-0-69, portal: 10.0.0.69,3260] iscsiadm: Could not login to [iface: default, target: iqn.2003-01.org.linux-iscsi.ip-10-0-0-69, portal: 10.0.0.69,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 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 |
/> /iscsi/iqn.2003-01.org.linux-iscsi.ip-10-0-0-69/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. /> /iscsi/iqn.2003-01.org.linux-iscsi.ip-10-0-0-6/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: 2] o- iqn.2003-01.org.linux-iscsi.ip-10-0-0-6 ............................................... [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-51728) (default_tg_pt_gp)] | | o- lun1 ................. [block/volume1 (/dev/disk/by-path/xen-vbd-51744) (default_tg_pt_gp)] | o- portals ........................................................................ [Portals: 1] | o- 0.0.0.0:3260 ......................................................................... [OK] o- iqn.2003-01.org.linux-iscsi.ip-10-0-0-69 .............................................. [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-51728) (default_tg_pt_gp)] | o- lun1 ................. [block/volume1 (/dev/disk/by-path/xen-vbd-51744) (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 14 15 16 17 18 19 20 21 22 23 |
/> /iscsi/iqn.2003-01.org.linux-iscsi.ip-10-0-0-69/tpg1/ set attribute generate_node_acls=1 Parameter generate_node_acls is now '1'. /> /iscsi/iqn.2003-01.org.linux-iscsi.ip-10-0-0-6/tpg1/ set attribute generate_node_acls=1 Parameter generate_node_acls is now '1'. /> ls /iscsi/ o- iscsi ................................................................................ [Targets: 2] o- iqn.2003-01.org.linux-iscsi.ip-10-0-0-6 ............................................... [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-51728) (default_tg_pt_gp)] | | o- lun1 ................. [block/volume1 (/dev/disk/by-path/xen-vbd-51744) (default_tg_pt_gp)] | o- portals ........................................................................ [Portals: 1] | o- 0.0.0.0:3260 ......................................................................... [OK] o- iqn.2003-01.org.linux-iscsi.ip-10-0-0-69 .............................................. [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-51728) (default_tg_pt_gp)] | o- lun1 ................. [block/volume1 (/dev/disk/by-path/xen-vbd-51744) (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 16 17 18 19 20 21 22 23 24 25 26 27 |
/> /iscsi/iqn.2003-01.org.linux-iscsi.ip-10-0-0-69/tpg1/portals/ delete 0.0.0.0 3260 Deleted network portal 0.0.0.0:3260 /> /iscsi/iqn.2003-01.org.linux-iscsi.ip-10-0-0-6/tpg1/portals/ delete 0.0.0.0 3260 Deleted network portal 0.0.0.0:3260 /> ls /iscsi/ o- iscsi ................................................................................ [Targets: 2] o- iqn.2003-01.org.linux-iscsi.ip-10-0-0-6 ............................................... [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-51728) (default_tg_pt_gp)] | | o- lun1 ................. [block/volume1 (/dev/disk/by-path/xen-vbd-51744) (default_tg_pt_gp)] | o- portals ........................................................................ [Portals: 0] o- iqn.2003-01.org.linux-iscsi.ip-10-0-0-69 .............................................. [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-51728) (default_tg_pt_gp)] | o- lun1 ................. [block/volume1 (/dev/disk/by-path/xen-vbd-51744) (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 10.0.0.69 iscsiadm: cannot make connection to 10.0.0.69: Connection refused iscsiadm: cannot make connection to 10.0.0.69: Connection refused iscsiadm: cannot make connection to 10.0.0.69: Connection refused iscsiadm: cannot make connection to 10.0.0.69: Connection refused iscsiadm: cannot make connection to 10.0.0.69: Connection refused iscsiadm: cannot make connection to 10.0.0.69: 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 18 19 20 21 22 23 24 25 26 27 28 29 30 31 |
/> /iscsi/iqn.2003-01.org.linux-iscsi.ip-10-0-0-69/tpg1/portals create 10.0.0.69 Using default IP port 3260 Created network portal 10.0.0.69:3260. /> /iscsi/iqn.2003-01.org.linux-iscsi.ip-10-0-0-6/tpg1/portals create 10.0.0.6 Using default IP port 3260 Created network portal 10.0.0.6:3260. /> ls /iscsi/ o- iscsi ................................................................................ [Targets: 2] o- iqn.2003-01.org.linux-iscsi.ip-10-0-0-6 ............................................... [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-51728) (default_tg_pt_gp)] | | o- lun1 ................. [block/volume1 (/dev/disk/by-path/xen-vbd-51744) (default_tg_pt_gp)] | o- portals ........................................................................ [Portals: 1] | o- 10.0.0.6:3260 ........................................................................ [OK] o- iqn.2003-01.org.linux-iscsi.ip-10-0-0-69 .............................................. [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-51728) (default_tg_pt_gp)] | o- lun1 ................. [block/volume1 (/dev/disk/by-path/xen-vbd-51744) (default_tg_pt_gp)] o- portals ........................................................................ [Portals: 1] o- 10.0.0.69: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 10.0.0.69 iscsiadm: Login failed to authenticate with target iscsiadm: discovery login to 10.0.0.69 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 21 22 23 24 25 26 27 28 29 30 31 |
/> /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: 2] o- iqn.2003-01.org.linux-iscsi.ip-10-0-0-6 ............................................... [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-51728) (default_tg_pt_gp)] | | o- lun1 ................. [block/volume1 (/dev/disk/by-path/xen-vbd-51744) (default_tg_pt_gp)] | o- portals ........................................................................ [Portals: 1] | o- 10.0.0.6:3260 ........................................................................ [OK] o- iqn.2003-01.org.linux-iscsi.ip-10-0-0-69 .............................................. [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-51728) (default_tg_pt_gp)] | o- lun1 ................. [block/volume1 (/dev/disk/by-path/xen-vbd-51744) (default_tg_pt_gp)] o- portals ........................................................................ [Portals: 1] o- 10.0.0.69: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-10-0-0-69 --login Logging in to [iface: default, target: iqn.2003-01.org.linux-iscsi.ip-10-0-0-6, portal: 10.0.0.69,3260] iscsiadm: Could not login to [iface: default, target: iqn.2003-01.org.linux-iscsi.ip-10-0-0-6, portal: 10.0.0.69,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 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 |
/> /iscsi/iqn.2003-01.org.linux-iscsi.ip-10-0-0-69/tpg1/ set attribute authentication=1 Parameter authentication is now '1'. /> /iscsi/iqn.2003-01.org.linux-iscsi.ip-10-0-0-69/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-10-0-0-69/tpg1/acls/iqn.1994-05.com.redhat:d378d1eba1e3/ set auth password=initiatorpassword Parameter password is now 'initiatorpassword'. /> /iscsi/iqn.2003-01.org.linux-iscsi.ip-10-0-0-6/tpg1/ set attribute authentication=1 Parameter authentication is now '1'. /> /iscsi/iqn.2003-01.org.linux-iscsi.ip-10-0-0-6/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-10-0-0-6/tpg1/acls/iqn.1994-05.com.redhat:d378d1eba1e3/ set auth password=initiatorpassword Parameter password is now 'initiatorpassword'. /> ls /iscsi/ o- iscsi ............................................................... [1-way disc auth, Targets: 2] o- iqn.2003-01.org.linux-iscsi.ip-10-0-0-6 ............................................... [TPGs: 1] | o- tpg1 .............................................................. [no-gen-acls, auth per-acl] | o- acls .............................................................................. [ACLs: 1] | | o- iqn.1994-05.com.redhat:d378d1eba1e3 .......................... [1-way 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-51728) (default_tg_pt_gp)] | | o- lun1 ................. [block/volume1 (/dev/disk/by-path/xen-vbd-51744) (default_tg_pt_gp)] | o- portals ........................................................................ [Portals: 1] | o- 10.0.0.6:3260 ........................................................................ [OK] o- iqn.2003-01.org.linux-iscsi.ip-10-0-0-69 .............................................. [TPGs: 1] o- tpg1 .............................................................. [no-gen-acls, auth per-acl] o- acls .............................................................................. [ACLs: 1] | o- iqn.1994-05.com.redhat:d378d1eba1e3 .......................... [1-way 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-51728) (default_tg_pt_gp)] | o- lun1 ................. [block/volume1 (/dev/disk/by-path/xen-vbd-51744) (default_tg_pt_gp)] o- portals ........................................................................ [Portals: 1] o- 10.0.0.69: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 3 |
$ sudo iscsiadm -m discovery -t st -p 10.0.0.69 10.0.0.6:3260,1 iqn.2003-01.org.linux-iscsi.ip-10-0-0-6 10.0.0.69:3260,1 iqn.2003-01.org.linux-iscsi.ip-10-0-0-69 |
iSCSIターゲットへのログイン
検出したiSCSIターゲットのIQNを指定して、iSCSIターゲットにログインします。
1 2 3 4 5 6 |
$ sudo iscsiadm -m node -T iqn.2003-01.org.linux-iscsi.ip-10-0-0-69 --login Logging in to [iface: default, target: iqn.2003-01.org.linux-iscsi.ip-10-0-0-69, portal: 10.0.0.69,3260] Login to [iface: default, target: iqn.2003-01.org.linux-iscsi.ip-10-0-0-69, portal: 10.0.0.69,3260] successful. $ sudo iscsiadm -m node -T iqn.2003-01.org.linux-iscsi.ip-10-0-0-6 --login Logging in to [iface: default, target: iqn.2003-01.org.linux-iscsi.ip-10-0-0-6, portal: 10.0.0.6,3260] Login to [iface: default, target: iqn.2003-01.org.linux-iscsi.ip-10-0-0-6, portal: 10.0.0.6,3260] successful. |
IQNを指定せず、一括でiSCSIターゲットにログインすることも可能です。
1 2 3 4 5 |
$ sudo iscsiadm -m node --login Logging in to [iface: default, target: iqn.2003-01.org.linux-iscsi.ip-10-0-0-69, portal: 10.0.0.69,3260] Logging in to [iface: default, target: iqn.2003-01.org.linux-iscsi.ip-10-0-0-6, portal: 10.0.0.6,3260] Login to [iface: default, target: iqn.2003-01.org.linux-iscsi.ip-10-0-0-69, portal: 10.0.0.69,3260] successful. Login to [iface: default, target: iqn.2003-01.org.linux-iscsi.ip-10-0-0-6, portal: 10.0.0.6,3260] successful. |
lsblkコマンドを実行すると、iSCSIターゲット経由でブロックデバイスを認識することができます。同一のブロックデバイスを2つのiSCSIターゲットから認識させているので、見た目上は4つのブロックデバイスが存在するように見えています。
1 2 3 4 5 6 7 8 9 10 |
$ lsblk NAME MAJ:MIN RM SIZE RO TYPE MOUNTPOINTS sda 8:0 0 10G 0 disk sdb 8:16 0 10G 0 disk sdc 8:32 0 10G 0 disk sdd 8:48 0 10G 0 disk xvda 202:0 0 8G 0 disk ├─xvda1 202:1 0 8G 0 part / ├─xvda127 259:0 0 1M 0 part └─xvda128 259:1 0 10M 0 part |
ls -l /dev/disk/by-path/
コマンドを実行すると、iSCSIターゲットとブロックデバイス名の対応関係を参照できます。
1 2 3 4 5 6 7 8 9 10 |
$ ls -l /dev/disk/by-path/ total 0 lrwxrwxrwx. 1 root root 9 Jul 9 23:27 ip-10.0.0.69:3260-iscsi-iqn.2003-01.org.linux-iscsi.ip-10-0-0-69-lun-0 -> ../../sda lrwxrwxrwx. 1 root root 9 Jul 9 23:27 ip-10.0.0.69:3260-iscsi-iqn.2003-01.org.linux-iscsi.ip-10-0-0-69-lun-1 -> ../../sdb lrwxrwxrwx. 1 root root 9 Jul 9 23:28 ip-10.0.0.6:3260-iscsi-iqn.2003-01.org.linux-iscsi.ip-10-0-0-6-lun-0 -> ../../sdc lrwxrwxrwx. 1 root root 9 Jul 9 23:28 ip-10.0.0.6:3260-iscsi-iqn.2003-01.org.linux-iscsi.ip-10-0-0-6-lun-1 -> ../../sdd lrwxrwxrwx. 1 root root 10 Jul 9 22:37 xen-vbd-51712 -> ../../xvda lrwxrwxrwx. 1 root root 11 Jul 9 22:37 xen-vbd-51712-part1 -> ../../xvda1 lrwxrwxrwx. 1 root root 13 Jul 9 22:37 xen-vbd-51712-part127 -> ../../xvda127 lrwxrwxrwx. 1 root root 13 Jul 9 22:37 xen-vbd-51712-part128 -> ../../xvda128 |
マルチパスの設定
マルチパス設定ファイルの作成
mpathconf
コマンドを実行し、マルチパス設定ファイル(/etc/multipath.conf
)を作成します。
1 |
sudo mpathconf --enable |
/etc/multipath.conf
ファイルの中身は以下のようになっており、基本的な設定がデフォルトで用意されています。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 |
# device-mapper-multipath configuration file # For a complete list of the default configuration values, run either: # # multipath -t # or # # multipathd show config # For a list of configuration options with descriptions, see the # multipath.conf man page. defaults { user_friendly_names yes find_multipaths yes } blacklist { } |
パス選択アルゴリズム(例:ラウンドロビン)やタイムアウト値などの設定を変更・追加する場合は、以下のサイトの「5. DM Multipath設定ファイルの編集」-「5.2. 設定ファイルのdefaultsセクション」を参照してください。
以下の設定例では、I/Oパス選択アルゴリズムとしてラウンドロビン(パスグループ内の全てのパスをループし、各パスに同数のI/O要求を送信)を指定し、パスグルーピングポリシーとしてマルチバス(1つの有線グループで有効な全てのパス)を指定しています。
1 2 3 4 5 6 |
defaults { user_friendly_names yes find_multipaths yes path_selector "round-robin 0" path_grouping_policy multibus } |
Device Mapper Multipathの有効化
サービスの起動と自動起動の有効化を行います。
1 2 3 |
$ sudo systemctl start multipathd $ sudo systemctl enable multipathd $ sudo systemctl status multipathd |
前節で作成したマルチパス設定ファイル(/etc/multipath.conf
)の記述を変更した場合は、以下のコマンドを実行して、サービスを再読み込みします。
1 |
$ sudo systemctl reload multipathd |
マルチパスの状態確認
multipath -ll
コマンドを使用すると、マルチパスデバイスの状態が表示されます。
1 2 3 4 5 6 7 8 9 10 11 |
$ sudo multipath -ll mpatha (xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx) dm-0 LIO-ORG,volume0 size=10G features='0' hwhandler='1 alua' wp=ro `-+- policy='round-robin 0' prio=50 status=active |- 2:0:0:0 sda 8:0 active ready running `- 3:0:0:0 sdc 8:32 active ready running mpathb (xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx) dm-1 LIO-ORG,volume1 size=10G features='0' hwhandler='1 alua' wp=ro `-+- policy='round-robin 0' prio=50 status=active |- 2:0:0:1 sdb 8:16 active ready running `- 3:0:0:1 sdd 8:48 active ready running |
iSCSIセッションからのログアウト & iSCSIターゲットの削除
iSCSI接続を終了する場合、iSCSIイニシエータ側でiSCSIセッションからログアウト後、iSCSIターゲットの接続設定を削除します。
iSCSIセッションからのログアウト
iSCSIイニシエータに登録したノード(iSCSIターゲット)からログアウトします。
1 2 3 4 5 6 |
$ sudo iscsiadm -m node -T iqn.2003-01.org.linux-iscsi.ip-10-0-0-69 --logout Logging out of session [sid: 5, target: iqn.2003-01.org.linux-iscsi.ip-10-0-0-69, portal: 10.0.0.69,3260] Logout of [sid: 5, target: iqn.2003-01.org.linux-iscsi.ip-10-0-0-69, portal: 10.0.0.69,3260] successful. $ sudo iscsiadm -m node -T iqn.2003-01.org.linux-iscsi.ip-10-0-0-6 --logout Logging out of session [sid: 6, target: iqn.2003-01.org.linux-iscsi.ip-10-0-0-6, portal: 10.0.0.6,3260] Logout of [sid: 6, target: iqn.2003-01.org.linux-iscsi.ip-10-0-0-6, portal: 10.0.0.6,3260] successful. |
IQNを指定せず、一括でiSCSIターゲットからログアウトすることも可能です。
1 2 3 4 5 |
$ sudo iscsiadm -m node --logout Logging out of session [sid: 5, target: iqn.2003-01.org.linux-iscsi.ip-10-0-0-69, portal: 10.0.0.69,3260] Logging out of session [sid: 6, target: iqn.2003-01.org.linux-iscsi.ip-10-0-0-6, portal: 10.0.0.6,3260] Logout of [sid: 5, target: iqn.2003-01.org.linux-iscsi.ip-10-0-0-69, portal: 10.0.0.69,3260] successful. Logout of [sid: 6, target: iqn.2003-01.org.linux-iscsi.ip-10-0-0-6, portal: 10.0.0.6,3260] successful. |
アクティブなiSCSIセッションがないことを確認します。
1 2 |
$ iscsiadm --mode session iscsiadm: No active sessions. |
iSCSIターゲットの削除
iSCSIイニシエータに登録したノード(iSCSIターゲット)を削除します。(discoveryコマンドで一括登録した場合は、接続サーバを削除します)
1 2 |
$ sudo iscsiadm -m node -o delete -T iqn.2003-01.org.linux-iscsi.ip-10-0-0-69 $ sudo iscsiadm -m node -o delete -T iqn.2003-01.org.linux-iscsi.ip-10-0-0-6 |
接続サーバを削除します。
1 2 3 4 |
$ sudo iscsiadm -m discovery -o delete -p 10.0.0.69 $ sudo iscsiadm -m discovery -o delete -p 10.0.0.6 $ sudo iscsiadm -m node iscsiadm: No records found |
以上、ここまで。