[Ubuntu] 13. iSCSI Target/initiator

Date:     Updated:

카테고리:

태그:


🔔 iSCSI란?


iscsi는 인터넷 프로토콜(IP) 기반의 스토리지 네트워킹 표준으로, 데이터 스토리지 장치를 연결하는데 사용 즉, IP 네트워크를 통해 SCSI 명령을 전달함으로써, 인터넷을 거쳐 데이터를 전송하고 보관하게 된다.


■ iSCSI 타겟(Target)/이니시에이터(initiator)


  • 타겟(Target) : iscsi 서버로서 스토리지를 제공하는 역할

  • 이니시에이터(initiator) : iscsi 클라이언트로서 스토리지에 접근하는 역할


■ iSCSI 타겟(Target)/이니시에이터(initiator)


  • 타겟과 이니시에이터는 IQN(iSCSI Qualified Name)이라는 고유한 이름으로 식별한다. (예시 : iqn.2022-08.com.test:target)

    포맷 형태 Type.Date.Naming_Auth:String_defined_by_example.com_Naming_authority
    Type iqn으로 고정
    Date YYYY-MM
    Naming_Auth 도메인의 역순 형태
    String_… 설명


■ iSCSI 타겟(Target) 구조


1) backstores

  • 스토리지 오브젝트를 생성하고 관리하는 노드로, 파일이나 디스크와 같은 로컬 스토리지 리소스를 가상화한다.

  • backstores에는 fileio, block, pscsi, ramdisk 등의 하위 노드가 있다.

    하위 노드 설명
    fileio 파일을 디스크 이미지처럼 사용할 수 있게 해주는 스토리지 오브젝트의 종류
    block 물리적인 디스크 블록 장치를 공유할 수 있게 해주는 스토리지 오브젝트의 종류
    pscsi 로컬 SCSI 장치를 공유할 수 있게 해주는 스토리지 오브젝트의 종류, 디스크뿐만 아니라 테이프나 CD-ROM과 같은 다양한 장치를 공유할 수 있다.
    ramdisk 메모리를 디스크처럼 사용할 수 있게 해주는 스토리지 오브젝트의 종류
    그 외 하위 노드 설명
    alua Asymmetric Logical Unit Access의 약자로, 스토리지 오브젝트에 대한 접근 상태와 우선 순위를 관리하는 기능
    default_tg_pt_gp Target Port Group의 약자로, 스토리지 오브젝트에 대한 접근 상태를 나타내는 객체


2) iscsi

  • iscsi 타겟을 생성하고 관리하는 노드로, IQN으로 식별된다.

  • iscsi에는 타겟의 이름을 나타내는 하위 노드가 있으며, 그 안에는 TPG, LUN, ACL 등의 하위 노드가 있다.

    하위 노드 설명
    TPG Target Portal Group의 약자로, 타겟에 접근할 수 있는 네트워크 포털의 그룹으로 TPG의 하위 노드로는 acls, luns, portals이 있다.
    acls Access Control List의 약자로, 이니시에이터의 접근 권한을 제어하는 목록으로 acls의 하위 노드로는 이니시에이터의 IQN이 있으며, 그 안에는 mapped_lun이 있다.
    luns Logical Unit Number의 약자로, 스토리지 오브젝트와 이니시에이터의 연결을 나타내는 숫자, luns의 하위 노드로는 lun0, lun1 등이 있다.
    portals 네트워크 포털을 나타내는 객체, portals의 하위 노드로는 IP 주소와 포트 번호가 있다.
    그 외… 설명
    LUN Logical Unit Number의 약자로, 스토리지 오브젝트와 이니시에이터의 연결을 나타내는 숫자, LUN은 타겟과 이니시에이터에서 동일한 값을 가진다.
    mapped_lun 이니시에이터가 접근할 수 있는 LUN을 나타내는 객체, mapped_lun은 이니시에이터별로 다른 값을 가질 수 있다.


3) loopback

  • loopback 타겟을 생성하고 관리하는 노드로, 로컬 시스템에서 스토리지 오브젝트에 접근할 수 있게 해준다.


■ iSCSI 타겟(Target) 구성 - (Targetcli)

233286083-49312aed-1d86-48ef-ad69-fef90fd077c0

$ apt -y install targetcli-fb


$ mkdir /var/lib/iscsi_disks


# 관리자 콘솔로 들어갑니다.
$ targetcli


/> cd backstores/fileio 


# [disk01]이라는 이름의 1G의 디스크 이미지([/var/lib/iscsi_disks/disk01.img])를 생성
/backstores/fileio> create disk01 /var/lib/iscsi_disks/disk01.img 1G
Created fileio disk01 with size 1073741824
/backstores/fileio> cd /iscsi


# 타겟(Target) 생성
# [ iqn.(year)-(month).(reverse of domain name):(any name you like) ]
/iscsi> create iqn.2022-08.com.test:dlp.target01
Created target iqn.2022-08.com.test:dlp.target01.
Created TPG 1.
Global pref auto_add_default_portal=true
Created default portal listening on all IPs (0.0.0.0), port 3260.
/iscsi> cd iqn.2022-08.com.test:dlp.target01/tpg1/luns


# LUN 설정
/iscsi/iqn.20...t01/tpg1/luns> create /backstores/fileio/disk01
Created LUN 0.
/iscsi/iqn.20...t01/tpg1/luns> cd ../acls


# ACL 설정(연결을 허용하는 이니시에이터(initiator)의 IQN)
/iscsi/iqn.20...t01/tpg1/acls> create iqn.2022-08.com.test:node01.initiator01
Created Node ACL for iqn.2022-08.com.test:node01.initiator01
Created mapped LUN 0.
/iscsi/iqn.20...t01/tpg1/acls> cd iqn.2022-08.com.test:node01.initiator01


# 인증을 위한 사용자 아이디와 비밀번호 설정
/iscsi/iqn.20...1.initiator01> set auth userid=username
Parameter userid is now 'username'.
/iscsi/iqn.20...1.initiator01> set auth password=password
Parameter password is now 'password'.
/iscsi/iqn.20...1.initiator01> exit
Global pref auto_save_on_exit=true
Configuration saved to /etc/rtslib-fb-target/saveconfig.json


$ ss -napt | grep 3260
LISTEN 0      256           0.0.0.0:3260         0.0.0.0:*   


$ systemctl enable rtslib-fb-targetctl


■ iSCSI 이니시에이터(initiator) 구성 - (tgt)

$ apt -y install open-iscsi
$ cat /etc/iscsi/initiatorname.iscsi
InitiatorName=iqn.2022-08.com.test:node01.initiator01


$ vi /etc/iscsi/iscsid.conf

...
...

# line 58 : 주석 해제
node.session.auth.authmethod = CHAP

# line 69,70: SCSI 대상 서버에 설정한 사용자 이름과 비밀번호를 지정
node.session.auth.username = username
node.session.auth.password = password

$ systemctl restart iscsid open-iscsi


$ iscsiadm -m discovery -t sendtargets -p 192.168.219.10


$ iscsiadm -m node -o show


$ iscsiadm -m node --login
Logging in to [iface: default, target: iqn.2022-08.com.test:dlp.target01, portal: 192.168.219.10,3260]
Login to [iface: default, target: iqn.2022-08.com.test:dlp.target01, portal: 192.168.219.10,3260] successful.


$ cat /proc/partitions
major minor  #blocks  name

   7        0     114636 loop0
   7        1      64976 loop1
   7        2      54516 loop2
   7        3      54536 loop3
   7        5      64968 loop5
   8        0   20971520 sda
   8        1       1024 sda1
   8        2    1857536 sda2
   8        3   19110912 sda3
   8       16   20971520 sdb
  11        0    1929660 sr0
 253        0   10485760 dm-0
   8       32    1048576 sdc


$ parted --script /dev/sdc "mklabel gpt"


$ parted --script /dev/sdc "mkpart primary 0% 100%"


$ mkfs.ext4 /dev/sdc1
mke2fs 1.46.5 (30-Dec-2021)
Creating filesystem with 262135 4k blocks and 65536 inodes
Filesystem UUID: 48561690-9b78-41f1-b347-12f89900c40e
Superblock backups stored on blocks:
        32768, 98304, 163840, 229376

Allocating group tables: done
Writing inode tables: done
Creating journal (4096 blocks): done
Writing superblocks and filesystem accounting information: done


$ mount /dev/sdc1 /mnt


$ df -hT
Filesystem                        Type   Size  Used Avail Use% Mounted on
tmpfs                             tmpfs  193M  1.2M  192M   1% /run
/dev/mapper/ubuntu--vg-ubuntu--lv ext4   9.8G  5.5G  3.8G  59% /
tmpfs                             tmpfs  965M     0  965M   0% /dev/shm
tmpfs                             tmpfs  5.0M     0  5.0M   0% /run/lock
/dev/sda2                         ext4   1.8G  253M  1.4G  16% /boot
tmpfs                             tmpfs  193M  4.0K  193M   1% /run/user/0
/dev/sdc1                         ext4   990M   24K  923M   1% /mnt

UBUNTU 카테고리 내 다른 글 보러가기

댓글 남기기