Record

Linux 파일서버 (iscsI) 본문

CS/서버

Linux 파일서버 (iscsI)

now-record 2025. 12. 16. 16:11
반응형

ISCSI란? 

  • Internet Small Computer System Interface
  • 인터넷 프로토콜(IP) 기반의 스토리지 네트워킹 표준이며 데이터 스토리지 장치의 연결에 사용
  • iSCSI = 네트워크를 통해 “원격 디스크”를 내 PC에 “로컬 디스크처럼” 붙이는 기술
    • SCSI 명령
    • TCP/IP 네트워크(보통 10/25/40GbE) 위로 보내서
    • 원격 스토리지를 내 서버의 /dev/sdX처럼 사용

가볍게 설명하면 iSCSI = 디스크를 빌려오는 것 , NFS/SMB = 폴더를 빌려오는 것

 

구성 요소 (이름 중요)

 Initiator (이니시에이터)

  • 디스크를 사용하는 쪽
  • 일반 서버, VM, 클라이언트

Target (타겟)

  • 디스크를 제공하는 쪽
  • NAS, 스토리지 서버

 LUN

  • Target이 제공하는 논리 디스크
  • Initiator 입장에서는 새 디스크 하나
[Initiator 서버]
  fdisk /dev/sdb   ← 이게 사실은 원격 디스크
        ↑
    iSCSI 세션
        ↑
[TCP/IP 네트워크]
        ↑
[Target 서버의 실제 디스크]

 

알고있어야할 개념 

  • iSCSI Target : iSCSI 서버 (스토리지 제공) (targetcli 설치 필요)
  • iSCSI Initiator : iSCSI 클라이언트 (iscsi-initiator-utils 설치 필요)
  • IQN (iSCSI Qualified Name) : iSCSI Target/Initiator의 고유 이름 포맷 중 하나
    • 포맷 형태 : Type.Date.Naming_Auth:String_defined_by_example.com_Naming_authority
      • Type : iqn 으로 고정
      • Date : YYYY-MM
      • Naming_Auth : 도메인의 역순 형태
      • String_defined_by_example.com_Naming_authorith : 설명 (옵션)
    • 예시 : iqn.2025-12.ke.jack:target

 

 

  • backstores - Target Server
    • block : Partition을 나눈 Disk (LVM도 가능)
    • fileio : 파일 시스템 중 일부 디렉터리(공간)
    • pscsi : 물리 하드 디스크
    • ramdisk : 램의 일부분
# Target
# disk partition
# 할당할 수 있는 디스크 영역을 500M 만듦
fdisk /dev/sdb
n > p > 1 > default > +500M > w

# backstore에 block 생성
[root@target ~]# targetcli

/> /backstores/block create block1 /dev/sdb1

# fileio 생성
/> /backstores/fileio create target_01 /tmp/target_01 50M

/> exit
ls -l /tmp/target_01

 

현재 Target(서버)에서는 500MB짜리 진짜 디스크 1개 (block),  50MB짜리 가짜 디스크 1개 (fileio)를 만듦 

 

iscsi - Target Server

  • iSCSI 장비의 식별자(고유)
  • iqn.YYYY-MM.(Reverse-Domain):identifier
    • type.date.auth_name.identifier
    • ex.) iqn.2025-12.ke.xxxx.target:target

tpg - Target Portal Group

  • ACLS (Access Control List) : initiator 목록
  • LUN (Logical Unit Number) : target이 제공하는 논리적 iscsi의 번호
  • Portal : iSCSI Target 주소
  •  
targetcli
# tpg 생성
/> /iscsi create iqn.2025-12.ke.jack.target:target

# LUN 생성
/> /iscsi/iqn.2025-12.ke.jack.target:target/tpg1/luns create /backstores/block/block1
/> /iscsi/iqn.2025-12.ke.jack.target:target/tpg1/luns create /backstores/fileio/target_01

# acls 생성 (client 지정)
/> /iscsi/iqn.2025-12.ke.jack.target:target/tpg1/acls create iqn.2025-12.ke.jack.target:init

 

 

SCSI Target 서버에서 어떤 클라이언트(initiator) 가 어떤 디스크(LUN) 를 쓸 수 있는지 등록하는 단계

Target (iqn...:target)
 └─ TPG (tpg1)
     ├─ LUNs  ──▶ backstore (block1, fileio...)
     ├─ ACLs  ──▶ initiator IQN
     └─ Portal (IP:3260)

TPG안에서 LUNS랑 ACL을 선언해주고 있다. 

 

 

 

iscsi - Initiator Server

# lsscsi로 현재 disk 확인
lsscsi

# iscsi deamon 실행
systemctl start iscsid

# target 서버 탐색
iscsiadm -m discovery -t st -p 10.x.0.210

# target 서버 연결
# -l 
iscsiadm -m node -T iqn.2025-12.ke.xxxx.target:target -p 10.x.0.210 -l

# lsscsi로 받아온 disk 확인
lsscsi

# 연결 해제
iscsiadm -m node -T iqn.2025-12.ke.xxxx.target:target -p 10.x.0.210 -u

# 다시 연결 - Discover

 

결과