개요
리눅스에서 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
'운영체제 > Unix & Linux' 카테고리의 다른 글
[Linux] Disk , Disk Partion table 초기화 (0) | 2020.04.26 |
---|---|
[Linux] Multipath 구성 (0) | 2020.04.21 |
[Linux] iSCSI 구성 #1 - tgt를 이용한 구성 (0) | 2020.04.20 |
[Linux] NFS 구성 (0) | 2020.03.31 |
[Debian] apt-get 과 dpkg 를 활용한 패키지 관리 (0) | 2020.03.20 |