본문 바로가기

운영체제/Unix & Linux

[Linux] iSCSI 구성 #2 - targetcli 명령어를 이용한 구성

반응형

개요

리눅스에서 iscsi target 서버를 구성하는 방법으로 tgt(tgtadm, target.conf) 와 targetcli 명령어를 이용하여 구성하는 방법이 있다. 이번 시간에는 targetcli 명령어를 이용한 iscsi 구성하는 방법에 대해 알아본다.

구성환경

centos 7.6

 

1. iSCSI Target(서버) 구성

 1.1 scsi-target-utils, targetcli RPM 설치

shell> yum install scsi-target-utils targetcli

 1.2 방화벽 오픈

  3260/TCP 포트 오픈

 1.3 block device(file) 생성

shell> targetcli
/iscsi> cd /backstores/block
/backstores/block> create iscsi_disk_sdf /dev/sdf
Created block storage object iscsi_disk_sdf using /dev/sdf.
/backstores/block> create iscsi_disk_sdg /dev/sdg
Created block storage object iscsi_disk_sdg using /dev/sdg.
/backstores/block> ls
o- block .................................................. [Storage Objects: 2]
  o- iscsi_disk_sdf ................. [/dev/sdf (1.0GiB) write-thru deactivated]
  | o- alua ................................................... [ALUA Groups: 1]
  |   o- default_tg_pt_gp ....................... [ALUA state: Active/optimized]
  o- iscsi_disk_sdg ................. [/dev/sdg (1.0GiB) write-thru deactivated]
    o- alua ................................................... [ALUA Groups: 1]
      o- default_tg_pt_gp ....................... [ALUA state: Active/optimized]
/backstores/block>

 1.4 target iqn, portal 생성

shell> targetcli 
/> cd iscsi 
/iscsi> create iqn.2014-08.com.hoya.testsvr:t1 
Created target iqn.2014-08.com.hoya.testsvr:t1. 
Created TPG 1. 
Global pref auto_add_default_portal=true 
Created default portal listening on all IPs (0.0.0.0), port 3260.
/iscsi> ls 
o- iscsi .......................................................... [Targets: 1] 
  o- iqn.2014-08.com.example:t1 ...................................... [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>

 1.5 Lun 맵핑

shell> targetcli
/> cd /iscsi/iqn.2014-08.com.hoya.testsvr:t1/tpg1
/iscsi/iqn.20...stsvr:t1/tpg1> luns/ create /backstores/block/iscsi_disk_sdf
Created LUN 0.
/iscsi/iqn.20...stsvr:t1/tpg1> luns/ create /backstores/block/iscsi_disk_sdg
Created LUN 1.
/iscsi/iqn.20...stsvr:t1/tpg1> ls
o- tpg1 ................................................. [no-gen-acls, no-auth]
  o- acls ............................................................ [ACLs: 0]
  o- luns ............................................................ [LUNs: 2]
  | o- lun0 ............... [block/iscsi_disk_sdf (/dev/sdf) (default_tg_pt_gp)]
  | o- lun1 ............... [block/iscsi_disk_sdg (/dev/sdg) (default_tg_pt_gp)]
  o- portals ...................................................... [Portals: 1]
    o- 0.0.0.0:3260 ....................................................... [OK]
/iscsi/iqn.20...stsvr:t1/tpg1>

 1.6 ACL 생성

shell> targetcli
/> cd /iscsi/iqn.2014-08.com.hoya.testsvr:t1/tpg1 
/iscsi/iqn.20...stsvr:t1/tpg1> acls/ create iqn.1994-05.com.hoya:rac2  => 클라이언트의 /etc/iscsi/initiatorname.iscsi 확인 
Created Node ACL for iqn.1994-05.com.hoya:rac2
Created mapped LUN 1.
Created mapped LUN 0.
/iscsi/iqn.20...stsvr:t1/tpg1> ls
o- tpg1 ................................................. [no-gen-acls, no-auth]
  o- acls ............................................................ [ACLs: 1]
  | o- iqn.1994-05.com.hoya:rac2 .............................. [Mapped LUNs: 2]
  |   o- mapped_lun0 .......................... [lun0 block/iscsi_disk_sdf (rw)]
  |   o- mapped_lun1 .......................... [lun1 block/iscsi_disk_sdg (rw)]
  o- luns ............................................................ [LUNs: 2]
  | o- lun0 ............... [block/iscsi_disk_sdf (/dev/sdf) (default_tg_pt_gp)]
  | o- lun1 ............... [block/iscsi_disk_sdg (/dev/sdg) (default_tg_pt_gp)]
  o- portals ...................................................... [Portals: 1]
    o- 0.0.0.0:3260 ....................................................... [OK]
/iscsi/iqn.20...stsvr:t1/tpg1> 

클라이언트의 iqn은 /etc/iscsi/initiatorname.iscsi에서 확인할수 있다.

- 모든 Node에서 접근을 허용하고자 한다면 attribute의 generate_node_acls의 값을 1로 변경한다. (default값은 0이다) 

/iscsi/iqn.20...stsvr:t1/tpg1> set attribute generate_node_acls=1
Parameter generate_node_acls is now '1'.
/iscsi/iqn.20...stsvr:t1/tpg1> status
Status for /iscsi/iqn.2014-08.com.hoya.testsvr:t1/tpg1: gen-acls, no-auth     => no-gen-acls에서 gen-acls 로 변경됨
/iscsi/iqn.20...stsvr:t1/tpg1>

 1.7 TARGET 구성 저장(옵션)

/iscsi/iqn.20...stsvr:t1/tpg1>  cd / 
/> saveconfig 
Last 10 configs saved in /etc/target/backup/. 
Configuration saved to /etc/target/saveconfig.json 
/>

  - TARGET 구성 내용이 저장되는 경로는 /etc/target/saveconfig.json 이다. target 구성을 리스토어 할 경우 필요하다. auto_save_on_exit=true 인 경우 자동으로 저장된다. saveconfig 명령은 / 경로에서 실행해야만 한다.

 - 리스토어 예시

shell> targetcli restoreconfig saveconfig-20200421-09:48:02.json
Configuration restored from saveconfig-20200421-09:48:02.json
shell>

 1.8 target 서비스 실행

shell> systemctl --now enable target.service

target 서비스는 부팅시 target 구성이 저장된 파일(/etc/target/saveconfig.json)을 자동으로 읽어서 적용한다.

 

2. Initiator 구성(클라이언트)

 2.1 Target Portal 연결 및 Target Login

shell> iscsiadm -m discovery --type sendtargets --portal 192.168.0.167
192.168.0.167:3260,1 iqn.2014-08.com.hoya.testsvr:t1
shell> iscsiadm -m node -l
Logging in to [iface: default, target: iqn.2014-08.com.hoya.testsvr:t1, portal: 192.168.0.167,3260] (multiple)
Login to [iface: default, target: iqn.2014-08.com.hoya.testsvr:t1, portal: 192.168.0.167,3260] successful.
shell>

* portal 연결 정보는 /var/lib/iscsi/node, send_targets 디렉토리 아래에 저장된다.

* -m : mode , -p : portal, -t : --type, -l : login 

 2.2 확인

  - lsscsi , lsblk --scsi 명령어로 확인

shell> lsscsi
[1:0:0:0]    cd/dvd  VBOX     CD-ROM           1.0   /dev/sr0
[2:0:0:0]    disk    ATA      VBOX HARDDISK    1.0   /dev/sda
..... 중략 ......
[13:0:0:0]   disk    ATA      VBOX HARDDISK    1.0   /dev/sdl
[14:0:0:0]   disk    ATA      VBOX HARDDISK    1.0   /dev/sdm
[26:0:0:0]   disk    LIO-ORG  iscsi_disk_sdf   4.0   /dev/sdn
[26:0:0:1]   disk    LIO-ORG  iscsi_disk_sdg   4.0   /dev/sdo
shell>

 2.3 initiator상에서 iSCSI Target 제거

 - iscsiadm -m node --portal <IP> -u

 - iscsiadm -m node --portal <IP> -o delete

예)

 

신규 LUN Scan 방법

* 참조 : library.netapp.com/ecmdocs/ECMP1654943/html/GUID-F88A86D2-F3A9-4440-8C32-539BFEA6BED1.html

 

Troubleshooting

 targetcli 에서 포탈 생성시 아래와 같은 메시지 발생

Default portal not created, TPGs within a target cannot share ip:port.

원인

tgtd 서비스가 실행중이거나 3260 포트가 이미 사용중일때 발생

조치

tgtd 서비스 종료 또는 3260/TCP 포트를 사용중인 서비스 확인후 포트 변경, tgtd 서비스와 한 시스템에서 같이 실행되지 않도록한다. 

shell> systemctl --now disable tgtd

반응형